public void testAddingPluginsDoesNotDuplicatesEntries()
throws Exception
{
final Metadata md = new Metadata();
{
final Plugin plugin = new Plugin();
plugin.setArtifactId("bar-maven-plugin");
plugin.setPrefix("bar");
plugin.setName("Bar plugin");
md.addPlugin(plugin);
}
// new plugin addition
{
final Plugin plugin1 = new Plugin();
plugin1.setPrefix("foo");
plugin1.setArtifactId("foo-maven-plugin");
plugin1.setName("Foo plugin");
MetadataBuilder.changeMetadata(md, Collections.<MetadataOperation>singletonList(new AddPluginOperation(
new PluginOperand(Version.V110, plugin1))));
}
assertThat("New plugin should be added!", md.getPlugins(), hasSize(2));
assertThat(md.getPlugins().get(0).getPrefix(), equalTo("bar"));
assertThat(md.getPlugins().get(0).getName(), equalTo("Bar plugin"));
assertThat(md.getPlugins().get(1).getPrefix(), equalTo("foo"));
assertThat(md.getPlugins().get(1).getName(), equalTo("Foo plugin"));
// existing plugin addition
{
final Plugin plugin1 = new Plugin();
plugin1.setPrefix("foo");
plugin1.setArtifactId("foo-maven-plugin");
plugin1.setName("The new Foo plugin");
MetadataBuilder.changeMetadata(md, Collections.<MetadataOperation>singletonList(new AddPluginOperation(
new PluginOperand(Version.V110, plugin1))));
}
assertThat("No new plugin should be added!", md.getPlugins(), hasSize(2));
assertThat(md.getPlugins().get(0).getPrefix(), equalTo("bar"));
assertThat(md.getPlugins().get(0).getName(), equalTo("Bar plugin"));
assertThat(md.getPlugins().get(1).getPrefix(), equalTo("foo"));
assertThat(md.getPlugins().get(1).getName(), equalTo("The new Foo plugin"));
// existing plugin addition
{
final Plugin plugin1 = new Plugin();
plugin1.setPrefix("bar");
plugin1.setArtifactId("bar-maven-plugin");
plugin1.setName("The new Bar plugin");
MetadataBuilder.changeMetadata(md, Collections.<MetadataOperation>singletonList(new AddPluginOperation(
new PluginOperand(Version.V110, plugin1))));
}
assertThat("No new plugin should be added!", md.getPlugins(), hasSize(2));
assertThat(md.getPlugins().get(0).getPrefix(), equalTo("bar"));
assertThat(md.getPlugins().get(0).getName(), equalTo("The new Bar plugin"));
assertThat(md.getPlugins().get(1).getPrefix(), equalTo("foo"));
assertThat(md.getPlugins().get(1).getName(), equalTo("The new Foo plugin"));
// new plugin addition wrt plugin order, plugins are ordered by ArtifactID
{
final Plugin plugin1 = new Plugin();
plugin1.setPrefix("alpha");
plugin1.setArtifactId("alpha-maven-plugin");
plugin1.setName("Alpha plugin");
MetadataBuilder.changeMetadata(md, Collections.<MetadataOperation>singletonList(new AddPluginOperation(
new PluginOperand(Version.V110, plugin1))));
}
assertThat("New plugin should be added!", md.getPlugins(), hasSize(3));
assertThat(md.getPlugins().get(0).getPrefix(), equalTo("alpha"));