package com.flextrade.jfixture.customisation; import com.flextrade.jfixture.NoSpecimen; import com.flextrade.jfixture.SpecimenSupplier; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; public class TestCustomBuilder { private CustomBuilder builder; @Mock private SpecimenSupplier<ArrayList> mockSpecimenBuilder; @Before public void initialise() { MockitoAnnotations.initMocks(this); this.builder = new CustomBuilder<ArrayList>(ArrayList.class, this.mockSpecimenBuilder); } @Test public void exact_class_type_invokes_builder() { this.builder.create(ArrayList.class, null); verify(this.mockSpecimenBuilder).create(); } @Test public void different_class_type_returns_no_specimen() { Object result = this.builder.create(String.class, null); assertEquals(new NoSpecimen(), result); } @Test public void different_class_type_does_not_invoke_builder() { this.builder.create(String.class, null); verify(this.mockSpecimenBuilder, never()).create(); } }