group.spec.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. Tinytest.add('Client - Group - validate path definition', function (test, next) {
  2. // path & prefix must start with '/'
  3. test.throws(function() {
  4. new Group(null, {prefix: Random.id()});
  5. });
  6. var group = FlowRouter.group({prefix: '/' + Random.id()});
  7. test.throws(function() {
  8. group.route(Random.id());
  9. });
  10. });
  11. Tinytest.addAsync('Client - Group - define and go to route with prefix', function (test, next) {
  12. var prefix = Random.id();
  13. var rand = Random.id();
  14. var rendered = 0;
  15. var group = FlowRouter.group({prefix: '/' + prefix});
  16. group.route('/' + rand, {
  17. action: function(_params) {
  18. rendered++;
  19. }
  20. });
  21. FlowRouter.go('/' + prefix + '/' + rand);
  22. setTimeout(function() {
  23. test.equal(rendered, 1);
  24. setTimeout(next, 100);
  25. }, 100);
  26. });
  27. Tinytest.addAsync('Client - Group - define and go to route without prefix', function (test, next) {
  28. var rand = Random.id();
  29. var rendered = 0;
  30. var group = FlowRouter.group();
  31. group.route('/' + rand, {
  32. action: function(_params) {
  33. rendered++;
  34. }
  35. });
  36. FlowRouter.go('/' + rand);
  37. setTimeout(function() {
  38. test.equal(rendered, 1);
  39. setTimeout(next, 100);
  40. }, 100);
  41. });
  42. Tinytest.addAsync('Client - Group - subscribe', function (test, next) {
  43. var rand = Random.id();
  44. var group = FlowRouter.group({
  45. subscriptions: function (params) {
  46. this.register('baz', Meteor.subscribe('baz'));
  47. }
  48. });
  49. group.route('/' + rand);
  50. FlowRouter.go('/' + rand);
  51. setTimeout(function() {
  52. test.isTrue(!!GetSub('baz'));
  53. next();
  54. }, 100);
  55. });
  56. Tinytest.addAsync('Client - Group - set and retrieve group name', function (test, next) {
  57. var rand = Random.id();
  58. var name = Random.id();
  59. var group = FlowRouter.group({
  60. name: name
  61. });
  62. group.route('/' + rand);
  63. FlowRouter.go('/' + rand);
  64. setTimeout(function() {
  65. test.isTrue(FlowRouter.current().route.group.name === name);
  66. next();
  67. }, 100);
  68. });
  69. Tinytest.add('Client - Group - expose group options on a route', function (test) {
  70. var pathDef = "/" + Random.id();
  71. var name = Random.id();
  72. var groupName = Random.id();
  73. var data = {aa: 10};
  74. var layout = 'blah';
  75. var group = FlowRouter.group({
  76. name: groupName,
  77. prefix: '/admin',
  78. layout: layout,
  79. someData: data
  80. });
  81. group.route(pathDef, {
  82. name: name
  83. });
  84. var route = FlowRouter._routesMap[name];
  85. test.equal(route.group.options.someData, data);
  86. test.equal(route.group.options.layout, layout);
  87. });