Closed gajus closed 8 years ago
Thanks for the suggestion @gajus :) this seems like it may be more of a preference, and may be better left for implementation on a project by project basis. Another approach may be to have an object with tests and results and a single method
const steps = [
{
sql : 'BEGIN;'
},
{
test(query) => {
assert.is(query.bindings, [1, 2, 3]);
},
sql : 'select `blog`.* from `blog` where `id` in (?, ?, ?)',
expected : [
{
id: 1,
name: 'a'
},
{
id: 2,
name: 'b'
},
{
id: 3,
name: 'c'
}
]
},
{
sql : 'COMMIT;',
}
];
tracker.on('query', (query, step) => {
const runner = steps.shift();
if (runner.sql) {
assert.is(runner.sql, query.sql);
}
if (runner.test) {
runner.test(query);
}
query.response(runner.expected);
});
In the end there are a lot of ways to abstract these :)
True. Just a suggestion.
Example:
To be used as such: