summaryrefslogtreecommitdiffstats
path: root/packages/kadira-flow-router/test/client/router.subs_ready.spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/kadira-flow-router/test/client/router.subs_ready.spec.js')
-rw-r--r--packages/kadira-flow-router/test/client/router.subs_ready.spec.js225
1 files changed, 225 insertions, 0 deletions
diff --git a/packages/kadira-flow-router/test/client/router.subs_ready.spec.js b/packages/kadira-flow-router/test/client/router.subs_ready.spec.js
new file mode 100644
index 00000000..8a20077a
--- /dev/null
+++ b/packages/kadira-flow-router/test/client/router.subs_ready.spec.js
@@ -0,0 +1,225 @@
+Tinytest.addAsync('Client - Router - subsReady - with no args - all subscriptions ready', function (test, next) {
+ var rand = Random.id();
+ FlowRouter.route('/' + rand, {
+ subscriptions: function(params) {
+ this.register('bar', Meteor.subscribe('bar'));
+ this.register('foo', Meteor.subscribe('foo'));
+ }
+ });
+
+ FlowRouter.subscriptions = function () {
+ this.register('baz', Meteor.subscribe('baz'));
+ };
+
+ FlowRouter.go('/' + rand);
+
+ Tracker.autorun(function(c) {
+ if(FlowRouter.subsReady()) {
+ FlowRouter.subscriptions = Function.prototype;
+ next();
+ c.stop();
+ }
+ });
+});
+
+Tinytest.addAsync('Client - Router - subsReady - with no args - all subscriptions does not ready', function (test, next) {
+ var rand = Random.id();
+ FlowRouter.route('/' + rand, {
+ subscriptions: function(params) {
+ this.register('fooNotReady', Meteor.subscribe('fooNotReady'));
+ }
+ });
+
+ FlowRouter.subscriptions = function () {
+ this.register('bazNotReady', Meteor.subscribe('bazNotReady'));
+ };
+
+ FlowRouter.go('/' + rand);
+ setTimeout(function() {
+ test.isTrue(!FlowRouter.subsReady());
+ FlowRouter.subscriptions = Function.prototype;
+ next();
+ }, 100);
+});
+
+Tinytest.addAsync('Client - Router - subsReady - with no args - global subscriptions does not ready', function (test, next) {
+ var rand = Random.id();
+ FlowRouter.route('/' + rand, {
+ subscriptions: function(params) {
+ this.register('bar', Meteor.subscribe('bar'));
+ this.register('foo', Meteor.subscribe('foo'));
+ }
+ });
+
+ FlowRouter.subscriptions = function () {
+ this.register('bazNotReady', Meteor.subscribe('bazNotReady'));
+ };
+
+ FlowRouter.go('/' + rand);
+ setTimeout(function() {
+ test.isTrue(!FlowRouter.subsReady());
+ FlowRouter.subscriptions = Function.prototype;
+ next();
+ }, 100);
+});
+
+Tinytest.addAsync('Client - Router - subsReady - with no args - current subscriptions does not ready', function (test, next) {
+ var rand = Random.id();
+ FlowRouter.route('/' + rand, {
+ subscriptions: function(params) {
+ this.register('bar', Meteor.subscribe('bar'));
+ this.register('fooNotReady', Meteor.subscribe('fooNotReady'));
+ }
+ });
+
+ FlowRouter.subscriptions = function () {
+ this.register('baz', Meteor.subscribe('baz'));
+ };
+
+ FlowRouter.go('/' + rand);
+ setTimeout(function() {
+ test.isTrue(!FlowRouter.subsReady());
+ FlowRouter.subscriptions = Function.prototype;
+ next();
+ }, 100);
+});
+
+Tinytest.addAsync('Client - Router - subsReady - with args - all subscriptions ready', function (test, next) {
+ var rand = Random.id();
+ FlowRouter.route('/' + rand, {
+ subscriptions: function(params) {
+ this.register('bar', Meteor.subscribe('bar'));
+ this.register('foo', Meteor.subscribe('foo'));
+ }
+ });
+
+ FlowRouter.subscriptions = function () {
+ this.register('baz', Meteor.subscribe('baz'));
+ };
+
+ FlowRouter.go('/' + rand);
+ Tracker.autorun(function(c) {
+ if(FlowRouter.subsReady('foo', 'baz')) {
+ FlowRouter.subscriptions = Function.prototype;
+ next();
+ c.stop();
+ }
+ });
+});
+
+Tinytest.addAsync('Client - Router - subsReady - with args - all subscriptions does not ready', function (test, next) {
+ var rand = Random.id();
+ FlowRouter.route('/' + rand, {
+ subscriptions: function(params) {
+ this.register('fooNotReady', Meteor.subscribe('fooNotReady'));
+ }
+ });
+
+ FlowRouter.subscriptions = function () {
+ this.register('bazNotReady', Meteor.subscribe('bazNotReady'));
+ };
+
+ FlowRouter.go('/' + rand);
+ setTimeout(function() {
+ test.isTrue(!FlowRouter.subsReady('fooNotReady', 'bazNotReady'));
+ FlowRouter.subscriptions = Function.prototype;
+ next();
+ }, 100);
+});
+
+Tinytest.addAsync('Client - Router - subsReady - with args - global subscriptions does not ready', function (test, next) {
+ var rand = Random.id();
+ FlowRouter.route('/' + rand, {
+ subscriptions: function(params) {
+ this.register('bar', Meteor.subscribe('bar'));
+ this.register('foo', Meteor.subscribe('foo'));
+ }
+ });
+
+ FlowRouter.subscriptions = function () {
+ this.register('bazNotReady', Meteor.subscribe('bazNotReady'));
+ };
+
+ FlowRouter.go('/' + rand);
+ setTimeout(function() {
+ test.isTrue(!FlowRouter.subsReady('foo', 'bazNotReady'));
+ FlowRouter.subscriptions = Function.prototype;
+ next();
+ }, 100);
+});
+
+Tinytest.addAsync('Client - Router - subsReady - with args - current subscriptions does not ready', function (test, next) {
+ var rand = Random.id();
+ FlowRouter.route('/' + rand, {
+ subscriptions: function(params) {
+ this.register('bar', Meteor.subscribe('bar'));
+ this.register('fooNotReady', Meteor.subscribe('fooNotReady'));
+ }
+ });
+
+ FlowRouter.subscriptions = function () {
+ this.register('baz', Meteor.subscribe('baz'));
+ };
+
+ FlowRouter.go('/' + rand);
+ setTimeout(function() {
+ test.isTrue(!FlowRouter.subsReady('fooNotReady', 'baz'));
+ FlowRouter.subscriptions = Function.prototype;
+ next();
+ }, 100);
+});
+
+Tinytest.addAsync('Client - Router - subsReady - with args - subscribe with wrong name', function (test, next) {
+ var rand = Random.id();
+ FlowRouter.route('/' + rand, {
+ subscriptions: function(params) {
+ this.register('bar', Meteor.subscribe('bar'));
+ }
+ });
+
+ FlowRouter.subscriptions = function () {
+ this.register('baz', Meteor.subscribe('baz'));
+ };
+
+ FlowRouter.go('/' + rand);
+ setTimeout(function() {
+ test.isTrue(!FlowRouter.subsReady('baz', 'xxx', 'baz'));
+ FlowRouter.subscriptions = Function.prototype;
+ next();
+ }, 100);
+});
+
+Tinytest.addAsync('Client - Router - subsReady - with args - same route two different subs', function (test, next) {
+ var rand = Random.id();
+ var count = 0;
+ FlowRouter.route('/' + rand, {
+ subscriptions: function(params) {
+ if(++count == 1) {
+ this.register('not-exisitng', Meteor.subscribe('not-exisitng'));
+ }
+ }
+ });
+
+ FlowRouter.subscriptions = Function.prototype;
+ FlowRouter.go('/' + rand);
+ setTimeout(function() {
+ test.isFalse(FlowRouter.subsReady());
+ FlowRouter.go('/' + rand, {}, {param: "111"});
+ setTimeout(function() {
+ test.isTrue(FlowRouter.subsReady());
+ next();
+ }, 100)
+ }, 100);
+});
+
+Tinytest.addAsync('Client - Router - subsReady - no subscriptions - simple', function (test, next) {
+ var rand = Random.id();
+ FlowRouter.route('/' + rand, {});
+ FlowRouter.subscriptions = Function.prototype;
+
+ FlowRouter.go('/' + rand);
+ setTimeout(function() {
+ test.isTrue(FlowRouter.subsReady());
+ next();
+ }, 100);
+}); \ No newline at end of file