package sagan.tools.support;
import org.junit.Before;
import org.junit.Test;
import sagan.tools.*;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.equalTo;
public class ToolXmlConverter_SingleLegacyDownloadTests {
private List<ToolSuiteDownloads> toolSuites;
private ToolXmlConverter toolXmlConverter;
@Before
public void setUp() throws Exception {
ToolSuiteXml toolSuiteXml = new ToolSuiteXml();
List<Release> releases = new ArrayList<>();
Release release = new Release();
List<Download> downloads = new ArrayList<>();
Download download = new Download();
download.setDescription("Mac OS X (Cocoa)");
download.setOs("mac");
download.setFile("release/STS/3.5.1/dist/e4.3/spring-tool-suite-3.5.1.RELEASE-e4.3.2-macosx-cocoa-installer.dmg");
download.setBucket("http://download.springsource.com/");
download.setEclipseVersion("4.3.2");
download.setSize("361MB");
download.setVersion("3.5.1.RELEASE");
downloads.add(download);
release.setDownloads(downloads);
release.setName("Spring Tool Suite 3.5.1.RELEASE - based on Eclipse Kepler 4.3.2");
releases.add(release);
release = new Release();
downloads = new ArrayList<>();
download = new Download();
download.setDescription("Mac OS X (Cocoa)");
download.setOs("mac");
download.setFile("release/STS/3.5.1/dist/e3.8/spring-tool-suite-3.5.1.RELEASE-e3.8.2-macosx-cocoa-installer.dmg");
download.setBucket("http://download.springsource.com/");
download.setEclipseVersion("3.8.2");
download.setSize("349MB");
download.setVersion("3.5.1.RELEASE");
downloads.add(download);
release.setDownloads(downloads);
release.setName("Spring Tool Suite 3.5.1.RELEASE - based on Eclipse Juno 3.8.2");
releases.add(release);
release = new Release();
downloads = new ArrayList<>();
download = new Download();
download.setDescription("Mac OS X (Cocoa)");
download.setOs("mac");
download.setFile("release/STS/3.5.0/dist/e4.3/spring-tool-suite-3.5.0.RELEASE-e4.3.2-macosx-cocoa-installer.dmg");
download.setBucket("http://download.springsource.com/");
download.setEclipseVersion("4.3.2");
download.setSize("361MB");
download.setVersion("3.5.0.RELEASE");
downloads.add(download);
release.setDownloads(downloads);
release.setName("Spring Tool Suite 3.5.0.RELEASE - based on Eclipse Kepler 4.3.2");
releases.add(release);
toolSuiteXml.setOthers(releases);
toolXmlConverter = new ToolXmlConverter();
toolSuites = toolXmlConverter.convertLegacy(toolSuiteXml, "Spring Tool Suite", "STS");
}
@Test
public void addsAReleaseName() throws Exception {
assertThat(toolSuites.stream().map(ToolSuiteDownloads::getReleaseName).collect(Collectors.toList()),
contains("3.5.1.RELEASE", "3.5.0.RELEASE"));
}
@Test
public void addsAPlatform() throws Exception {
ToolSuiteDownloads toolSuite = toolSuites.get(0);
assertThat(toolSuite.getPlatformList().size(), equalTo(3));
assertThat(toolSuite.getPlatformList().get(1).getName(), equalTo("Mac"));
}
@Test
public void addsAnEclipseVersionToThePlatform() throws Exception {
ToolSuiteDownloads toolSuite = toolSuites.get(0);
ToolSuitePlatform platform = toolSuite.getPlatformList().get(1);
assertThat(platform.getEclipseVersions().size(), equalTo(2));
assertThat(platform.getEclipseVersions().get(0).getName(), equalTo("4.3.2"));
assertThat(platform.getEclipseVersions().get(1).getName(), equalTo("3.8.2"));
}
@Test
public void addsAnArchitectureToTheEclipseVersion() throws Exception {
ToolSuiteDownloads toolSuite = toolSuites.get(0);
ToolSuitePlatform platform = toolSuite.getPlatformList().get(1);
EclipseVersion eclipseVersion = platform.getEclipseVersions().get(0);
assertThat(eclipseVersion.getArchitectures().size(), equalTo(1));
assertThat(eclipseVersion.getArchitectures().get(0).getName(), equalTo("Mac OS X (Cocoa)"));
}
@Test
public void addsADownloadLinkTheArchitecture() throws Exception {
ToolSuiteDownloads toolSuite = toolSuites.get(0);
ToolSuitePlatform platform = toolSuite.getPlatformList().get(1);
EclipseVersion eclipseVersion = platform.getEclipseVersions().get(0);
Architecture architecture = eclipseVersion.getArchitectures().get(0);
assertThat(architecture.getDownloadLinks().size(), equalTo(1));
assertThat(
architecture.getDownloadLinks().get(0).getUrl(),
equalTo("http://download.springsource.com/release/STS/3.5.1/dist/e4.3/spring-tool-suite-3.5.1.RELEASE-e4.3.2-macosx-cocoa-installer.dmg"));
assertThat(architecture.getDownloadLinks().get(0).getOs(), equalTo("mac"));
assertThat(architecture.getDownloadLinks().get(0).getArchitecture(), equalTo("32"));
}
}