blob: 2f718d5113628ceb7e7cfe2179bbe4077a15e4e9 [file] [log] [blame]
package org.robolectric.internal.dependency;
import org.apache.maven.artifact.ant.DependenciesTask;
import org.apache.maven.artifact.ant.RemoteRepository;
import org.apache.maven.model.Dependency;
import org.apache.tools.ant.Project;
import org.junit.Before;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import java.net.URL;
import java.util.List;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
public class MavenDependencyResolverTest {
private static final String REPOSITORY_URL = "https://default-repo";
private static final String REPOSITORY_ID = "remote";
private DependenciesTask dependenciesTask;
private Project project;
@Before
public void setUp() {
dependenciesTask = spy(new DependenciesTask());
doNothing().when(dependenciesTask).execute();
doAnswer(new Answer() {
@Override
public Void answer(InvocationOnMock invocationOnMock) throws Throwable {
invocationOnMock.callRealMethod();
Object[] args = invocationOnMock.getArguments();
project = (Project) args[0];
project.setProperty("group1:artifact1:jar", "path1");
project.setProperty("group2:artifact2:jar", "path2");
project.setProperty("group3:artifact3:jar:classifier3", "path3");
return null;
}
}).when(dependenciesTask).setProject(any(Project.class));
}
@Test
public void getLocalArtifactUrl_shouldAddConfiguredRemoteRepository() {
DependencyResolver dependencyResolver = createResolver();
DependencyJar dependencyJar = new DependencyJar("group1", "artifact1", "", null);
dependencyResolver.getLocalArtifactUrl(dependencyJar);
List<RemoteRepository> repositories = dependenciesTask.getRemoteRepositories();
assertEquals(1, repositories.size());
RemoteRepository remoteRepository = repositories.get(0);
assertEquals(REPOSITORY_URL, remoteRepository.getUrl());
assertEquals(REPOSITORY_ID, remoteRepository.getId());
}
@Test
public void getLocalArtifactUrl_shouldAddDependencyToDependenciesTask() {
DependencyResolver dependencyResolver = createResolver();
DependencyJar dependencyJar = new DependencyJar("group1", "artifact1", "3", null);
dependencyResolver.getLocalArtifactUrl(dependencyJar);
List<Dependency> dependencies = dependenciesTask.getDependencies();
assertEquals(1, dependencies.size());
Dependency dependency = dependencies.get(0);
assertEquals("group1", dependency.getGroupId());
assertEquals("artifact1", dependency.getArtifactId());
assertEquals("3", dependency.getVersion());
assertEquals("jar", dependency.getType());
assertNull(dependency.getClassifier());
}
@Test
public void getLocalArtifactUrl_shouldExecuteDependenciesTask() {
DependencyResolver dependencyResolver = createResolver();
DependencyJar dependencyJar = new DependencyJar("group1", "artifact1", "", null);
dependencyResolver.getLocalArtifactUrl(dependencyJar);
verify(dependenciesTask).execute();
}
@Test
public void getLocalArtifactUrl_shouldReturnCorrectUrlForArtifactKey() {
DependencyResolver dependencyResolver = createResolver();
DependencyJar dependencyJar = new DependencyJar("group1", "artifact1", "", null);
URL url = dependencyResolver.getLocalArtifactUrl(dependencyJar);
assertEquals("file:/path1", url.toExternalForm());
}
@Test
public void getLocalArtifactUrl_shouldReturnCorrectUrlForArtifactKeyWithClassifier() {
DependencyResolver dependencyResolver = createResolver();
DependencyJar dependencyJar = new DependencyJar("group3", "artifact3", "", "classifier3");
URL url = dependencyResolver.getLocalArtifactUrl(dependencyJar);
assertEquals("file:/path3", url.toExternalForm());
}
private DependencyResolver createResolver() {
return new MavenDependencyResolver(REPOSITORY_URL, REPOSITORY_ID) {
@Override
protected DependenciesTask createDependenciesTask() {
return dependenciesTask;
}
};
}
}