package hudson.plugins.iphoneview; import hudson.model.FreeStyleBuild; import hudson.model.FreeStyleProject; import hudson.scm.ChangeLogSet; import java.util.ArrayList; import java.util.List; import mockit.Expectations; import mockit.Mocked; import org.junit.Test; import static org.junit.Assert.*; /** * Test for {@link IPhoneJob} * * @author Seiji Sogabe */ public class IPhoneJobTest { @Mocked FreeStyleProject mockProject; /** * Test of getChangedBuildsAll method, of class IPhoneJob. */ @Test public void testGetChangedBuildsAll() { new Expectations() { FreeStyleBuild mockBuild; ChangeLogSet<? extends ChangeLogSet.Entry> mockChangeLogSet; ChangeLogSet.Entry mockEntry; { List<FreeStyleBuild> builds = new ArrayList<FreeStyleBuild>(); builds.add(mockBuild); mockProject.getBuilds(); returns(builds); mockBuild.getChangeSet(); returns(mockChangeLogSet); List<ChangeLogSet.Entry> list = new ArrayList<ChangeLogSet.Entry>(); list.add(mockEntry); mockChangeLogSet.iterator(); returns(list.iterator()); } }; IPhoneJob<FreeStyleProject, FreeStyleBuild> job = new IPhoneJob<FreeStyleProject, FreeStyleBuild>(mockProject); List<FreeStyleBuild> builds = job.getChangedBuildsAll(); assertNotNull(builds); assertEquals(1, builds.size()); } /** * Test of getChangedBuildsAll method, of class IPhoneJob. */ @Test public void testGetChangedBuildsAll_HasNoChangedBuild() { new Expectations() { FreeStyleBuild mockBuild; FreeStyleBuild mockNoChangedBuild; ChangeLogSet<? extends ChangeLogSet.Entry> mockChangeLogSet; ChangeLogSet<? extends ChangeLogSet.Entry> mockEmptyChangeLogSet; ChangeLogSet.Entry mockEntry; { List<FreeStyleBuild> builds = new ArrayList<FreeStyleBuild>(); builds.add(mockBuild); builds.add(mockNoChangedBuild); mockProject.getBuilds(); returns(builds); mockBuild.getChangeSet(); returns(mockChangeLogSet); List<ChangeLogSet.Entry> list = new ArrayList<ChangeLogSet.Entry>(); list.add(mockEntry); mockChangeLogSet.iterator(); returns(list.iterator()); mockNoChangedBuild.getChangeSet(); returns(mockEmptyChangeLogSet); List<ChangeLogSet.Entry> emptyList = new ArrayList<ChangeLogSet.Entry>(); mockEmptyChangeLogSet.iterator(); returns(emptyList.iterator()); } }; IPhoneJob<FreeStyleProject, FreeStyleBuild> job = new IPhoneJob<FreeStyleProject, FreeStyleBuild>(mockProject); List<FreeStyleBuild> builds = job.getChangedBuildsAll(); assertNotNull(builds); assertEquals(1, builds.size()); } /** * Test of getChangedBuildsAll method, of class IPhoneJob. */ @Test public void testGetChangedBuildsAll_NoBuilds() { new Expectations() { FreeStyleBuild mockBuild; ChangeLogSet<? extends ChangeLogSet.Entry> mockChangeLogSet; ChangeLogSet.Entry mockEntry; { List<FreeStyleBuild> builds = new ArrayList<FreeStyleBuild>(); mockProject.getBuilds(); returns(builds); } }; IPhoneJob<FreeStyleProject, FreeStyleBuild> job = new IPhoneJob<FreeStyleProject, FreeStyleBuild>(mockProject); List<FreeStyleBuild> builds = job.getChangedBuildsAll(); assertNotNull(builds); assertTrue(builds.isEmpty()); } /** * Test of getChangedBuilds method, of class IPhoneJob. */ @Test public void testGetChangedBuilds_MoreThanSize() { new Expectations() { FreeStyleBuild mockBuild; ChangeLogSet<? extends ChangeLogSet.Entry> mockChangeLogSet; ChangeLogSet.Entry mockEntry; { List<FreeStyleBuild> builds = new ArrayList<FreeStyleBuild>(); builds.add(mockBuild); builds.add(mockBuild); mockProject.getBuilds(); returns(builds); for (FreeStyleBuild build : builds) { mockBuild.getChangeSet(); returns(mockChangeLogSet); List<ChangeLogSet.Entry> list = new ArrayList<ChangeLogSet.Entry>(); list.add(mockEntry); mockChangeLogSet.iterator(); returns(list.iterator()); } } }; IPhoneJob<FreeStyleProject, FreeStyleBuild> job = new IPhoneJob<FreeStyleProject, FreeStyleBuild>(mockProject); List<FreeStyleBuild> builds = job.getChangedBuilds(1); assertNotNull(builds); assertEquals(1, builds.size()); } /** * Test of getChangedBuilds method, of class IPhoneJob. */ @Test public void testGetChangedBuilds_LessThanSize() { new Expectations() { FreeStyleBuild mockBuild; ChangeLogSet<? extends ChangeLogSet.Entry> mockChangeLogSet; ChangeLogSet.Entry mockEntry; { List<FreeStyleBuild> builds = new ArrayList<FreeStyleBuild>(); builds.add(mockBuild); builds.add(mockBuild); mockProject.getBuilds(); returns(builds); for (FreeStyleBuild build : builds) { mockBuild.getChangeSet(); returns(mockChangeLogSet); List<ChangeLogSet.Entry> list = new ArrayList<ChangeLogSet.Entry>(); list.add(mockEntry); mockChangeLogSet.iterator(); returns(list.iterator()); } } }; IPhoneJob<FreeStyleProject, FreeStyleBuild> job = new IPhoneJob<FreeStyleProject, FreeStyleBuild>(mockProject); List<FreeStyleBuild> builds = job.getChangedBuilds(3); assertNotNull(builds); assertEquals(2, builds.size()); } /** * Test of getChangedBuilds method, of class IPhoneJob. */ @Test public void testGetChangedBuilds_EqualSize() { new Expectations() { FreeStyleBuild mockBuild; ChangeLogSet<? extends ChangeLogSet.Entry> mockChangeLogSet; ChangeLogSet.Entry mockEntry; { List<FreeStyleBuild> builds = new ArrayList<FreeStyleBuild>(); builds.add(mockBuild); builds.add(mockBuild); mockProject.getBuilds(); returns(builds); for (FreeStyleBuild build : builds) { mockBuild.getChangeSet(); returns(mockChangeLogSet); List<ChangeLogSet.Entry> list = new ArrayList<ChangeLogSet.Entry>(); list.add(mockEntry); mockChangeLogSet.iterator(); returns(list.iterator()); } } }; IPhoneJob<FreeStyleProject, FreeStyleBuild> job = new IPhoneJob<FreeStyleProject, FreeStyleBuild>(mockProject); List<FreeStyleBuild> builds = job.getChangedBuilds(2); assertNotNull(builds); assertEquals(2, builds.size()); } /** * Test of getChangedBuilds method, of class IPhoneJob. */ @Test public void testGetChangedBuilds_NegativeSize() { new Expectations() { FreeStyleBuild mockBuild; ChangeLogSet<? extends ChangeLogSet.Entry> mockChangeLogSet; ChangeLogSet.Entry mockEntry; { List<FreeStyleBuild> builds = new ArrayList<FreeStyleBuild>(); builds.add(mockBuild); builds.add(mockBuild); mockProject.getBuilds(); returns(builds); for (FreeStyleBuild build : builds) { mockBuild.getChangeSet(); returns(mockChangeLogSet); List<ChangeLogSet.Entry> list = new ArrayList<ChangeLogSet.Entry>(); list.add(mockEntry); mockChangeLogSet.iterator(); returns(list.iterator()); } } }; IPhoneJob<FreeStyleProject, FreeStyleBuild> job = new IPhoneJob<FreeStyleProject, FreeStyleBuild>(mockProject); List<FreeStyleBuild> builds = job.getChangedBuilds(-1); assertNotNull(builds); assertEquals(0, builds.size()); } }