Skip to content

Commit

Permalink
Pact Live: consumer test implemented
Browse files Browse the repository at this point in the history
  • Loading branch information
yacekmm committed Aug 27, 2024
1 parent 1872a68 commit cad058c
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.bottega.promoter.fixtures;

import au.com.dius.pact.consumer.junit5.PactConsumerTestExt;
import au.com.dius.pact.consumer.junit5.PactTestFor;
import au.com.dius.pact.core.model.PactSpecVersion;
import com.bottega.promoter.concert.fixtures.PricingPactFixtures;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;

@ExtendWith(PactConsumerTestExt.class)
@PactTestFor(providerName = PactFrameworkTestBase_liveCoding.PACT_PRICING_LIVE_CODING, port = "8181", pactVersion = PactSpecVersion.V3)
@SuppressWarnings("deprecation")
public class PactFrameworkTestBase_liveCoding extends FrameworkTestBase {

public static final String PACT_PROMOTER_LIVE_CODING = "LiveCoding.Tickets.Promoter";
public static final String PACT_PRICING_LIVE_CODING = "LiveCoding.Tickets.Pricing";

@Autowired
protected PricingPactFixtures pricingPactFixtures;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.bottega.promoter.infra.client.pricing;

import au.com.dius.pact.consumer.dsl.PactDslWithProvider;
import au.com.dius.pact.core.model.RequestResponsePact;
import au.com.dius.pact.core.model.annotations.Pact;
import com.bottega.promoter.concert.domain.ConcertId;
import com.bottega.promoter.fixtures.FakePricingClient;
import com.bottega.promoter.fixtures.PactFrameworkTestBase_liveCoding;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.assertThat;

public class PricingClient_applyDiscount_liveCoding_pactDepTest extends PactFrameworkTestBase_liveCoding {

FakePricingClient fakePricingClient;
PricingClient httpPricingClient;


@BeforeEach
void setUp() {
fakePricingClient = new FakePricingClient();
httpPricingClient = concertFixtures.pricingClient;
}

@Pact(consumer = PACT_PROMOTER_LIVE_CODING)
@SuppressWarnings("unused")
public RequestResponsePact applyPercentageDiscount(PactDslWithProvider builder) {
return pricingPactFixtures.applyPercentageDiscount(builder);
}

@Test
public void applyDiscount_isValid() {

//when
var result = httpPricingClient.applyPercentageDiscount(new ConcertId("123"), 10);

//then
assertThat(result.get().getFirst().getPrice().toInt()).isEqualTo(90_00);
}

}

0 comments on commit cad058c

Please sign in to comment.