This package makes testing publications in Meteor easier and nicer.
Instead of resorting to exporting or exposing your publication functions for doing testing, this package lets you "subscribe" to a given publication and assert its returned results.
This package works on the server side and must be only imported on the server side.
meteor add johanbrook:publication-collector
// In a typical BDD style test suite:
describe('Publication', function() {
it('should publish 10 documents', function(done) {
// Pass user context in constructor.
const collector = new PublicationCollector({userId: Random.id()});
// Collect documents from a subscription with 'collect(name, [arguments...], [callback])'
collector.collect('publicationName', 'someArgument', (collections) => {
assert.equal(collections.myCollection.length, 10);
done();
});
});
});
An instance of PublicationCollector
also is an EventEmitter
, and emits a ready
event when the publication is marked as ready.
Run tests once with
npm test
Run tests in watch mode (in console) with
npm run test:dev
This project was originally a part of MDG's Todos example Meteor app, but later extracted as a separate test package.
Based on https://github.com/stubailo/meteor-rest/blob/devel/packages/rest/http-subscription.js.
1.0.7
- Fix compatibility withpeerlibrary:reactive-publish
's_isDeactivated
function in publications (#20, thanks @jaskinn!).1.0.6
- Fix an issue with "ready" event being emitted more than once (#16). Thanks @nkahnfr!1.0.5
- Fix an issue when publish handlers are using default arguments (#15). Thanks @dmihal!1.0.4
- Don't try to operate on a document that doesn't exist inchanged
callback. Thanks @zenweasel, from #13!1.0.3
- Fix compatibility withpeerlibrary:reactive-publish
package (bug #3), fixed in #10. Thanks @hexsprite!1.0.2
- Fix bug whereready()
wasn't called if there were no results from a publication handler.1.0.1
1.0.0
- First public release.
- Make tests pass.
- More docs.
- Support Promises.