@diotoborg/corrupti-beatae v6.8.107
@diotoborg/corrupti-beatae
Structured testing of seneca plugin messages.
Run Seneca messages in series (not parallel) to validate behavior against expectations.
Example
See example folder
Note
To use @hapi/joi
, require with:
const Joi = require('@diotoborg/corrupti-beatae').Joi
This ensures that the Joi versions match.
Test Specification
# file: test-spec.js
module.exports = {
print: true,
pattern: 'role:foo',
data: {
foo: {
bar: {
b0: { id: 'b0', b: 0 },
b1: { id: 'b1', b: 1 }
}
}
},
calls: [
{
// combined with top level pattern to form msg:
// role:foo,cmd:get,id:b0
pattern: 'cmd:get',
params: { id: 'b0' },
// output result must match this Optioner (Joi-based) structure
// https://github.com/rjrodger/optioner
out: { b: 0 }
},
{
// name a call to reference it later
name: 'list-0',
pattern: 'cmd:list',
params: {},
out: [{b: 0}, {b: 1}]
},
{
pattern: 'cmd:get',
// use https://github.com/rjrodger/inks back reference syntax
params: { id: '`list-0:out[1].id`' },
out: { b: 1 }
},
]
}
Test code
# basic.js
const Seneca = require('Seneca')
const SenecaMsgTest = require('..')
const seneca = Seneca().test()
// Test specification
const test_spec = require('./test-spec.js')
// Define some simplistic message actions
seneca
.use('promisify')
.use('entity')
.message('role:foo,cmd:get', async function(msg) {
return this.entity('foo/bar').load$(msg.id)
})
.message('role:foo,cmd:list', async function(msg) {
return this.entity('foo/bar').list$()
})
// Use this inside your testing code
const run_msgs = SenecaMsgTest(seneca, test_spec)
async function run_test() {
await run_msgs()
}
run_test()
Printed output (optional)
CALL : cmd:get { id: 'b0' }
ERROR : null
RESULT : $-/foo/bar;id=b0;{b:0}
CALL : cmd:list {}
ERROR : null
RESULT : [ $-/foo/bar;id=b0;{b:0}, $-/foo/bar;id=b1;{b:1} ]
CALL : cmd:get { id: 'b1' }
ERROR : null
RESULT : $-/foo/bar;id=b1;{b:1}
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago