/* * SoapUI, Copyright (C) 2004-2016 SmartBear Software * * Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent * versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * * http://ec.europa.eu/idabc/eupl * * Unless required by applicable law or agreed to in writing, software distributed under the Licence is * distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the Licence for the specific language governing permissions and limitations * under the Licence. */ package com.eviware.soapui.support; import com.eviware.soapui.model.project.Project; import com.eviware.soapui.model.workspace.Workspace; import org.apache.xmlbeans.XmlException; import org.hamcrest.core.Is; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; import java.io.IOException; import java.util.ArrayList; import java.util.List; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** * @author Prakash */ public class ModelItemNamerTest { private static final String DEFAULT_PROJECT_NAME = ""; private Workspace workspace; @Before public void setUp() throws IOException, XmlException { workspace = mock(Workspace.class); } @Test public void createsFirstRestProjectWithNameRESTProject1() throws Exception { mockWorkspaceProjects(); String expectedFirstProjectName = DEFAULT_PROJECT_NAME + " 1"; assertThat(ModelItemNamer.createName(DEFAULT_PROJECT_NAME, workspace.getProjectList()), Is.is(expectedFirstProjectName)); } @Test public void createsProjectWithNameRESTProject2IfProjectWithNameRESTProject1AlreadyExists() throws Exception { mockWorkspaceProjects(DEFAULT_PROJECT_NAME + " 1"); String expectedFirstProjectName = DEFAULT_PROJECT_NAME + " 2"; assertThat(ModelItemNamer.createName(DEFAULT_PROJECT_NAME, workspace.getProjectList()), Is.is(expectedFirstProjectName)); } @Test public void createsProjectWithNameRESTProject3IfProjectsWithNameRESTProject1AndRESTProject2AlreadyExist() throws Exception { mockWorkspaceProjects(DEFAULT_PROJECT_NAME + " 1", DEFAULT_PROJECT_NAME + " 2"); String expectedFirstProjectName = DEFAULT_PROJECT_NAME + " 3"; assertThat(ModelItemNamer.createName(DEFAULT_PROJECT_NAME, workspace.getProjectList()), Is.is(expectedFirstProjectName)); } @Test public void createsProjectWithNameRESTProject4IfProjectsExistWithNameRESTProject1AndRESTProject3() throws Exception { mockWorkspaceProjects(DEFAULT_PROJECT_NAME + "1", DEFAULT_PROJECT_NAME + "3"); //REST Project1, REST Project3 String expectedFirstProjectName = DEFAULT_PROJECT_NAME + " 4"; assertThat(ModelItemNamer.createName(DEFAULT_PROJECT_NAME, workspace.getProjectList()), Is.is(expectedFirstProjectName)); } @Test public void doesNotThrowAnExceptionIfProjectExistsWithNameRESTProject3x() throws Exception { mockWorkspaceProjects(DEFAULT_PROJECT_NAME + " 3x"); String expectedFirstProjectName = DEFAULT_PROJECT_NAME + " 1"; assertThat(ModelItemNamer.createName(DEFAULT_PROJECT_NAME, workspace.getProjectList()), Is.is(expectedFirstProjectName)); } private void mockWorkspaceProjects(String... projectNames) { List projectList = new ArrayList<Project>(); for (String projectName : projectNames) { Project project = Mockito.mock(Project.class); when(project.getName()).thenReturn(projectName); projectList.add(project); } when(workspace.getProjectList()).thenReturn(projectList); } }