1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.archetype.ui.generation;
20
21 import java.util.Arrays;
22 import java.util.List;
23
24 import org.apache.maven.archetype.ui.ArchetypeConfiguration;
25 import org.junit.Before;
26 import org.junit.Test;
27
28 import static org.junit.Assert.assertEquals;
29
30 public class RequiredPropertyComparatorTest {
31 private DefaultArchetypeGenerationConfigurator.RequiredPropertyComparator requiredPropertyComparator;
32
33 private ArchetypeConfiguration archetypeConfiguration;
34
35 @Before
36 public void setUp() throws Exception {
37 archetypeConfiguration = new ArchetypeConfiguration();
38 requiredPropertyComparator =
39 new DefaultArchetypeGenerationConfigurator.RequiredPropertyComparator(archetypeConfiguration);
40 }
41
42 @Test
43 public void testShouldOrderPropertiesWhenReferringEachOther() {
44 archetypeConfiguration.addRequiredProperty("prop1");
45 archetypeConfiguration.setDefaultProperty("prop1", "${prop2}");
46 archetypeConfiguration.addRequiredProperty("prop2");
47 archetypeConfiguration.setDefaultProperty("prop2", "prop2 default value");
48
49 List<String> requiredProperties = archetypeConfiguration.getRequiredProperties();
50 assertEquals(Arrays.asList("prop1", "prop2"), requiredProperties);
51 requiredProperties.sort(requiredPropertyComparator);
52 assertEquals(Arrays.asList("prop2", "prop1"), requiredProperties);
53 }
54
55 @Test
56 public void testShouldOrderPropertiesWhenReferringEachOther2() {
57 archetypeConfiguration.addRequiredProperty("prop1");
58 archetypeConfiguration.setDefaultProperty("prop1", "${prop2}");
59 archetypeConfiguration.addRequiredProperty("prop2");
60
61 List<String> requiredProperties = archetypeConfiguration.getRequiredProperties();
62 assertEquals(Arrays.asList("prop1", "prop2"), requiredProperties);
63 requiredProperties.sort(requiredPropertyComparator);
64 assertEquals(Arrays.asList("prop2", "prop1"), requiredProperties);
65 }
66
67 @Test
68 public void testTransitivePropertyReferences() {
69 archetypeConfiguration.addRequiredProperty("foo");
70 archetypeConfiguration.setDefaultProperty("foo", "${bar}");
71 archetypeConfiguration.addRequiredProperty("bar");
72 archetypeConfiguration.setDefaultProperty("bar", "${baz}");
73 archetypeConfiguration.addRequiredProperty("baz");
74
75 List<String> requiredProperties = archetypeConfiguration.getRequiredProperties();
76 assertEquals(Arrays.asList("foo", "bar", "baz"), requiredProperties);
77 requiredProperties.sort(requiredPropertyComparator);
78 assertEquals(Arrays.asList("baz", "bar", "foo"), requiredProperties);
79 }
80
81 @Test
82 public void testPropertiesWithHyphen() {
83 archetypeConfiguration.addRequiredProperty("description");
84 archetypeConfiguration.setDefaultProperty("description", "${acronym-app} project-arch: ${component-name}");
85 archetypeConfiguration.addRequiredProperty("component-name");
86 archetypeConfiguration.addRequiredProperty("acronym-app");
87
88 List<String> requiredProperties = archetypeConfiguration.getRequiredProperties();
89 assertEquals(Arrays.asList("description", "component-name", "acronym-app"), requiredProperties);
90 requiredProperties.sort(requiredPropertyComparator);
91 assertEquals(Arrays.asList("component-name", "acronym-app", "description"), requiredProperties);
92 }
93 }