models.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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.id = data.id;
  34. this.name = data.name || 'Hello';
  35. };
  36. models.add('test-model', {
  37. class: TestModel
  38. });
  39. var model = models.new('test-model', {id: 123, name: 'Working!!!'});
  40. assert.equal(model.name, 'Working!!!',
  41. "new() returned model instance.");
  42. assert.deepEqual(model.id, '123',
  43. "new() coalesced model's id to string.");
  44. });
  45. QUnit.test("deserialize", function(assert) {
  46. var container = {};
  47. var models = service(container);
  48. var TestModel = function(data) {
  49. this.name = data.name;
  50. };
  51. var testModelDeserializer = function(data) {
  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. }());