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 static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class ProjectMetadataControllerTests { /** * */ private static final String PROJECT_ID = "spring-framework"; @Mock private ProjectMetadataService projectMetadataService; private List<ProjectRelease> releases = new ArrayList<>(); Project project = new Project(PROJECT_ID, "spring", "http://example.com", "http://examples.com", releases, false, "project"); private ProjectMetadataController controller; @Before public void setUp() throws Exception { controller = new ProjectMetadataController(projectMetadataService); } @Test public void getProject_doesNotContainVersionPlaceholders() throws Exception { ProjectRelease release = 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"); releases.add(release); when(projectMetadataService.getProject(PROJECT_ID)).thenReturn(project); Project result = controller.projectMetadata(PROJECT_ID); assertThat(result.getProjectRelease("1.2.3"), equalTo(release)); assertThat(project.getProjectReleases().iterator().next().getApiDocUrl(), equalTo( "http://example.com/1.2.3")); } @Test public void editProjectReleases_replacesVersionPatterns() throws Exception { ProjectRelease release = 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"); ProjectRelease update = new ProjectRelease("1.2.4", ReleaseStatus.GENERAL_AVAILABILITY, false, "http://example.com/{version}", "http://example.com/{version}", "org.springframework", "spring-core"); releases.add(release); when(projectMetadataService.getProject(PROJECT_ID)).thenReturn(project); controller.updateProjectMetadata(PROJECT_ID, Arrays.asList(update)); assertThat(project.getProjectReleases().iterator().next().getApiDocUrl(), equalTo( "http://example.com/1.2.4")); } @Test public void addProjectRelease_replacesVersionPatterns() throws Exception { ProjectRelease update = new ProjectRelease("1.2.4", ReleaseStatus.GENERAL_AVAILABILITY, false, "http://example.com/{version}", "http://example.com/{version}", "org.springframework", "spring-core"); when(projectMetadataService.getProject(PROJECT_ID)).thenReturn(project); controller.updateReleaseMetadata(PROJECT_ID, update); assertThat(project.getProjectReleases().iterator().next().getApiDocUrl(), equalTo( "http://example.com/1.2.4")); } }