contract-testing-demo
pact and java contract testing with micro-commits
commit ff2d88d1e4d0ec2d0dc251f50d246b930a2c8d67 parent 6b391f301d7d05e0a405571451b7a10f9780a56e Author: Jul <jul@9o.is> Date: Wed, 26 Jun 2019 12:46:00 -0400 Write failing provider test Test: Given there exists an alligator named Mary, a request for Mary the alligator returns Mary the alligator. Diffstat:
| M | consumer-driven/animal-service/src/test/java/app/ZooServicePactTest.java | | | 52 | +++++++++++++++++++++++++++++++++++++++++++++++++--- |
1 file changed, 49 insertions(+), 3 deletions(-)
diff --git a/consumer-driven/animal-service/src/test/java/app/ZooServicePactTest.java b/consumer-driven/animal-service/src/test/java/app/ZooServicePactTest.java @@ -1,10 +1,56 @@ package app; -import org.junit.Test; -import static org.junit.Assert.*; +import app.alligator.AlligatorController; +import au.com.dius.pact.provider.junit.Provider; +import au.com.dius.pact.provider.junit.RestPactRunner; +import au.com.dius.pact.provider.junit.State; +import au.com.dius.pact.provider.junit.StateChangeAction; +import au.com.dius.pact.provider.junit.loader.PactFolder; +import au.com.dius.pact.provider.junit.target.TestTarget; +import au.com.dius.pact.provider.spring.target.MockMvcTarget; +import org.junit.Before; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@RunWith(RestPactRunner.class) +@Provider("Animal Service") +@PactFolder("../pacts") public class ZooServicePactTest { - public void alligatorMaryExists() {} + + @TestTarget + public final MockMvcTarget target = new MockMvcTarget(); + + @InjectMocks + private AlligatorController alligatorController; + + @Mock + private AlligatorRepository alligatorRepository; + + @State("there exists an alligator named Mary") + public void alligatorMaryExists() { + when(alligatorRepository.getByName("Mary")) + .thenReturn(new Alligator("Mary")); + } + + @State( + value = "there exists an alligator named Mary", + action = StateChangeAction.TEARDOWN + ) + public void alligatorMaryExistsVerification() { + verify(alligatorRepository).getByName("Mary"); + } + public void alligatorMaryDoesNotExist() {} public void animalServiceIsUnavailable() {} + + @Before + public void before() { + MockitoAnnotations.initMocks(this); + target.setControllers(alligatorController); + } }