misago.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import assert from 'assert';
  2. import { Misago } from 'misago/index';
  3. var misago = null;
  4. describe('Misago', function() {
  5. it("addInitializer registers new initializer", function() {
  6. misago = new Misago();
  7. misago.addInitializer({
  8. name: 'test',
  9. initializer: null
  10. });
  11. assert.equal(misago._initializers[0].key, 'test',
  12. "test initializer was registered");
  13. assert.equal(misago._initializers.length, 1,
  14. "addInitializer() registered single initializer in container");
  15. assert.equal(misago._initializers[0].key, 'test',
  16. "addInitializer() registered test initializer in container");
  17. });
  18. it("init() calls test initializer", function() {
  19. misago = new Misago();
  20. misago.addInitializer({
  21. name: 'test',
  22. initializer: function(misago) {
  23. assert.equal(misago, misago, "initializer was called with context");
  24. assert.equal(misago._context, 'tru', "context is preserved");
  25. }
  26. });
  27. misago.init('tru');
  28. });
  29. it("init() calls test initializers in order", function() {
  30. misago = new Misago();
  31. misago.addInitializer({
  32. name: 'carrot',
  33. initializer: function(misago) {
  34. assert.equal(misago._context.next, 'carrot',
  35. "first initializer was called in right order");
  36. misago._context.next = 'apple';
  37. },
  38. before: 'apple'
  39. });
  40. misago.addInitializer({
  41. name: 'apple',
  42. initializer: function(misago) {
  43. assert.equal(misago._context.next, 'apple',
  44. "second initializer was called in right order");
  45. misago._context.next = 'orange';
  46. }
  47. });
  48. misago.addInitializer({
  49. name: 'orange',
  50. initializer: function(misago) {
  51. assert.equal(misago._context.next, 'orange',
  52. "pen-ultimate initializer was called in right order");
  53. misago._context.next = 'banana';
  54. },
  55. before: '_end'
  56. });
  57. misago.addInitializer({
  58. name: 'banana',
  59. initializer: function(misago) {
  60. assert.equal(misago._context.next, 'banana',
  61. "ultimate initializer was called in right order");
  62. },
  63. after: 'orange'
  64. });
  65. misago.init({next: 'carrot'});
  66. });
  67. it("has() tests if context has value", function() {
  68. misago = new Misago();
  69. misago.init({valid: 'okay'});
  70. assert.equal(misago.has('invalid'), false,
  71. "has() returned false for nonexisting key");
  72. assert.equal(misago.has('valid'), true,
  73. "has() returned true for existing key");
  74. });
  75. it("get() allows access to context values", function() {
  76. misago = new Misago();
  77. misago.init({valid: 'okay'});
  78. assert.equal(misago.get('invalid'), undefined,
  79. "get() returned undefined for nonexisting key");
  80. assert.equal(misago.get('invalid', 'fallback'), 'fallback',
  81. "get() returned fallback value for nonexisting key");
  82. assert.equal(misago.get('valid'), 'okay',
  83. "get() returned value for existing key");
  84. assert.equal(misago.get('valid', 'fallback'), 'okay',
  85. "get() returned value for existing key instead of fallback");
  86. });
  87. it("pop() allows single time access to context values", function() {
  88. misago = new Misago();
  89. misago.init({valid: 'okay'});
  90. assert.equal(misago.pop('invalid'), undefined,
  91. "pop() returned undefined for nonexisting key");
  92. assert.equal(misago.pop('valid'), 'okay',
  93. "pop() returned value for existing key");
  94. assert.equal(misago.get('valid'), null,
  95. "get() returned null for popped value");
  96. });
  97. });