View Javadoc
1   package org.apache.maven.archetype.ui.generation;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import org.apache.maven.archetype.ArchetypeGenerationRequest;
23  import org.apache.maven.archetype.catalog.Archetype;
24  import org.apache.maven.archetype.exception.ArchetypeNotDefined;
25  import org.apache.maven.archetype.exception.ArchetypeSelectionFailure;
26  import org.apache.maven.archetype.exception.UnknownArchetype;
27  import org.apache.maven.archetype.exception.UnknownGroup;
28  import org.apache.maven.archetype.ui.ArchetypeDefinition;
29  import org.codehaus.plexus.PlexusTestCase;
30  import org.codehaus.plexus.components.interactivity.PrompterException;
31  import org.easymock.EasyMock;
32  
33  import java.io.IOException;
34  import java.util.List;
35  import java.util.Map;
36  
37  public class DefaultArchetypeSelectorTest
38      extends PlexusTestCase
39  {
40      private DefaultArchetypeSelector selector;
41  
42      @Override
43      public void setUp()
44          throws Exception
45      {
46          super.setUp();
47  
48          selector = (DefaultArchetypeSelector) lookup( ArchetypeSelector.ROLE );
49      }
50  
51      public void testArchetypeCoordinatesInRequest()
52          throws PrompterException, IOException, UnknownGroup, ArchetypeSelectionFailure, UnknownArchetype,
53          ArchetypeNotDefined
54      {
55          ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
56          request.setArchetypeArtifactId( "preset-artifactId" );
57          request.setArchetypeGroupId( "preset-groupId" );
58          request.setArchetypeVersion( "preset-version" );
59  
60          ArchetypeSelectionQueryer queryer = EasyMock.createMock( ArchetypeSelectionQueryer.class );
61          // expect it to not be called
62  
63          EasyMock.replay( queryer );
64  
65          selector.setArchetypeSelectionQueryer( queryer );
66  
67          selector.selectArchetype( request, Boolean.TRUE, "" );
68  
69          EasyMock.verify( queryer );
70  
71          assertEquals( "preset-groupId", request.getArchetypeGroupId() );
72          assertEquals( "preset-artifactId", request.getArchetypeArtifactId() );
73          assertEquals( "preset-version", request.getArchetypeVersion() );
74      }
75  
76      public void testArchetypeArtifactIdInRequest()
77          throws PrompterException, IOException, UnknownGroup, ArchetypeSelectionFailure, UnknownArchetype,
78          ArchetypeNotDefined
79      {
80          ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
81          request.setArchetypeArtifactId( "preset-artifactId" );
82  
83          ArchetypeSelectionQueryer queryer = EasyMock.createMock( ArchetypeSelectionQueryer.class );
84          // expect it to not be called
85  
86          EasyMock.replay( queryer );
87  
88          selector.setArchetypeSelectionQueryer( queryer );
89  
90          selector.selectArchetype( request, Boolean.TRUE, "" );
91  
92          EasyMock.verify( queryer );
93  
94          assertEquals( DefaultArchetypeSelector.DEFAULT_ARCHETYPE_GROUPID, request.getArchetypeGroupId() );
95          assertEquals( "preset-artifactId", request.getArchetypeArtifactId() );
96          assertEquals( DefaultArchetypeSelector.DEFAULT_ARCHETYPE_VERSION, request.getArchetypeVersion() );
97      }
98  
99      public void testArchetypeArtifactIdNotInRequest()
100         throws PrompterException, IOException, UnknownGroup, ArchetypeSelectionFailure, UnknownArchetype,
101         ArchetypeNotDefined
102     {
103         ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
104 
105         ArchetypeSelectionQueryer queryer = EasyMock.createMock( ArchetypeSelectionQueryer.class );
106                 
107         Archetype archetype = new Archetype();
108         archetype.setArtifactId( "set-artifactId" );
109         archetype.setGroupId( "set-groupId" );
110         archetype.setVersion( "set-version" );
111         ArchetypeDefinition y = EasyMock.anyObject();
112         Map<String, List<Archetype>> x = EasyMock.anyObject();
113         EasyMock.expect( queryer.selectArchetype( x , y ) ).andReturn( archetype );
114 
115         EasyMock.replay( queryer );
116 
117         selector.setArchetypeSelectionQueryer( queryer );
118 
119         selector.selectArchetype( request, Boolean.TRUE, "" );
120 
121         EasyMock.verify( queryer );
122 
123         assertEquals( "set-groupId", request.getArchetypeGroupId() );
124         assertEquals( "set-artifactId", request.getArchetypeArtifactId() );
125         assertEquals( "set-version", request.getArchetypeVersion() );
126     }
127 
128     public void testArchetypeNotInRequestDefaultsInBatchMode()
129         throws PrompterException, IOException, UnknownGroup, ArchetypeSelectionFailure, UnknownArchetype,
130         ArchetypeNotDefined
131     {
132         ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
133 
134         ArchetypeSelectionQueryer queryer = EasyMock.createMock( ArchetypeSelectionQueryer.class );
135         // expect it to not be called
136 
137         EasyMock.replay( queryer );
138 
139         selector.setArchetypeSelectionQueryer( queryer );
140 
141         selector.selectArchetype( request, Boolean.FALSE, "" );
142 
143         EasyMock.verify( queryer );
144 
145         assertEquals( DefaultArchetypeSelector.DEFAULT_ARCHETYPE_GROUPID, request.getArchetypeGroupId() );
146         assertEquals( DefaultArchetypeSelector.DEFAULT_ARCHETYPE_ARTIFACTID, request.getArchetypeArtifactId() );
147         assertEquals( DefaultArchetypeSelector.DEFAULT_ARCHETYPE_VERSION, request.getArchetypeVersion() );
148     }
149 
150     public void testArchetypeNotInRequestDefaults()
151         throws PrompterException, IOException, UnknownGroup, ArchetypeSelectionFailure, UnknownArchetype,
152         ArchetypeNotDefined
153     {
154         ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
155 
156         ArchetypeSelectionQueryer queryer = EasyMock.createMock( ArchetypeSelectionQueryer.class );
157         Archetype archetype = new Archetype();
158         archetype.setArtifactId( "set-artifactId" );
159         archetype.setGroupId( "set-groupId" );
160         archetype.setVersion( "set-version" );
161         ArchetypeDefinition y = EasyMock.anyObject();
162         Map<String, List<Archetype>> x = EasyMock.anyObject();
163         EasyMock.expect( queryer.selectArchetype( x , y ) ).andReturn( archetype );
164 
165         EasyMock.replay( queryer );
166 
167         selector.setArchetypeSelectionQueryer( queryer );
168 
169         selector.selectArchetype( request, Boolean.TRUE, "" );
170 
171         EasyMock.verify( queryer );
172 
173         assertEquals( "set-groupId", request.getArchetypeGroupId() );
174         assertEquals( "set-artifactId", request.getArchetypeArtifactId() );
175         assertEquals( "set-version", request.getArchetypeVersion() );
176     }
177 
178 }