package com.flextrade.jfixture.behaviours.tracing; import com.flextrade.jfixture.NoSpecimen; import com.flextrade.jfixture.SpecimenBuilder; import com.flextrade.jfixture.SpecimenContext; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.io.IOException; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; public class TestSpecimenTracer { private SpecimenTracer tracer; @Mock private SpecimenBuilder mockBuilder; @Mock private TracingStrategy mockStrategy; @Mock private Appendable mockAppendable; @Mock private SpecimenContext mockContext; @Before public void initialise() { MockitoAnnotations.initMocks(this); this.tracer = new SpecimenTracer(this.mockBuilder, this.mockStrategy, this.mockAppendable); } @Test public void tells_strategy_to_write_the_request() throws IOException { Object request = new Object(); this.tracer.create(request, this.mockContext); verify(mockStrategy).writeRequest(this.mockAppendable, request); } @Test public void tells_strategy_to_write_response_if_not_no_specimen() throws IOException { Object request = new Object(); Object response = new Object(); when(this.mockBuilder.create(request, this.mockContext)).thenReturn(response); this.tracer.create(request, this.mockContext); verify(this.mockStrategy).writeCreated(this.mockAppendable, request, response); } @Test public void doest_not_tell_strategy_to_write_response_if_no_specimen() throws IOException { Object request = new Object(); Object response = new NoSpecimen(); when(this.mockBuilder.create(request, this.mockContext)).thenReturn(response); this.tracer.create(request, this.mockContext); verify(this.mockStrategy, never()).writeCreated(this.mockAppendable, request, response); } }