package com.flextrade.jfixture.builders; import com.flextrade.jfixture.NoSpecimen; import com.flextrade.jfixture.SpecimenContext; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; public class TestCalendarBuilder { private final Date date = new Date(12345); private CalendarBuilder builder; @Mock private SpecimenContext mockContext; @Before public void initialise() { MockitoAnnotations.initMocks(this); this.builder = new CalendarBuilder(); when(this.mockContext.resolve(Date.class)).thenReturn(date); } @Test public void non_calendar_type_request_returns_no_specimen() { Object result = this.builder.create(String.class, this.mockContext); assertEquals(new NoSpecimen(), result); } @Test public void calls_context_to_resolve_a_date() { this.builder.create(Calendar.class, mockContext); verify(this.mockContext).resolve(Date.class); } @Test public void returns_gregorian_calendar_with_resolved_date() { Object result = this.builder.create(Calendar.class, mockContext); assertTrue(result instanceof GregorianCalendar); assertEquals(date, ((Calendar) result).getTime()); } }