refactoring

This commit is contained in:
Tom Hombergs
2018-11-14 22:49:31 +01:00
parent 027abc1271
commit 576a726cbd
7 changed files with 58 additions and 60 deletions

View File

@@ -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,

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;
}
};

View File

@@ -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);

View File

@@ -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;
exports.CreateHeroEventProducer = {
produceHeroCreatedEvent: () => {
return new Promise((resolve, reject) => {
resolve(new HeroCreatedEvent("Superman", "Flying", "DC", 42));
});
}
};

View File

@@ -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) => {