From 576a726cbd6a09d18520423d9aebd482a4004102 Mon Sep 17 00:00:00 2001 From: Tom Hombergs Date: Wed, 14 Nov 2018 22:49:31 +0100 Subject: [PATCH] refactoring --- pact/pact-node-messages/pact/publish.js | 1 - .../src/common/hero-created-event.js | 35 +++++++++++++++++++ .../src/common/hero-created-message.js | 35 ------------------- .../src/consumer/hero-event-handler.js | 22 ++++++------ .../src/consumer/hero-event-handler.spec.js | 4 +-- .../src/provider/hero-event-producer.js | 16 ++++----- .../src/provider/hero-event-producer.spec.js | 5 ++- 7 files changed, 58 insertions(+), 60 deletions(-) create mode 100644 pact/pact-node-messages/src/common/hero-created-event.js delete mode 100644 pact/pact-node-messages/src/common/hero-created-message.js diff --git a/pact/pact-node-messages/pact/publish.js b/pact/pact-node-messages/pact/publish.js index 54d6172..972d465 100644 --- a/pact/pact-node-messages/pact/publish.js +++ b/pact/pact-node-messages/pact/publish.js @@ -2,7 +2,6 @@ let publisher = require('@pact-foundation/pact-node'); let path = require('path'); let opts = { - providerBaseUrl: 'http://localhost:8080', pactFilesOrDirs: [path.resolve(process.cwd(), 'pacts')], pactBroker: 'https://adesso.pact.dius.com.au/', pactBrokerUsername: process.env.PACT_USERNAME, diff --git a/pact/pact-node-messages/src/common/hero-created-event.js b/pact/pact-node-messages/src/common/hero-created-event.js new file mode 100644 index 0000000..c352367 --- /dev/null +++ b/pact/pact-node-messages/src/common/hero-created-event.js @@ -0,0 +1,35 @@ +class HeroCreatedEvent { + + constructor(name, superpower, universe, id) { + this.id = id; + this.name = name; + this.superpower = superpower; + this.universe = universe; + } + + static validateUniverse(event) { + if (typeof event.universe !== 'string') { + throw new Error(`Hero universe must be a string! Invalid value: ${event.universe}`) + } + } + + static validateSuperpower(event) { + if (typeof event.superpower !== 'string') { + throw new Error(`Hero superpower must be a string! Invalid value: ${event.superpower}`) + } + } + + static validateName(event) { + if (typeof event.name !== 'string') { + throw new Error(`Hero name must be a string! Invalid value: ${event.name}`); + } + } + + static validateId(event) { + if (typeof event.id !== 'number') { + throw new Error(`Hero id must be a number! Invalid value: ${event.id}`) + } + } +} + +module.exports = HeroCreatedEvent; \ No newline at end of file diff --git a/pact/pact-node-messages/src/common/hero-created-message.js b/pact/pact-node-messages/src/common/hero-created-message.js deleted file mode 100644 index 9d1e5a3..0000000 --- a/pact/pact-node-messages/src/common/hero-created-message.js +++ /dev/null @@ -1,35 +0,0 @@ -class HeroCreatedMessage { - - constructor(name, superpower, universe, id) { - this.id = id; - this.name = name; - this.superpower = superpower; - this.universe = universe; - } - - static validateUniverse(message) { - if (typeof message.universe !== 'string') { - throw new Error(`Hero universe must be a string! Invalid value: ${message.universe}`) - } - } - - static validateSuperpower(message) { - if (typeof message.superpower !== 'string') { - throw new Error(`Hero superpower must be a string! Invalid value: ${message.superpower}`) - } - } - - static validateName(message) { - if (typeof message.name !== 'string') { - throw new Error(`Hero name must be a string! Invalid value: ${message.name}`); - } - } - - static validateId(message) { - if (typeof message.id !== 'number') { - throw new Error(`Hero id must be a number! Invalid value: ${message.id}`) - } - } -} - -module.exports = HeroCreatedMessage; \ No newline at end of file diff --git a/pact/pact-node-messages/src/consumer/hero-event-handler.js b/pact/pact-node-messages/src/consumer/hero-event-handler.js index cb31910..77f967c 100644 --- a/pact/pact-node-messages/src/consumer/hero-event-handler.js +++ b/pact/pact-node-messages/src/consumer/hero-event-handler.js @@ -1,15 +1,15 @@ -const HeroCreatedMessage = require('../common/hero-created-message'); +const HeroCreatedEvent = require('../common/hero-created-event'); -function handleHeroCreatedEvent(message) { +exports.HeroEventHandler = { + handleHeroCreatedEvent: (message) => { - HeroCreatedMessage.validateId(message); - HeroCreatedMessage.validateName(message); - HeroCreatedMessage.validateSuperpower(message); - HeroCreatedMessage.validateUniverse(message); + HeroCreatedEvent.validateId(message); + HeroCreatedEvent.validateName(message); + HeroCreatedEvent.validateSuperpower(message); + HeroCreatedEvent.validateUniverse(message); - // pass message into business logic - // note that the business logic should be mocked away for the contract test + // pass message into business logic + // note that the business logic should be mocked away for the contract test -} - -module.exports = handleHeroCreatedEvent; + } +}; diff --git a/pact/pact-node-messages/src/consumer/hero-event-handler.spec.js b/pact/pact-node-messages/src/consumer/hero-event-handler.spec.js index b0b4653..c11980b 100644 --- a/pact/pact-node-messages/src/consumer/hero-event-handler.spec.js +++ b/pact/pact-node-messages/src/consumer/hero-event-handler.spec.js @@ -1,5 +1,5 @@ const {MessageConsumerPact, Matchers, synchronousBodyHandler} = require('@pact-foundation/pact'); -const handleHeroCreatedEvent = require('./hero-event-handler'); +const {HeroEventHandler} = require('./hero-event-handler'); const path = require('path'); describe("message consumer", () => { @@ -26,7 +26,7 @@ describe("message consumer", () => { .withMetadata({ "content-type": "application/json", }) - .verify(synchronousBodyHandler(handleHeroCreatedEvent)) + .verify(synchronousBodyHandler(HeroEventHandler.handleHeroCreatedEvent)) .then(() => done(), (error) => done(error)); }).timeout(5000); diff --git a/pact/pact-node-messages/src/provider/hero-event-producer.js b/pact/pact-node-messages/src/provider/hero-event-producer.js index a96e87b..4554ed8 100644 --- a/pact/pact-node-messages/src/provider/hero-event-producer.js +++ b/pact/pact-node-messages/src/provider/hero-event-producer.js @@ -1,9 +1,9 @@ -const HeroCreatedMessage = require('../common/hero-created-message'); +const HeroCreatedEvent = require('../common/hero-created-event'); -function produceHeroCreatedEvent() { - return new Promise((resolve, reject) => { - resolve(new HeroCreatedMessage("Superman", "Flying", "DC", 42)); - }); -} - -module.exports = produceHeroCreatedEvent; \ No newline at end of file +exports.CreateHeroEventProducer = { + produceHeroCreatedEvent: () => { + return new Promise((resolve, reject) => { + resolve(new HeroCreatedEvent("Superman", "Flying", "DC", 42)); + }); + } +}; diff --git a/pact/pact-node-messages/src/provider/hero-event-producer.spec.js b/pact/pact-node-messages/src/provider/hero-event-producer.spec.js index 53bf911..e19a2de 100644 --- a/pact/pact-node-messages/src/provider/hero-event-producer.spec.js +++ b/pact/pact-node-messages/src/provider/hero-event-producer.spec.js @@ -1,12 +1,12 @@ const {MessageProviderPact} = require('@pact-foundation/pact'); -const produceHeroCreatedEvent = require('./hero-event-producer'); +const {CreateHeroEventProducer} = require('./hero-event-producer'); const path = require('path'); describe("message producer", () => { const messagePact = new MessageProviderPact({ messageProviders: { - "a hero created message": () => produceHeroCreatedEvent(), + "a hero created message": () => CreateHeroEventProducer.produceHeroCreatedEvent(), }, log: path.resolve(process.cwd(), "logs", "pact.log"), logLevel: "info", @@ -24,7 +24,6 @@ describe("message producer", () => { tags: ['latest'] }); - describe("'hero created' message producer", () => { it("should create a valid hero created message", (done) => {