package hudson.plugins.tfs.model; import java.io.Reader; import java.io.StringReader; import hudson.plugins.tfs.commands.ListWorkspacesCommand; import hudson.plugins.tfs.util.MaskedArgumentListBuilder; import static org.junit.Assert.*; import static org.mockito.Matchers.*; import static org.mockito.Mockito.*; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; public class WorkspacesTest { @Mock private Server server; @Before public void setup() { MockitoAnnotations.initMocks(this); } @Test public void assertListFromServerIsParsedProperly() throws Exception { when(server.execute(isA(MaskedArgumentListBuilder.class))).thenReturn(new StringReader( "--------- -------------- -------- ----------------------------------------------------------------------------------------------------------\n" + "\n" + "name1 SND\\redsolo_cp COMPUTER\n")); Workspaces workspaces = new Workspaces(server); Workspace workspace = workspaces.getWorkspace("name1"); assertNotNull("Workspace was null", workspace); } @Test public void assertListFromServerIsRetrievedOnce() throws Exception { when(server.execute(isA(MaskedArgumentListBuilder.class))).thenReturn(new StringReader( "--------- -------------- -------- ----------------------------------------------------------------------------------------------------------\n" + "\n" + "name1 SND\\redsolo_cp COMPUTER\n")); Workspaces workspaces = new Workspaces(server); Workspace workspace = workspaces.getWorkspace("name1"); assertNotNull("Workspace was null", workspace); workspace = workspaces.getWorkspace("name1"); assertNotNull("Workspace was null", workspace); verify(server, times(1)).execute(isA(MaskedArgumentListBuilder.class)); } @Test public void assertExistsWorkspace() throws Exception { when(server.execute(isA(MaskedArgumentListBuilder.class))).thenReturn(new StringReader( "--------- -------------- -------- ----------------------------------------------------------------------------------------------------------\n" + "\n" + "name1 SND\\redsolo_cp COMPUTER\n")); Workspaces workspaces = new Workspaces(server); assertTrue("The workspace was reported as non existant", workspaces.exists(new Workspace(server, "name1"))); } @Test public void assertWorkspaceExistsWithOnlyName() throws Exception { when(server.execute(isA(MaskedArgumentListBuilder.class))).thenReturn(new StringReader( "--------- -------------- -------- ----------------------------------------------------------------------------------------------------------\n" + "\n" + "name1 SND\\redsolo_cp COMPUTER\n")); Workspaces workspaces = new Workspaces(server); assertTrue("The workspace was reported as non existant", workspaces.exists("name1")); } @Test public void assertNewWorkspaceIsAddedToMap() throws Exception { when(server.execute(isA(MaskedArgumentListBuilder.class))).thenReturn(new StringReader("")); Workspaces workspaces = new Workspaces(server); Workspace workspace = workspaces.newWorkspace("name1"); assertNotNull("The new workspace was null", workspace); assertTrue("The workspace was reported as non existant", workspaces.exists(workspace)); } @Test public void assertGettingNewWorkspaceIsNotRetrievingServerList() throws Exception { when(server.execute(isA(MaskedArgumentListBuilder.class))).thenReturn(new StringReader("")); Workspaces workspaces = new Workspaces(server); workspaces.newWorkspace("name1"); assertNotNull("The get new workspace returned null", workspaces.getWorkspace("name1")); verify(server, times(1)).execute(isA(MaskedArgumentListBuilder.class)); } @Test public void assertNewWorkspaceExistsIsNotRetrievingServerList() throws Exception { when(server.execute(isA(MaskedArgumentListBuilder.class))).thenReturn(new StringReader("")); Workspaces workspaces = new Workspaces(server); Workspace workspace = workspaces.newWorkspace("name1"); assertTrue("The get new workspace did not exists", workspaces.exists(workspace)); verify(server, times(1)).execute(isA(MaskedArgumentListBuilder.class)); } @Test public void assertWorkspaceIsDeletedFromMap() throws Exception { when(server.execute(isA(MaskedArgumentListBuilder.class))).thenReturn(new StringReader("")); Workspaces workspaces = new Workspaces(server); // Populate the map in test object assertFalse("The workspace was reported as existant", workspaces.exists(new Workspace(server, "name"))); Workspace workspace = workspaces.newWorkspace("name"); assertTrue("The workspace was reported as non existant", workspaces.exists(new Workspace(server, "name"))); workspaces.deleteWorkspace(workspace); assertFalse("The workspace was reported as existant", workspaces.exists(workspace)); } @Test public void assertGetUnknownWorkspaceReturnsNull() throws Exception { when(server.execute(isA(MaskedArgumentListBuilder.class))).thenReturn(new StringReader("")); Workspaces workspaces = new Workspaces(server); assertNull("The unknown workspace was not null", workspaces.getWorkspace("name1")); } @Test public void assertUnknownWorkspaceDoesNotExists() throws Exception { when(server.execute(isA(MaskedArgumentListBuilder.class))).thenReturn(new StringReader("")); Workspaces workspaces = new Workspaces(server); assertFalse("The unknown workspace was reported as existing", workspaces.exists(new Workspace(server, "name1"))); } @Test public void assertWorkspaceFactory() { ListWorkspacesCommand.WorkspaceFactory factory = new Workspaces(server); Workspace workspace = factory.createWorkspace("name", "computer", "owner", "comment"); assertEquals("Workspace name was incorrect", "name", workspace.getName()); assertEquals("Workspace comment was incorrect", "comment", workspace.getComment()); } @Test public void assertListWorkspacesClosesReader() throws Exception { Reader spy = spy(new StringReader("")); when(server.execute(isA(MaskedArgumentListBuilder.class))).thenReturn(spy); new Workspaces(server).exists(new Workspace(server, "name1")); verify(spy).close(); } @Test public void assertNewWorkspaceClosesReader() throws Exception { Reader spy = spy(new StringReader("")); when(server.execute(isA(MaskedArgumentListBuilder.class))).thenReturn(spy); new Workspaces(server).newWorkspace("name1"); verify(spy).close(); } @Test public void assertGetWorkspacesClosesReader() throws Exception { Reader spy = spy(new StringReader("")); when(server.execute(isA(MaskedArgumentListBuilder.class))).thenReturn(spy); new Workspaces(server).getWorkspace("name1"); verify(spy).close(); } @Test public void assertDeleteWorkspaceClosesReader() throws Exception { Reader spy = spy(new StringReader("")); when(server.execute(isA(MaskedArgumentListBuilder.class))).thenReturn(spy); new Workspaces(server).deleteWorkspace(new Workspace(server, "name")); verify(spy).close(); } }