package org.axway.grapes.server.core; import org.axway.grapes.server.core.version.IncomparableException; import org.axway.grapes.server.core.version.NotHandledVersionException; import org.axway.grapes.server.db.RepositoryHandler; import org.axway.grapes.server.db.datamodel.DbArtifact; import org.junit.Test; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import static com.mongodb.util.MyAsserts.*; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.anyObject; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class VersionsHandlerTest { private final RepositoryHandler repositoryHandler; private final VersionsHandler versionsHandler; public VersionsHandlerTest(){ repositoryHandler = mock(RepositoryHandler.class); versionsHandler = new VersionsHandler(repositoryHandler); } @Test public void getTheLastVersionOfRegularVersions() throws IncomparableException, NotHandledVersionException { final List<String> versions = new ArrayList<String>(); // Release older than Snapshot versions.add("0.1.0-1"); versions.add("0.1.0-SNAPSHOT"); assertEquals("0.1.0-SNAPSHOT", versionsHandler.getLastVersion(versions)); // Digits based test versions.clear(); versions.add("2.1.0-1"); versions.add("0.1.0-SNAPSHOT"); versions.add("1.1.0-SNAPSHOT"); versions.add("2.0.0-SNAPSHOT"); assertEquals("2.1.0-1", versionsHandler.getLastVersion(versions)); } @Test public void getTheLastReleaseOfRegularVersions() throws IncomparableException, NotHandledVersionException { final List<String> versions = new ArrayList<String>(); versions.add("0.1.0-1"); versions.add("0.1.0-SNAPSHOT"); versions.add("2.1.0-1"); versions.add("0.1.0-SNAPSHOT"); versions.add("1.1.0-SNAPSHOT"); versions.add("2.0.0-SNAPSHOT"); versions.add("4.0.0-SNAPSHOT"); assertEquals("2.1.0-1", versionsHandler.getLastRelease(versions)); } @Test public void getTheLastReleaseIfNoRelease() throws IncomparableException, NotHandledVersionException { final List<String> versions = new ArrayList<String>(); versions.add("0.1.0-SNAPSHOT"); versions.add("0.1.0-SNAPSHOT"); versions.add("1.1.0-SNAPSHOT"); versions.add("2.0.0-SNAPSHOT"); versions.add("4.0.0-SNAPSHOT"); assertEquals(null, versionsHandler.getLastRelease(versions)); } @Test public void isUpToDateOnRegularVersions() throws UnknownHostException { final DbArtifact artifact = new DbArtifact(); artifact.setGroupId("com.axway.tests"); artifact.setArtifactId("artifact"); final List<String> versions = new ArrayList<String>(); versions.add("0.1.0-SNAPSHOT"); versions.add("0.1.0-SNAPSHOT"); versions.add("1.1.0-SNAPSHOT"); versions.add("2.0.0-SNAPSHOT"); versions.add("2.1.0-1"); versions.add("4.0.0-SNAPSHOT"); when(repositoryHandler.getArtifactVersions((DbArtifact) anyObject())).thenReturn(versions); artifact.setVersion("3.0.0-SNAPSHOT"); assertFalse(versionsHandler.isUpToDate(artifact)); artifact.setVersion("2.1.0-1"); assertTrue(versionsHandler.isUpToDate(artifact)); artifact.setVersion("4.0.0-SNAPSHOT"); assertTrue(versionsHandler.isUpToDate(artifact)); } @Test public void isUpToDateOnNoneRegularVersions() throws UnknownHostException { final DbArtifact artifact = new DbArtifact(); artifact.setGroupId("com.axway.tests"); artifact.setArtifactId("artifact"); final List<String> versions = new ArrayList<String>(); versions.add("bbbbbb"); versions.add("cccccc"); versions.add("dddddd"); versions.add("eeeeee"); when(repositoryHandler.getArtifactVersions((DbArtifact) anyObject())).thenReturn(versions); artifact.setVersion("aaaaaa"); assertFalse(versionsHandler.isUpToDate(artifact)); artifact.setVersion("zzzzzz"); assertTrue(versionsHandler.isUpToDate(artifact)); artifact.setVersion("eeeeee"); assertTrue(versionsHandler.isUpToDate(artifact)); } @Test public void lastVersionDoesNotExist() throws UnknownHostException, IncomparableException, NotHandledVersionException { String lastVersion = versionsHandler.getLastVersion(new ArrayList<String>()); assertNull(lastVersion); } }