models.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. (function (Misago) {
  2. 'use strict';
  3. QUnit.module("Models");
  4. QUnit.test("service factory", function(assert) {
  5. var container = {};
  6. var service = getMisagoService('models');
  7. var models = service(container);
  8. assert.ok(models,
  9. "service factory has returned service instance.");
  10. });
  11. QUnit.test("add", function(assert) {
  12. var container = {};
  13. var service = getMisagoService('models');
  14. var models = service(container);
  15. var TestModel = function(data) {
  16. this.name = data.name || 'Hello';
  17. };
  18. var testModelDeserializer = function(data, models) {
  19. return data;
  20. };
  21. models.add('test-model', {
  22. class: TestModel,
  23. deserialize: testModelDeserializer
  24. });
  25. assert.equal(models.classes['test-model'], TestModel,
  26. "test model's class was registered in the service");
  27. assert.equal(models.deserializers['test-model'], testModelDeserializer,
  28. "test model's deserializer was registered in the service");
  29. });
  30. QUnit.test("new", function(assert) {
  31. var container = {};
  32. var service = getMisagoService('models');
  33. var models = service(container);
  34. var TestModel = function(data) {
  35. this.name = data.name || 'Hello';
  36. };
  37. models.add('test-model', {
  38. class: TestModel
  39. });
  40. var model = models.new('test-model', {name: 'Working!!!'});
  41. assert.equal(model.name, 'Working!!!',
  42. "new() returned model instance");
  43. });
  44. QUnit.test("deserialize", function(assert) {
  45. var container = {};
  46. var service = getMisagoService('models');
  47. var models = service(container);
  48. var TestModel = function(data) {
  49. this.name = data.name;
  50. };
  51. var testModelDeserializer = function(data, models) {
  52. data.name = data.title;
  53. return data;
  54. };
  55. models.add('test-model', {
  56. class: TestModel,
  57. deserialize: testModelDeserializer
  58. });
  59. var model = models.deserialize('test-model', {title: 'Testing!'});
  60. assert.equal(model.name, 'Testing!',
  61. "deserialize() returned deserialized model instance");
  62. models.add('other-model', {
  63. class: TestModel
  64. });
  65. model = models.deserialize('other-model', {name: 'Other!'});
  66. assert.equal(model.name, 'Other!',
  67. "deserialize() returned model instance without deserialization");
  68. });
  69. }(Misago.prototype));