package org.jvnet.hudson.plugins.shelveproject;
import hudson.model.AbstractProject;
import hudson.model.FreeStyleProject;
import hudson.model.Hudson;
import org.jvnet.hudson.test.HudsonTestCase;
import java.io.IOException;
public class ItemListenerImplTest
extends HudsonTestCase
{
private ItemListenerImpl itemListener;
public void setUp()
throws Exception
{
super.setUp();
itemListener = new ItemListenerImpl();
}
public void testOnLoaded_shouldDoNothingWhenNoProjectsInHudson()
{
itemListener.onLoaded();
// no exception
}
public void testOnLoaded_shouldAddShelveProjectActionToAbstractProject()
throws IOException
{
Hudson.getInstance().getItems().add( createFreeStyleProject( "Mickey Mouse Project" ) );
itemListener.onLoaded();
final AbstractProject project = ( (AbstractProject) Hudson.getInstance().getItem( "Mickey Mouse Project" ) );
assertEquals( "Project should have had an action added.", 1, project.getActions().size() );
assertEquals( "Project should have had a ShelveProjectAction added.", 1,
project.getActions( ShelveProjectAction.class ).size() );
}
public void testOnLoaded_shouldAddShelveProjectActionToAllAbstractProjects()
throws IOException
{
Hudson.getInstance().getItems().add( createFreeStyleProject( "Mickey Mouse Project" ) );
Hudson.getInstance().getItems().add( createFreeStyleProject( "Donald Duck Project" ) );
itemListener.onLoaded();
final AbstractProject project1 = ( (AbstractProject) Hudson.getInstance().getItem( "Mickey Mouse Project" ) );
assertEquals( "Project should have had an action added.", 1, project1.getActions().size() );
assertEquals( "Project should have had a ShelveProjectAction added.", 1,
project1.getActions( ShelveProjectAction.class ).size() );
final AbstractProject project2 = ( (AbstractProject) Hudson.getInstance().getItem( "Donald Duck Project" ) );
assertEquals( "Project should have had an action added.", 1, project2.getActions().size() );
assertEquals( "Project should have had a ShelveProjectAction added.", 1,
project2.getActions( ShelveProjectAction.class ).size() );
}
public void testOnLoaded_shouldNotAddShelveProjectActionForProjectsAlreadyWithThisAction()
throws IOException
{
Hudson.getInstance().getItems().add( createFreeStyleProject( "Mickey Mouse Project" ) );
itemListener.onLoaded();
itemListener.onLoaded();
final AbstractProject project1 = ( (AbstractProject) Hudson.getInstance().getItem( "Mickey Mouse Project" ) );
assertEquals( "Project should have been added just once.", 1, project1.getActions().size() );
assertEquals( "Project should have had a ShelveProjectAction added.", 1,
project1.getActions( ShelveProjectAction.class ).size() );
}
public void testOnCreate_shouldAddShelveProjectActionForNewProjects()
throws IOException
{
FreeStyleProject freeStyleProject = createFreeStyleProject( "Mickey Mouse Project" );
itemListener.onCreated( freeStyleProject );
assertEquals( "Project should have been added just once.", 1, freeStyleProject.getActions().size() );
assertEquals( "Project should have had a ShelveProjectAction added.", 1,
freeStyleProject.getActions( ShelveProjectAction.class ).size() );
}
}