/* * Copyright 2012-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package io.spring.initializr.metadata; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; /** * Tests for {@link DependenciesCapability}. * * @author Stephane Nicoll */ public class DependenciesCapabilityTests { @Rule public final ExpectedException thrown = ExpectedException.none(); @Test public void indexedDependencies() { Dependency dependency = Dependency.withId("first"); Dependency dependency2 = Dependency.withId("second"); DependenciesCapability capability = createDependenciesCapability("foo", dependency, dependency2); capability.validate(); assertSame(dependency, capability.get("first")); assertSame(dependency2, capability.get("second")); assertNull(capability.get("anotherId")); } @Test public void addTwoDependenciesWithSameId() { Dependency dependency = Dependency.withId("conflict"); Dependency dependency2 = Dependency.withId("conflict"); DependenciesCapability capability = createDependenciesCapability("foo", dependency, dependency2); thrown.expect(IllegalArgumentException.class); thrown.expectMessage("conflict"); capability.validate(); } @Test public void addDependencyWithAliases() { Dependency dependency = Dependency.withId("first"); dependency.getAliases().add("alias1"); dependency.getAliases().add("alias2"); DependenciesCapability capability = createDependenciesCapability("foo", dependency); capability.validate(); assertSame(dependency, capability.get("first")); assertSame(dependency, capability.get("alias1")); assertSame(dependency, capability.get("alias2")); } @Test public void aliasClashWithAnotherDependency() { Dependency dependency = Dependency.withId("first"); dependency.getAliases().add("alias1"); dependency.getAliases().add("alias2"); Dependency dependency2 = Dependency.withId("alias2"); DependenciesCapability capability = new DependenciesCapability(); capability.getContent().add(createDependencyGroup("foo", dependency)); capability.getContent().add(createDependencyGroup("bar", dependency2)); thrown.expect(IllegalArgumentException.class); thrown.expectMessage("alias2"); capability.validate(); } @Test public void mergeAddEntry() { DependenciesCapability capability = createDependenciesCapability("foo", Dependency.withId("first"), Dependency.withId("second")); DependenciesCapability anotherCapability = createDependenciesCapability("foo", Dependency.withId("bar"), Dependency.withId("biz")); anotherCapability.getContent() .add(createDependencyGroup("bar", Dependency.withId("third"))); capability.merge(anotherCapability); assertEquals(2, capability.getContent().size()); assertNotNull(capability.get("first")); assertNotNull(capability.get("second")); assertNotNull(capability.get("third")); } @Test public void addDefaultVersionRange() { Dependency first = Dependency.withId("first"); Dependency second = Dependency.withId("second"); second.setVersionRange("1.2.3.RELEASE"); DependencyGroup group = createDependencyGroup("test", first, second); group.setVersionRange("1.2.0.RELEASE"); DependenciesCapability capability = new DependenciesCapability(); capability.getContent().add(group); capability.validate(); assertEquals("1.2.0.RELEASE", capability.get("first").getVersionRange()); assertEquals("1.2.3.RELEASE", capability.get("second").getVersionRange()); } @Test public void addDefaultBom() { Dependency first = Dependency.withId("first"); Dependency second = Dependency.withId("second"); second.setBom("da-bom"); DependencyGroup group = createDependencyGroup("test", first, second); group.setBom("test-bom"); DependenciesCapability capability = new DependenciesCapability(); capability.getContent().add(group); capability.validate(); assertEquals("test-bom", capability.get("first").getBom()); assertEquals("da-bom", capability.get("second").getBom()); } @Test public void addDefaultRepository() { Dependency first = Dependency.withId("first"); Dependency second = Dependency.withId("second"); second.setRepository("da-repo"); DependencyGroup group = createDependencyGroup("test", first, second); group.setRepository("test-repo"); DependenciesCapability capability = new DependenciesCapability(); capability.getContent().add(group); capability.validate(); assertEquals("test-repo", capability.get("first").getRepository()); assertEquals("da-repo", capability.get("second").getRepository()); } private static DependenciesCapability createDependenciesCapability(String groupName, Dependency... dependencies) { DependenciesCapability capability = new DependenciesCapability(); DependencyGroup group = createDependencyGroup(groupName, dependencies); capability.getContent().add(group); return capability; } private static DependencyGroup createDependencyGroup(String groupName, Dependency... dependencies) { DependencyGroup group = DependencyGroup.create(groupName); for (Dependency dependency : dependencies) { group.getContent().add(dependency); } return group; } }