models.js 2.4 KB

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