1   package org.apache.maven.plugin.announcement;
2   
3   import java.io.File;
4   import java.io.FileReader;
5   import java.util.ArrayList;
6   import java.util.List;
7   
8   import org.apache.maven.plugin.testing.AbstractMojoTestCase;
9   import org.apache.maven.plugins.changes.model.Release;
10  import org.codehaus.plexus.util.FileUtils;
11  import org.codehaus.plexus.util.IOUtil;
12  
13  /*
14   * Licensed to the Apache Software Foundation (ASF) under one
15   * or more contributor license agreements.  See the NOTICE file
16   * distributed with this work for additional information
17   * regarding copyright ownership.  The ASF licenses this file
18   * to you under the Apache License, Version 2.0 (the
19   * "License"); you may not use this file except in compliance
20   * with the License.  You may obtain a copy of the License at
21   *
22   *    http://www.apache.org/licenses/LICENSE-2.0
23   *
24   * Unless required by applicable law or agreed to in writing,
25   * software distributed under the License is distributed on an
26   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
27   * KIND, either express or implied.  See the License for the
28   * specific language governing permissions and limitations
29   * under the License.
30   */
31  
32  /**
33   * @author <a href="mailto:olamy@apache.org">olamy</a>
34   * @version $Id: AnnouncementMojoTest.html 816595 2012-05-08 12:43:00Z hboutemy $
35   */
36  public class AnnouncementMojoTest
37      extends AbstractMojoTestCase
38  {
39  
40      public void testAnnounceGeneration()
41          throws Exception
42      {
43          File pom = new File( getBasedir(), "/src/test/unit/plugin-config.xml" );
44          AnnouncementMojo mojo = (AnnouncementMojo) lookupMojo( "announcement-generate", pom );
45  
46          setVariableValueToObject( mojo, "xmlPath", new File( getBasedir(), "/src/test/unit/announce-changes.xml" ) );
47  
48          File outputDirectory = new File( getBasedir(), "target/test" );
49  
50          if ( outputDirectory.exists() )
51          {
52              FileUtils.deleteDirectory( outputDirectory );
53              outputDirectory.mkdirs();
54          }
55          else
56          {
57              outputDirectory.mkdirs();
58          }
59          setVariableValueToObject( mojo, "outputDirectory", outputDirectory );
60          setVariableValueToObject( mojo, "version", "1.1" );
61          setVariableValueToObject( mojo, "template", "announcement.vm" );
62          setVariableValueToObject( mojo, "templateDirectory",
63                                    "/src/main/resources/org/apache/maven/plugin/announcement/" );
64          setVariableValueToObject( mojo, "basedir", getBasedir() );
65          setVariableValueToObject( mojo, "introduction", "Nice library" );
66          mojo.execute();
67  
68          FileReader fileReader = new FileReader( new File( outputDirectory, "announcement.vm" ) );
69          String result = IOUtil.toString( fileReader );
70  
71          assertContains( "Nice library", result );
72  
73          assertContains( "Changes in this version include:", result );
74  
75          assertContains( "New features:", result );
76  
77          assertContains( "o Added additional documentation on how to configure the plugin.", result );
78  
79          assertContains( "Fixed Bugs:", result );
80  
81          assertContains( "o Enable retrieving component-specific issues.  Issue: MCHANGES-88.", result );
82  
83          assertContains( "Changes:", result );
84  
85          assertContains( "o Handle different issue systems.", result );
86  
87          assertContains( "o Updated dependencies.", result );
88  
89          assertContains( "Removed:", result );
90  
91          assertContains( "o The element type \" link \" must be terminated by the matching end-tag.", result );
92  
93          assertContains( "Deleted the erroneous code.", result );
94      }
95  
96      protected void assertContains( String content, String announce )
97      {
98          assertTrue( announce.indexOf( content ) > 0 );
99      }
100 
101     public void testmergeReleases() throws Exception
102     {
103       List firstReleases = new ArrayList();
104       List secondReleases = new ArrayList();
105       List mergedReleases;
106       AnnouncementMojo mojo = new AnnouncementMojo();
107 
108       mergedReleases = mojo.mergeReleases(firstReleases, secondReleases);
109       assertEquals("Both empty", 0, mergedReleases.size());
110 
111       Release release = new Release();
112       release.setVersion("1.0");
113       firstReleases.add(release);
114 
115       mergedReleases = mojo.mergeReleases(firstReleases, secondReleases);
116       assertEquals("One release in first", 1, mergedReleases.size());
117 
118       release = new Release();
119       release.setVersion("1.1");
120       secondReleases.add(release);
121 
122       mergedReleases = mojo.mergeReleases(firstReleases, secondReleases);
123       assertEquals("One release each", 2, mergedReleases.size());
124 
125       release = new Release();
126       release.setVersion("1.1");
127       firstReleases.add(release);
128 
129       mergedReleases = mojo.mergeReleases(firstReleases, secondReleases);
130       assertEquals("Two releases in first, one release in second with one version being the same",
131                    2, mergedReleases.size());
132 
133       release = new Release();
134       release.setVersion("1.2");
135       secondReleases.add(release);
136 
137       mergedReleases = mojo.mergeReleases(firstReleases, secondReleases);
138       assertEquals("Two releases each with one version being the same",
139                    3, mergedReleases.size());
140     }
141 }