public void changeState(JobState newState, Date stateChangeTime) { if (this.state != newState) { this.state = newState; stateTransitions.add(new JobStateTransition(newState, stateChangeTime)); } }
@Test public void shouldReturnBuildingTransitionTimeAsStartBuildingDate() { final Date date = new Date(); JobInstance instance = JobInstanceMother.scheduled("jobConfig1"); JobStateTransitions transitions = new JobStateTransitions( new JobStateTransition(JobState.Building, date)); instance.setTransitions(transitions); assertThat(instance.getStartedDateFor(JobState.Building), is(date)); }
@Test public void shouldCreateATransitionOnStateChange() throws Exception { JobInstance instance = JobInstanceMother.scheduled("jobConfig1"); instance.completing(JobResult.Passed); final JobStateTransition scheduledState = new JobStateTransition(JobState.Scheduled, new Date()); final JobStateTransition completedState = new JobStateTransition(JobState.Completing, new Date()); assertThat(instance.getTransitions(), hasItem(scheduledState)); assertThat(instance.getTransitions(), hasItem(completedState)); assertThat(instance.getTransitions().first(), not(isTransitionWithState(JobState.Preparing))); }
@Test public void shouldNotCreateATransitionWhenPreviousStateIsTheSame() throws Exception { JobInstance instance = JobInstanceMother.scheduled("jobConfig1"); instance.changeState(JobState.Scheduled); final JobStateTransition scheduledState = new JobStateTransition(JobState.Scheduled, new Date()); assertThat(instance.getTransitions(), hasItem(scheduledState)); assertThat(instance.getTransitions(), iterableWithSize(1)); assertThat(instance.getTransitions().first(), not(isTransitionWithState(JobState.Preparing))); }
public static JobInstance completed(String jobConfigName, JobResult result, Date completedDate, Date startbuilding) { JobInstance instance = new JobInstance(jobConfigName); instance.completing(result, completedDate); instance.completed(completedDate); instance.getTransitions().add(new JobStateTransition(JobState.Building, startbuilding)); return instance; }