Skip to main content
summaryrefslogtreecommitdiffstats
blob: b31b73c5e9353e06c8f07f115f6a2664f71625b8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/*******************************************************************************
 * Copyright (c) 2013 Boeing.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Boeing - initial API and implementation
 *******************************************************************************/
package org.eclipse.osee.ats.core.internal.state;

import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.when;
import java.util.Arrays;
import java.util.List;
import org.eclipse.osee.ats.api.user.IAtsUser;
import org.eclipse.osee.ats.api.user.IAtsUserService;
import org.eclipse.osee.ats.api.workflow.state.IAtsStateManager;
import org.eclipse.osee.ats.core.internal.state.AtsWorkStateFactory;
import org.eclipse.osee.ats.core.model.impl.WorkStateImpl;
import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

/**
 * Test unit for {@link AtsWorkStateFactory}
 * 
 * @author Donald G. Dunne
 */
public class AtsWorkStateFactoryTest {

   // @formatter:off
   @Mock IAtsStateManager stateMgr;
   @Mock IAtsUser Joe, Kay;
   @Mock IAtsUserService userService;
   // @formatter:on

   @Before
   public void setup() throws OseeCoreException {
      MockitoAnnotations.initMocks(this);
   }

   @Test
   public void testToXml() {
      AtsWorkStateFactory atsWorkStateFactory = new AtsWorkStateFactory(userService);
      String xml = atsWorkStateFactory.toStoreStr(stateMgr, "Implement");
      Assert.assertEquals("Implement;;;", xml);

      when(Joe.getUserId()).thenReturn("asdf");
      when(Kay.getUserId()).thenReturn("qwer");
      List<IAtsUser> asList = Arrays.asList(Joe, Kay);
      when(stateMgr.getAssignees("Implement")).thenReturn(asList);

      xml = atsWorkStateFactory.toStoreStr(stateMgr, "Implement");
      Assert.assertEquals("Implement;<asdf><qwer>;;", xml);

      when(stateMgr.getHoursSpent("Implement")).thenReturn(1.3);
      when(stateMgr.getHoursSpentStr("Implement")).thenReturn("1.3");
      xml = atsWorkStateFactory.toStoreStr(stateMgr, "Implement");
      Assert.assertEquals("Implement;<asdf><qwer>;1.3;", xml);

      when(stateMgr.getPercentComplete("Implement")).thenReturn(23);
      xml = atsWorkStateFactory.toStoreStr(stateMgr, "Implement");
      Assert.assertEquals("Implement;<asdf><qwer>;1.3;23", xml);
      when(stateMgr.getPercentComplete("Implement")).thenReturn(0);
      xml = atsWorkStateFactory.toStoreStr(stateMgr, "Implement");
      Assert.assertEquals("Implement;<asdf><qwer>;1.3;", xml);
   }

   @Test
   public void testGetFromXml() {
      AtsWorkStateFactory atsWorkStateFactory = new AtsWorkStateFactory(userService);

      WorkStateImpl state = atsWorkStateFactory.fromStoreStr("");
      Assert.assertEquals("Unknown", state.getName());
      Assert.assertEquals(0, state.getHoursSpent(), 0.01);
      Assert.assertEquals(0, state.getAssignees().size());
      Assert.assertEquals(0, state.getPercentComplete());

      when(userService.getUserById(eq("asdf"))).thenReturn(Joe);
      when(userService.getUserById(eq("qwer"))).thenReturn(Kay);
      state = atsWorkStateFactory.fromStoreStr("Implement;<asdf><qwer>;1.3;20");
      Assert.assertEquals("Implement", state.getName());
      Assert.assertEquals(1.3, state.getHoursSpent(), 0.01);

      Assert.assertEquals(2, state.getAssignees().size());
      Assert.assertEquals(20, state.getPercentComplete());

      state = atsWorkStateFactory.fromStoreStr("Implement;;;");
      Assert.assertEquals("Implement", state.getName());
      Assert.assertEquals(0, state.getHoursSpent(), 0.01);
      Assert.assertEquals(0, state.getAssignees().size());
      Assert.assertEquals(0, state.getPercentComplete());
   }

   @Test(expected = OseeArgumentException.class)
   public void testGetFromXml_Exception() {
      AtsWorkStateFactory atsWorkStateFactory = new AtsWorkStateFactory(userService);
      atsWorkStateFactory.fromStoreStr("asdfa;");
   }

}

Back to the top