package com.flextrade.jfixture.customisation.fluent; import com.flextrade.jfixture.CustomisationContainer; import com.flextrade.jfixture.FluentCustomisation; import com.flextrade.jfixture.customisation.OmitSpecimenRecursionCustomisation; import com.flextrade.jfixture.customisation.ThrowingRecursionCustomisation; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import static org.junit.Assert.assertSame; import static org.mockito.Matchers.isA; import static org.mockito.Mockito.verify; public class TestRecursionBehaviour { private RecursionBehaviour behaviour; @Mock private CustomisationContainer mockContainer; @Mock private FluentCustomisation mockFluentCustomisation; @Before public void initialise() { MockitoAnnotations.initMocks(this); this.behaviour = new RecursionBehaviour(this.mockContainer, this.mockFluentCustomisation); } @Test public void throw_exception_adds_throwing_recursion_customisation() { this.behaviour.throwException(); verify(this.mockContainer).customise(isA(ThrowingRecursionCustomisation.class)); } @Test public void throw_exception_returns_the_fluent_customisation() { assertSame(this.mockFluentCustomisation, this.behaviour.throwException()); } @Test public void omit_specimen_adds_omit_specimen_recursion_customisation() { this.behaviour.omitSpecimen(); verify(this.mockContainer).customise(isA(OmitSpecimenRecursionCustomisation.class)); } @Test public void omit_specimen_returns_the_fluent_customisation() { assertSame(this.mockFluentCustomisation, this.behaviour.omitSpecimen()); } }