package sagan.tools.support; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import org.junit.Before; import org.junit.Test; import sagan.support.Fixtures; import sagan.tools.EclipseDownloads; import sagan.tools.EclipsePackage; import sagan.tools.EclipsePlatform; import sagan.tools.EclipseRelease; import java.util.List; import java.util.Map; import static org.hamcrest.Matchers.*; import static org.hamcrest.collection.IsMapContaining.hasKey; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; public class EclipseDownloadsXmlConverterTests { private EclipseDownloads eclipseDownloads; private Map<String, EclipsePlatform> platforms; @Before public void setUp() throws Exception { String responseXml = Fixtures.load("/fixtures/tools/eclipse.xml"); XmlMapper serializer = new XmlMapper(); EclipseXml eclipseXml = serializer.readValue(responseXml, EclipseXml.class); eclipseDownloads = new EclipseDownloadsXmlConverter().convert(eclipseXml); platforms = eclipseDownloads.getPlatforms(); } @Test public void hasTheThreePlatforms() throws Exception { assertThat(platforms.size(), is(3)); assertThat(platforms, hasKey("windows")); assertThat(platforms, hasKey("mac")); assertThat(platforms, hasKey("linux")); } @Test public void hasTheCorrectPlatformName() throws Exception { assertThat(platforms.get("windows").getName(), is("Windows")); } @Test public void excludesGroovyAndStsPackages() throws Exception { List<EclipseRelease> packages = platforms.get("windows").getReleases(); for (EclipseRelease eclipsePackage : packages) { assertThat(eclipsePackage.getName(), not(containsString("Spring Tool Suite"))); assertThat(eclipsePackage.getName(), not(containsString("Groovy"))); } } @Test public void hasProducts() throws Exception { List<EclipseRelease> products = platforms.get("windows").getReleases(); assertThat(products.size(), is(5)); assertThat(products.get(0).getName(), equalTo("Eclipse Kepler")); assertThat(products.get(0).getEclipseVersion(), equalTo("Eclipse 4.3")); assertThat(products.get(1).getName(), equalTo("Eclipse Juno")); assertThat(products.get(1).getEclipseVersion(), equalTo("Eclipse 4.2.2")); assertThat(products.get(2).getName(), equalTo("Eclipse Indigo")); assertThat(products.get(2).getEclipseVersion(), equalTo("Eclipse 3.7.2")); assertThat(products.get(3).getName(), equalTo("Eclipse Helios")); assertThat(products.get(3).getEclipseVersion(), equalTo("Eclipse 3.6.2")); assertThat(products.get(4).getName(), equalTo("Eclipse Galileo")); assertThat(products.get(4).getEclipseVersion(), equalTo("Eclipse 3.5.2")); } @Test public void productHasPackages() throws Exception { List<EclipsePackage> packages = platforms.get("windows").getReleases().get(0).getPackages(); assertThat(packages.size(), is(4)); assertThat(packages.get(0).getName(), equalTo("Eclipse Standard 4.3")); assertThat(packages.get(1).getName(), equalTo("Eclipse IDE for Java EE Developers")); assertThat(packages.get(2).getName(), equalTo("Eclipse IDE for Java Developers")); assertThat(packages.get(3).getName(), equalTo("Eclipse for RCP and RAP Developers")); } }