From 189b9dae74aa6381797feecca60d086749066862 Mon Sep 17 00:00:00 2001 From: Tom Chandler Date: Wed, 25 Jul 2018 14:51:03 -0400 Subject: [PATCH 1/2] Ensure meta$ properties are able to be updated each request --- packages/hemera/lib/extensions.js | 2 +- test/hemera/metadata.spec.js | 55 +++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/packages/hemera/lib/extensions.js b/packages/hemera/lib/extensions.js index 13cd9c669..d41d1305c 100644 --- a/packages/hemera/lib/extensions.js +++ b/packages/hemera/lib/extensions.js @@ -32,7 +32,7 @@ function onClientPreRequest(context, next) { context.context$ = pattern.context$ || parentContext.context$ // set metadata by passed pattern or current message context - context.meta$ = Object.assign(pattern.meta$ || {}, context.meta$) + Object.assign(context.meta$, pattern.meta$ || {}) // is only passed by msg context.delegate$ = pattern.delegate$ || {} diff --git a/test/hemera/metadata.spec.js b/test/hemera/metadata.spec.js index b46ee42c2..6abcf1b39 100644 --- a/test/hemera/metadata.spec.js +++ b/test/hemera/metadata.spec.js @@ -97,4 +97,59 @@ describe('Metadata', function() { ) }) }) + + it('Should be able to update metadata', function(done) { + const nats = require('nats').connect(authUrl) + + const hemera = new Hemera(nats, { + logLevel: 'silent' + }) + + hemera.ready(() => { + hemera.add( + { + topic: 'math', + cmd: 'sub' + }, + function(resp, cb) { + cb(null, { + result: resp.a - resp.b + }) + } + ) + + hemera.act( + { + topic: 'math', + cmd: 'sub', + a: 2, + b: 1, + meta$: { + a: 'test' + } + }, + function(err, resp) { + expect(err).to.be.not.exists() + expect(this.meta$.a).to.be.equals('test') + + this.act( + { + topic: 'math', + cmd: 'sub', + a: 1, + b: 2, + meta$: { + a: 'different' + } + }, + function(err, resp) { + expect(err).to.be.not.exists() + expect(this.meta$.a).to.be.equals('different') + hemera.close(done) + } + ) + } + ) + }) + }) }) From 4de1bc63db9aa720223f233731d8ac35ac4fb7af Mon Sep 17 00:00:00 2001 From: Tom Chandler Date: Wed, 25 Jul 2018 15:30:48 -0400 Subject: [PATCH 2/2] Rename test and simplify context assignment --- packages/hemera/lib/extensions.js | 2 +- test/hemera/metadata.spec.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/hemera/lib/extensions.js b/packages/hemera/lib/extensions.js index d41d1305c..1cc753ae0 100644 --- a/packages/hemera/lib/extensions.js +++ b/packages/hemera/lib/extensions.js @@ -32,7 +32,7 @@ function onClientPreRequest(context, next) { context.context$ = pattern.context$ || parentContext.context$ // set metadata by passed pattern or current message context - Object.assign(context.meta$, pattern.meta$ || {}) + Object.assign(context.meta$, pattern.meta$) // is only passed by msg context.delegate$ = pattern.delegate$ || {} diff --git a/test/hemera/metadata.spec.js b/test/hemera/metadata.spec.js index 6abcf1b39..3a5352185 100644 --- a/test/hemera/metadata.spec.js +++ b/test/hemera/metadata.spec.js @@ -98,7 +98,7 @@ describe('Metadata', function() { }) }) - it('Should be able to update metadata', function(done) { + it('Should set metadata context correctly when subsequent calls use different values for the same metadata properties', function(done) { const nats = require('nats').connect(authUrl) const hemera = new Hemera(nats, {