Skip to content

Commit

Permalink
feat: migrate message pact to new js core
Browse files Browse the repository at this point in the history
Additionally:

* adds new `WithBinaryContent` method for consumer messages
* adds binary content support to messages via `WithBinaryContent`
* adds text content support to messages via `WithTextContent`
* removes all Ruby dependencies in DSLs
  • Loading branch information
mefellows committed Jul 4, 2022
1 parent 25dc07e commit 156886f
Show file tree
Hide file tree
Showing 14 changed files with 1,382 additions and 1,330 deletions.
7 changes: 6 additions & 1 deletion MIGRATION.md
@@ -1,9 +1,14 @@
# Pact-js migration guide

# beta.60
# beta.61

* new `addInteraction` method on PactV3 to support previous JSON-style interactions
* remove `VerifierV3` as many beta versions have passed with this deprecation notice and won't be in final release
* remove `json()` method from consumer message pact
* add new `WithBinaryContent` method for consumer messages
* add binary content support to messages via `WithBinaryContent`
* add text content support to messages via `WithTextContent`
* Remove all Ruby dependencies in DSLs

# beta.56

Expand Down
33 changes: 27 additions & 6 deletions examples/messages/consumer/message-consumer.spec.ts
Expand Up @@ -13,17 +13,38 @@ const path = require('path');
describe('Message consumer tests', () => {
const messagePact = new MessageConsumerPact({
consumer: 'MyJSMessageConsumer',
dir: path.resolve(process.cwd(), 'pacts'),
// dir: path.resolve(process.cwd(), 'pacts'),
pactfileWriteMode: 'update',
provider: 'MyJSMessageProvider',
logLevel: 'info',
logLevel: 'debug',
});

describe('receive dog event', () => {
it('accepts a valid dog', () => {
return (
messagePact
.given('some state')
.given('a dog named drover')
.expectsToReceive('a request for a dog')
.withContent({
id: like(1),
name: like('drover'),
type: term({
generate: 'bulldog',
matcher: '^(bulldog|sheepdog)$',
}),
})
// TODO: this doesn't work at the moment, if verified by Pact JS
.withMetadata({
queue: 'animals',
})
.verify(synchronousBodyHandler(dogApiHandler))
);
});

it('accepts a valid dog scenario 2', () => {
return (
messagePact
.given('a dog named rover')
.expectsToReceive('a request for a dog')
.withContent({
id: like(1),
Expand All @@ -34,9 +55,9 @@ describe('Message consumer tests', () => {
}),
})
// TODO: this doesn't work at the moment, if verified by Pact JS
// .withMetadata({
// 'content-type': 'application/json',
// })
.withMetadata({
queue: 'animals',
})
.verify(synchronousBodyHandler(dogApiHandler))
);
});
Expand Down
10 changes: 7 additions & 3 deletions examples/messages/provider/message-provider.spec.ts
@@ -1,13 +1,17 @@
/* tslint:disable: no-console*/
import { MessageProviderPact } from '@pact-foundation/pact';
import {
MessageProviderPact,
providerWithMetadata,
} from '@pact-foundation/pact';
import { versionFromGitTag } from '@pact-foundation/absolute-version';
import path = require('path');
const { createDog } = require('./dog-client');

describe('Message provider tests', () => {
const p = new MessageProviderPact({
messageProviders: {
'a request for a dog': () => createDog(27),
'a request for a dog': providerWithMetadata(() => createDog(27), {
queue: 'animals',
}),
},
stateHandlers: {
'some state': () => {
Expand Down
2 changes: 1 addition & 1 deletion examples/v3/e2e/test/consumer.spec.js
Expand Up @@ -7,7 +7,7 @@ const {
MatchersV3,
XmlBuilder,
SpecificationVersion,
} = require('../../../../dist/v3');
} = require('@pact-foundation/pact');
const LOG_LEVEL = process.env.LOG_LEVEL || 'WARN';

chai.use(chaiAsPromised);
Expand Down

0 comments on commit 156886f

Please sign in to comment.