1 package org.apache.maven.archetype.ui.generation;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.archetype.catalog.Archetype;
23 import org.apache.maven.archetype.ui.ArchetypeDefinition;
24 import org.codehaus.plexus.PlexusTestCase;
25 import org.codehaus.plexus.components.interactivity.Prompter;
26 import org.codehaus.plexus.components.interactivity.PrompterException;
27 import org.easymock.EasyMock;
28
29 import java.util.ArrayList;
30 import java.util.Collections;
31 import java.util.List;
32 import java.util.Map;
33
34 public class DefaultArchetypeSelectionQueryerTest
35 extends PlexusTestCase
36 {
37 private DefaultArchetypeSelectionQueryer queryer;
38
39 @Override
40 public void setUp()
41 throws Exception
42 {
43 super.setUp();
44
45 queryer = (DefaultArchetypeSelectionQueryer) lookup( ArchetypeSelectionQueryer.ROLE );
46 }
47
48 public void testDefaultArchetypeInMapOtherSelection()
49 throws PrompterException
50 {
51 Map<String, List<Archetype>> map = createDefaultArchetypeCatalog();
52
53 Prompter prompter = EasyMock.createMock( Prompter.class );
54 String prompt = EasyMock.anyObject();
55 EasyMock.expect(prompter.prompt( prompt, EasyMock.eq( "2" ) )).andReturn( "1" );
56 queryer.setPrompter( prompter );
57
58 EasyMock.replay( prompter );
59
60 ArchetypeDefinition defaultDefinition = new ArchetypeDefinition();
61 defaultDefinition.setGroupId( "default-groupId" );
62 defaultDefinition.setArtifactId( "default-artifactId" );
63 defaultDefinition.setVersion( "default-version" );
64 Archetype archetype = queryer.selectArchetype( map, defaultDefinition );
65
66 EasyMock.verify( prompter );
67
68 assertEquals( "set-groupId", archetype.getGroupId() );
69 assertEquals( "set-artifactId", archetype.getArtifactId() );
70 assertEquals( "set-version", archetype.getVersion() );
71 }
72
73 public void testDefaultArchetypeInMapDefaultSelection()
74 throws PrompterException
75 {
76 Map<String, List<Archetype>> map = createDefaultArchetypeCatalog();
77
78 Prompter prompter = EasyMock.createMock( Prompter.class );
79 String prompt = EasyMock.anyObject();
80 EasyMock.expect(prompter.prompt( prompt, EasyMock.eq( "2" ) )).andReturn( "2" );
81 queryer.setPrompter( prompter );
82
83 EasyMock.replay( prompter );
84
85 ArchetypeDefinition defaultDefinition = new ArchetypeDefinition();
86 defaultDefinition.setGroupId( "default-groupId" );
87 defaultDefinition.setArtifactId( "default-artifactId" );
88 defaultDefinition.setVersion( "default-version" );
89 Archetype archetype = queryer.selectArchetype( map, defaultDefinition );
90
91 EasyMock.verify( prompter );
92
93 assertEquals( "default-groupId", archetype.getGroupId() );
94 assertEquals( "default-artifactId", archetype.getArtifactId() );
95 assertEquals( "default-version", archetype.getVersion() );
96 }
97
98 public void testDefaultArchetypeNotInMap()
99 throws PrompterException
100 {
101 Map<String, List<Archetype>> map = createDefaultArchetypeCatalog();
102
103 Prompter prompter = EasyMock.createMock( Prompter.class );
104 String prompt = EasyMock.anyObject();
105 EasyMock.expect(prompter.prompt( prompt ) ).andReturn( "1" );
106 queryer.setPrompter( prompter );
107
108 EasyMock.replay( prompter );
109
110 ArchetypeDefinition defaultDefinition = new ArchetypeDefinition();
111 defaultDefinition.setGroupId( "invalid-groupId" );
112 defaultDefinition.setArtifactId( "invalid-artifactId" );
113 defaultDefinition.setVersion( "invalid-version" );
114 Archetype archetype = queryer.selectArchetype( map, defaultDefinition );
115
116 EasyMock.verify( prompter );
117
118 assertEquals( "set-groupId", archetype.getGroupId() );
119 assertEquals( "set-artifactId", archetype.getArtifactId() );
120 assertEquals( "set-version", archetype.getVersion() );
121 }
122
123 public void testNoDefaultArchetype()
124 throws PrompterException
125 {
126 Map<String, List<Archetype>> map = createDefaultArchetypeCatalog();
127
128 Prompter prompter = EasyMock.createMock( Prompter.class );
129 String prompt = EasyMock.anyObject();
130 EasyMock.expect(prompter.prompt( prompt ) ).andReturn( "1" );
131
132 queryer.setPrompter( prompter );
133
134 EasyMock.replay( prompter );
135
136 Archetype archetype = queryer.selectArchetype( map );
137
138 EasyMock.verify( prompter );
139
140 assertEquals( "set-groupId", archetype.getGroupId() );
141 assertEquals( "set-artifactId", archetype.getArtifactId() );
142 assertEquals( "set-version", archetype.getVersion() );
143 }
144
145 public void testArchetypeFiltering()
146 throws PrompterException
147 {
148 Map<String, List<Archetype>> map = createDefaultArchetypeCatalog();
149
150 Prompter prompter = EasyMock.createMock( Prompter.class );
151 String prompt = EasyMock.anyObject();
152 EasyMock.expect(prompter.prompt( prompt ) ).andReturn( "1" );
153
154 queryer.setPrompter( prompter );
155
156 EasyMock.replay( prompter );
157
158 Archetype archetype = queryer.selectArchetype( map );
159
160 EasyMock.verify( prompter );
161
162 assertEquals( "set-groupId", archetype.getGroupId() );
163 assertEquals( "set-artifactId", archetype.getArtifactId() );
164 assertEquals( "set-version", archetype.getVersion() );
165 }
166
167 private static Map<String, List<Archetype>> createDefaultArchetypeCatalog()
168 {
169 List<Archetype> list = new ArrayList<>();
170 list.add( createArchetype( "set-groupId", "set-artifactId", "set-version" ) );
171 list.add( createArchetype( "default-groupId", "default-artifactId", "default-version" ) );
172 return Collections.singletonMap( "internal", list );
173 }
174
175 private static Archetype createArchetype( String groupId, String artifactId, String version )
176 {
177 Archetype a = new Archetype();
178 a.setGroupId( groupId );
179 a.setArtifactId( artifactId );
180 a.setVersion( version );
181 return a;
182 }
183
184 }