package sagan.projects.support; import sagan.projects.Project; import sagan.projects.ProjectRelease; import sagan.projects.ProjectRelease.ReleaseStatus; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.ui.ExtendedModelMap; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class ProjectAdminControllerTests { @Mock private ProjectMetadataService projectMetadataService; private List<ProjectRelease> releases = new ArrayList<>(); Project project = new Project("spring-framework", "spring", "http://example.com", "http://examples.com", releases, false, "project"); private ExtendedModelMap model = new ExtendedModelMap(); private ProjectAdminController controller; @Before public void setUp() throws Exception { controller = new ProjectAdminController(projectMetadataService); } @Test public void listProjects_providesProjectMetadataServiceInModel() { releases.add(new ProjectRelease("1.2.3", ReleaseStatus.GENERAL_AVAILABILITY, false, "http://example.com/1.2.3", "http://example.com/1.2.3", "org.springframework", "spring-core")); when(projectMetadataService.getProject("spring-framework")).thenReturn(project); List<Project> list = Arrays.asList(project); when(projectMetadataService.getProjects()).thenReturn(list); controller.list(model); assertThat(model.get("projects"), equalTo(list)); assertThat(project.getProjectReleases().iterator().next().getApiDocUrl(), equalTo( "http://example.com/1.2.3")); } @Test public void editProject_presentsVersionPatternsInUris() { releases.add(new ProjectRelease("1.2.3", ReleaseStatus.GENERAL_AVAILABILITY, false, "http://example.com/1.2.3", "http://example.com/1.2.3", "org.springframework", "spring-core")); when(projectMetadataService.getProject("spring-framework")).thenReturn(project); controller.edit("spring-framework", model); assertThat(model.get("project"), equalTo(project)); assertThat(((Project) model.get("project")).getProjectReleases().iterator().next().getApiDocUrl(), equalTo( "http://example.com/{version}")); } }