package org.eclipse.recommenders.internal.coordinates.rcp;
import static org.junit.Assert.*;
import java.io.File;
import java.io.IOException;
import org.eclipse.recommenders.coordinates.DependencyInfo;
import org.eclipse.recommenders.coordinates.DependencyType;
import org.eclipse.recommenders.coordinates.ProjectCoordinate;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import com.google.common.base.Optional;
public class ManualProjectCoordinateAdvisorTest {
private static final ProjectCoordinate EXPECTED_PROJECT_COORDINATE = new ProjectCoordinate("example",
"example.project", "1.0.0");
private static final ProjectCoordinate ANOTHER_EXPECTED_PROJECT_COORDINATE = new ProjectCoordinate(
"another.example", "another.example.project", "1.2.3");
@Rule
public TemporaryFolder folder = new TemporaryFolder();
private File persistenceFile;
private DependencyInfo exampleDependencyInfo;
private DependencyInfo anotherExampleDependencyInfo;
@Before
public void init() throws IOException {
persistenceFile = folder.newFile("manual-mappings.json");
exampleDependencyInfo = new DependencyInfo(folder.newFile("example_1.jar"), DependencyType.JAR);
anotherExampleDependencyInfo = new DependencyInfo(folder.newFile("example_s.jar"), DependencyType.JRE);
}
@Test
public void returnAbsentWhenNoMappingExist() throws IOException {
ManualProjectCoordinateAdvisor sut = new ManualProjectCoordinateAdvisor(persistenceFile);
Optional<ProjectCoordinate> projectCoordinate = sut.suggest(exampleDependencyInfo);
assertFalse(projectCoordinate.isPresent());
sut.close();
}
@Test
public void returnManualMappingCorrect() throws IOException {
ManualProjectCoordinateAdvisor sut = new ManualProjectCoordinateAdvisor(persistenceFile);
sut.setManualMapping(exampleDependencyInfo, EXPECTED_PROJECT_COORDINATE);
Optional<ProjectCoordinate> projectCoordinate = sut.suggest(exampleDependencyInfo);
assertEquals(EXPECTED_PROJECT_COORDINATE, projectCoordinate.get());
sut.close();
}
@Test
public void returnManualMappingsCorrectForMoreMappings() throws IOException {
ManualProjectCoordinateAdvisor sut = new ManualProjectCoordinateAdvisor(persistenceFile);
sut.setManualMapping(exampleDependencyInfo, EXPECTED_PROJECT_COORDINATE);
sut.setManualMapping(anotherExampleDependencyInfo, ANOTHER_EXPECTED_PROJECT_COORDINATE);
Optional<ProjectCoordinate> projectCoordinate = sut.suggest(exampleDependencyInfo);
assertEquals(EXPECTED_PROJECT_COORDINATE, projectCoordinate.get());
Optional<ProjectCoordinate> anotherProjectCoordinate = sut.suggest(anotherExampleDependencyInfo);
assertEquals(ANOTHER_EXPECTED_PROJECT_COORDINATE, anotherProjectCoordinate.get());
sut.close();
}
@Test
public void storageOfManualMappingsWorksCorrect() throws IOException {
ManualProjectCoordinateAdvisor sut = new ManualProjectCoordinateAdvisor(persistenceFile);
sut.setManualMapping(exampleDependencyInfo, EXPECTED_PROJECT_COORDINATE);
sut.setManualMapping(anotherExampleDependencyInfo, ANOTHER_EXPECTED_PROJECT_COORDINATE);
sut.close();
sut = new ManualProjectCoordinateAdvisor(persistenceFile);
sut.open();
Optional<ProjectCoordinate> projectCoordinate = sut.suggest(exampleDependencyInfo);
assertEquals(EXPECTED_PROJECT_COORDINATE, projectCoordinate.get());
Optional<ProjectCoordinate> anotherProjectCoordinate = sut.suggest(anotherExampleDependencyInfo);
assertEquals(ANOTHER_EXPECTED_PROJECT_COORDINATE, anotherProjectCoordinate.get());
sut.close();
}
}