ende 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. checksums.yaml +4 -4
  2. data/component.json +2 -2
  3. data/components/indefinido/indemma/master/component.json +27 -17
  4. data/components/indefinido/indemma/master/lib/record/associable.js +74 -75
  5. data/components/indefinido/indemma/master/lib/record/dirtyable.js +40 -0
  6. data/components/indefinido/indemma/master/lib/record/queryable.js +2 -2
  7. data/components/indefinido/indemma/master/lib/record/resource.js +1 -1
  8. data/components/indefinido/indemma/master/lib/record/rest.js +7 -2
  9. data/components/indefinido/indemma/master/lib/record/restfulable.js +37 -10
  10. data/components/indefinido/indemma/master/lib/record/scopable.js +20 -47
  11. data/components/indefinido/indemma/master/lib/record/storable.js +11 -0
  12. data/components/indefinido/indemma/master/lib/record/validatable.js +195 -1068
  13. data/components/indefinido/indemma/master/lib/record.js +1 -1
  14. data/components/indefinido/indemma/master/vendor/stampit.js +568 -242
  15. data/components/indefinido/observable/es6-modules/component.json +39 -0
  16. data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/lib/adapters/rivets.js +3 -1
  17. data/components/indefinido/observable/es6-modules/lib/legacy/notifierable.js +145 -0
  18. data/components/indefinido/observable/es6-modules/lib/legacy/schedulerable.js +114 -0
  19. data/components/indefinido/observable/es6-modules/lib/lookup.js +38 -0
  20. data/components/indefinido/observable/es6-modules/lib/observable/keypath_observer.js +38 -0
  21. data/components/indefinido/observable/es6-modules/lib/observable/observation.js +45 -0
  22. data/components/indefinido/observable/es6-modules/lib/observable/selection.js +57 -0
  23. data/components/indefinido/observable/es6-modules/lib/observable/self_observer.js +38 -0
  24. data/components/indefinido/observable/es6-modules/lib/observable.js +90 -0
  25. data/components/indefinido/observable/es6-modules/lib/platform.js +12 -0
  26. data/components/indefinido/observable/es6-modules/vendor/observe-js/observe.js +1631 -0
  27. data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/accessors.js +85 -10
  28. data/lib/assets/javascripts/aura/extensions/rivets.js.coffee +1 -1
  29. data/lib/ende/version.rb +1 -1
  30. data/vendor/assets/components/ende_build.js +18379 -26828
  31. metadata +20 -128
  32. data/components/indefinido/indemma/master/.gitignore +0 -17
  33. data/components/indefinido/indemma/master/.ruby-gemset +0 -1
  34. data/components/indefinido/indemma/master/.ruby-version +0 -1
  35. data/components/indefinido/indemma/master/Gemfile +0 -13
  36. data/components/indefinido/indemma/master/Guardfile +0 -39
  37. data/components/indefinido/indemma/master/History.md +0 -0
  38. data/components/indefinido/indemma/master/Readme.md +0 -447
  39. data/components/indefinido/indemma/master/build/build.js +0 -26288
  40. data/components/indefinido/indemma/master/build/development.js +0 -22200
  41. data/components/indefinido/indemma/master/build/release.js +0 -22139
  42. data/components/indefinido/indemma/master/build/test.js +0 -22200
  43. data/components/indefinido/indemma/master/components/chaijs-assertion-error/component.json +0 -18
  44. data/components/indefinido/indemma/master/components/chaijs-assertion-error/index.js +0 -110
  45. data/components/indefinido/indemma/master/components/chaijs-chai/component.json +0 -47
  46. data/components/indefinido/indemma/master/components/chaijs-chai/index.js +0 -1
  47. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/assertion.js +0 -130
  48. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/core/assertions.js +0 -1270
  49. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/interface/assert.js +0 -1080
  50. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/interface/expect.js +0 -12
  51. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/interface/should.js +0 -76
  52. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/addChainableMethod.js +0 -94
  53. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/addMethod.js +0 -37
  54. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/addProperty.js +0 -40
  55. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/eql.js +0 -129
  56. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/flag.js +0 -32
  57. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getActual.js +0 -19
  58. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getEnumerableProperties.js +0 -25
  59. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getMessage.js +0 -49
  60. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getName.js +0 -20
  61. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getPathValue.js +0 -102
  62. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getProperties.js +0 -35
  63. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/index.js +0 -108
  64. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/inspect.js +0 -320
  65. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/objDisplay.js +0 -48
  66. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/overwriteMethod.js +0 -51
  67. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/overwriteProperty.js +0 -54
  68. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/test.js +0 -26
  69. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/transferFlags.js +0 -44
  70. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/type.js +0 -45
  71. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai.js +0 -80
  72. data/components/indefinido/indemma/master/components/component-bind/component.json +0 -14
  73. data/components/indefinido/indemma/master/components/component-bind/index.js +0 -24
  74. data/components/indefinido/indemma/master/components/component-jquery/component.json +0 -14
  75. data/components/indefinido/indemma/master/components/component-jquery/index.js +0 -9601
  76. data/components/indefinido/indemma/master/components/component-type/component.json +0 -18
  77. data/components/indefinido/indemma/master/components/component-type/index.js +0 -32
  78. data/components/indefinido/indemma/master/components/indefinido-advisable/component.json +0 -21
  79. data/components/indefinido/indemma/master/components/indefinido-advisable/index.js +0 -1
  80. data/components/indefinido/indemma/master/components/indefinido-advisable/lib/advisable.js +0 -60
  81. data/components/indefinido/indemma/master/components/indefinido-observable/component.json +0 -25
  82. data/components/indefinido/indemma/master/components/indefinido-observable/components/cjohansen-sinon/sinon.js +0 -4290
  83. data/components/indefinido/indemma/master/components/indefinido-observable/lib/observable.js +0 -323
  84. data/components/indefinido/indemma/master/components/kapit-observe-utils/component.json +0 -13
  85. data/components/indefinido/indemma/master/components/paulmillr-es6-shim/component.json +0 -17
  86. data/components/indefinido/indemma/master/components/paulmillr-es6-shim/es6-shim.js +0 -996
  87. data/components/indefinido/indemma/master/components/pluma-assimilate/component.json +0 -25
  88. data/components/indefinido/indemma/master/components/pluma-assimilate/dist/assimilate.js +0 -127
  89. data/components/indefinido/indemma/master/karma.conf.js +0 -76
  90. data/components/indefinido/indemma/master/package.json +0 -9
  91. data/components/indefinido/indemma/master/spec/record/associable_spec.js +0 -137
  92. data/components/indefinido/indemma/master/spec/record/persistable_spec.js +0 -36
  93. data/components/indefinido/indemma/master/spec/record/queryable_spec.js +0 -33
  94. data/components/indefinido/indemma/master/spec/record/resource_spec.js +0 -93
  95. data/components/indefinido/indemma/master/spec/record/rest_spec.js +0 -32
  96. data/components/indefinido/indemma/master/spec/record/restfulable_spec.js +0 -300
  97. data/components/indefinido/indemma/master/spec/record/scopable_spec.js +0 -212
  98. data/components/indefinido/indemma/master/spec/record/storable_spec.js +0 -53
  99. data/components/indefinido/indemma/master/spec/record/translationable.js +0 -28
  100. data/components/indefinido/indemma/master/spec/record/validatable_spec.js +0 -111
  101. data/components/indefinido/indemma/master/spec/record/validations/associated_spec.js +0 -43
  102. data/components/indefinido/indemma/master/spec/record/validations/confirmation_spec.js +0 -36
  103. data/components/indefinido/indemma/master/spec/record/validations/cpf_spec.js +0 -35
  104. data/components/indefinido/indemma/master/spec/record/validations/presence_spec.js +0 -28
  105. data/components/indefinido/indemma/master/spec/record/validations/remote_spec.js +0 -87
  106. data/components/indefinido/indemma/master/spec/record/validations/type_spec.js +0 -48
  107. data/components/indefinido/indemma/master/spec/record_spec.js +0 -37
  108. data/components/indefinido/indemma/master/spec/spec_helper.js +0 -11
  109. data/components/indefinido/indemma/master/spec/support/value_objects/phone.js +0 -45
  110. data/components/indefinido/indemma/master/src/lib/extensions/rivets.coffee +0 -17
  111. data/components/indefinido/indemma/master/src/lib/record/associable.coffee +0 -380
  112. data/components/indefinido/indemma/master/src/lib/record/errors.coffee +0 -20
  113. data/components/indefinido/indemma/master/src/lib/record/maid.coffee +0 -16
  114. data/components/indefinido/indemma/master/src/lib/record/persistable.coffee +0 -32
  115. data/components/indefinido/indemma/master/src/lib/record/queryable.coffee +0 -30
  116. data/components/indefinido/indemma/master/src/lib/record/resource.coffee +0 -106
  117. data/components/indefinido/indemma/master/src/lib/record/rest.coffee +0 -28
  118. data/components/indefinido/indemma/master/src/lib/record/restfulable.coffee +0 -447
  119. data/components/indefinido/indemma/master/src/lib/record/scopable.coffee +0 -294
  120. data/components/indefinido/indemma/master/src/lib/record/storable.coffee +0 -46
  121. data/components/indefinido/indemma/master/src/lib/record/translationable.coffee +0 -18
  122. data/components/indefinido/indemma/master/src/lib/record/validatable.coffee +0 -207
  123. data/components/indefinido/indemma/master/src/lib/record/validations/associated.coffee +0 -30
  124. data/components/indefinido/indemma/master/src/lib/record/validations/confirmation.coffee +0 -17
  125. data/components/indefinido/indemma/master/src/lib/record/validations/cpf.coffee +0 -57
  126. data/components/indefinido/indemma/master/src/lib/record/validations/presence.coffee +0 -16
  127. data/components/indefinido/indemma/master/src/lib/record/validations/remote.coffee +0 -61
  128. data/components/indefinido/indemma/master/src/lib/record/validations/type.coffee +0 -31
  129. data/components/indefinido/indemma/master/src/lib/record/validations/validatorable.coffee +0 -5
  130. data/components/indefinido/indemma/master/src/lib/record.coffee +0 -138
  131. data/components/indefinido/indemma/master/src/spec/record/associable_spec.coffee +0 -130
  132. data/components/indefinido/indemma/master/src/spec/record/persistable_spec.coffee +0 -30
  133. data/components/indefinido/indemma/master/src/spec/record/queryable_spec.coffee +0 -27
  134. data/components/indefinido/indemma/master/src/spec/record/resource_spec.coffee +0 -69
  135. data/components/indefinido/indemma/master/src/spec/record/rest_spec.coffee +0 -22
  136. data/components/indefinido/indemma/master/src/spec/record/restfulable_spec.coffee +0 -215
  137. data/components/indefinido/indemma/master/src/spec/record/scopable_spec.coffee +0 -191
  138. data/components/indefinido/indemma/master/src/spec/record/storable_spec.coffee +0 -40
  139. data/components/indefinido/indemma/master/src/spec/record/translationable.coffee +0 -19
  140. data/components/indefinido/indemma/master/src/spec/record/validatable_spec.coffee +0 -100
  141. data/components/indefinido/indemma/master/src/spec/record/validations/associated_spec.coffee +0 -35
  142. data/components/indefinido/indemma/master/src/spec/record/validations/confirmation_spec.coffee +0 -25
  143. data/components/indefinido/indemma/master/src/spec/record/validations/cpf_spec.coffee +0 -28
  144. data/components/indefinido/indemma/master/src/spec/record/validations/presence_spec.coffee +0 -24
  145. data/components/indefinido/indemma/master/src/spec/record/validations/remote_spec.coffee +0 -74
  146. data/components/indefinido/indemma/master/src/spec/record/validations/type_spec.coffee +0 -33
  147. data/components/indefinido/indemma/master/src/spec/record_spec.coffee +0 -23
  148. data/components/indefinido/indemma/master/src/spec/spec_helper.coffee +0 -9
  149. data/components/indefinido/indemma/master/src/spec/support/value_objects/phone.coffee +0 -30
  150. data/components/indefinido/indemma/master/vendor/object/mixin.js +0 -196
  151. data/components/indefinido/indemma/master/vendor/sinon.js +0 -4290
  152. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/index.js +0 -0
  153. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/accessors-legacy.js +0 -0
  154. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/array.indexOf.js +0 -0
  155. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/object.create.js +0 -0
@@ -1,300 +0,0 @@
1
- var jQuery, model, record, root, should_behave_like_errorsable;
2
-
3
- require('indemma/lib/record/restfulable');
4
-
5
- require('indemma/lib/record/validatable');
6
-
7
- require('indemma/lib/record/resource');
8
-
9
- 'use strict';
10
-
11
- root = typeof exports !== "undefined" && exports !== null ? exports : window;
12
-
13
- model = root.model;
14
-
15
- record = root.record;
16
-
17
- jQuery = require('component-jquery');
18
-
19
- should_behave_like_errorsable = function() {
20
- return describe('.errors', function() {
21
- return describe('when server responds', function() {
22
- beforeEach(function() {
23
- return this.xhr = {
24
- status: 422
25
- };
26
- });
27
- describe('with errors', function() {
28
- it('should add messages for each attribute on the errors object');
29
- return it('should add messages for base attribute on the errors object', function() {
30
- var base_messages;
31
-
32
- base_messages = ["arthur you should bring a towel!"];
33
- this.xhr.responseText = JSON.stringify({
34
- errors: {
35
- base: base_messages
36
- }
37
- });
38
- this.subject.failed(this.xhr, 'error');
39
- this.subject.should.have.property('errors');
40
- this.subject.errors[0].should.include('base', 'server', {
41
- server_message: base_messages[0]
42
- });
43
- return this.subject.errors.messages.should.have.property('base', base_messages[0]);
44
- });
45
- });
46
- return describe('with invalid error messages', function() {
47
- return it('when inexistent attribute should throw exception', function() {});
48
- });
49
- });
50
- });
51
- };
52
-
53
- describe('restfulable', function() {
54
- describe('when included', function() {
55
- return it('sets te restufulable loaded flag on model', function() {
56
- return model.restfulable.should.be["true"];
57
- });
58
- });
59
- describe('record', function() {
60
- var arthur;
61
-
62
- arthur = null;
63
- return describe('()', function() {
64
- beforeEach(function() {
65
- this.arthur = arthur = record.call({
66
- resource: 'person',
67
- name: 'Arthur Philip Dent'
68
- });
69
- return this.arthur.dirty = true;
70
- });
71
- return describe('.save()', function() {
72
- beforeEach(function() {
73
- return sinon.stub(jQuery, "ajax").returns(jQuery.Deferred());
74
- });
75
- afterEach(function() {
76
- return jQuery.ajax.restore();
77
- });
78
- it('should be able to serialize record', function() {
79
- return JSON.stringify(arthur.json());
80
- });
81
- it('should ignore key in transient fields');
82
- it('should send paramenters accordingly');
83
- return it('should make ajax call', function() {
84
- arthur.save();
85
- return jQuery.ajax.called.should.be["true"];
86
- });
87
- });
88
- });
89
- });
90
- return describe('model', function() {
91
- return describe('()', function() {
92
- describe('.json()', function() {
93
- var friend, person;
94
-
95
- friend = person = null;
96
- return beforeEach(function() {
97
- person = model.call({
98
- resource: 'person',
99
- has_many: 'friends',
100
- nested_attributes: ['friends'],
101
- name: String
102
- });
103
- return friend = model.call({
104
- resource: 'friend',
105
- belongs_to: 'person'
106
- });
107
- });
108
- });
109
- describe('.assign_attributes()', function() {
110
- var friend, person;
111
-
112
- friend = person = null;
113
- beforeEach(function() {
114
- person = model.call({
115
- resource: 'person',
116
- has_many: 'friends',
117
- name: String
118
- });
119
- return friend = model.call({
120
- resource: 'friend',
121
- belongs_to: 'person'
122
- });
123
- });
124
- it('should not assign attribute with the same value twice', function() {
125
- var arthur, object;
126
-
127
- object = {};
128
- arthur = person({
129
- name: object
130
- });
131
- arthur.assign_attributes({
132
- name: {}
133
- });
134
- return arthur.name.should.not.be.eq(object);
135
- });
136
- return it('assigns associations properly', function() {
137
- var arthur, attributes, ford, marvin, search_record;
138
-
139
- arthur = person({
140
- name: 'Arthur Dent'
141
- });
142
- ford = friend({
143
- name: 'Ford Perfect'
144
- });
145
- marvin = friend({
146
- name: 'Marvin'
147
- });
148
- attributes = {
149
- friends: [ford, marvin]
150
- };
151
- arthur.assign_attributes(attributes);
152
- search_record = function(association, search) {
153
- var associated, _i, _len;
154
-
155
- search = JSON.stringify(search.json());
156
- for (_i = 0, _len = association.length; _i < _len; _i++) {
157
- associated = association[_i];
158
- associated = JSON.stringify(associated.json());
159
- if (associated === search) {
160
- return true;
161
- }
162
- }
163
- return false;
164
- };
165
- search_record(arthur.friends, ford).should.be.eq["true"];
166
- return search_record(arthur.friends, arthur).should.be.eq["true"];
167
- });
168
- });
169
- describe('with singular resource', function() {
170
- return describe('.create()', function() {
171
- it('should return promises');
172
- return it('should return models when promise is resolved');
173
- });
174
- });
175
- describe('with plural resource', function() {
176
- return describe('.create()', function() {
177
- var deferred, person, promise;
178
-
179
- deferred = promise = person = null;
180
- should_behave_like_errorsable();
181
- beforeEach(function() {
182
- var context;
183
-
184
- person = model.call({
185
- resource: 'person'
186
- });
187
- deferred = jQuery.Deferred();
188
- this.subject = context = person({
189
- name: 'Arthur'
190
- });
191
- context.lock = JSON.stringify(context.json());
192
- deferred.resolveWith(context, [
193
- {
194
- _id: 1,
195
- name: 'Arthur'
196
- }
197
- ]);
198
- deferred.resolveWith(person({
199
- name: 'Arthur'
200
- }), [
201
- {
202
- _id: 1,
203
- name: 'Arthur'
204
- }
205
- ]);
206
- sinon.stub(jQuery, "ajax").returns(deferred);
207
- return promise = person.create({
208
- name: 'Arthur'
209
- }, {
210
- name: 'Ford'
211
- });
212
- });
213
- afterEach(function() {
214
- return jQuery.ajax.restore();
215
- });
216
- it('should return a promise', function(done) {
217
- promise.done.should.be["function"];
218
- promise.state().should.be.eq('resolved');
219
- return promise.done(function() {
220
- return done();
221
- }).should.be.eq('resolved');
222
- });
223
- it('should return models when promise is resolved', function(done) {
224
- var created;
225
-
226
- created = function() {
227
- this.name.should.be.eq('Arthur');
228
- return done();
229
- };
230
- return person.create({
231
- name: 'Arthur'
232
- }, {
233
- name: 'Ford'
234
- }, created);
235
- });
236
- it('should optionally accept create callback', function(done) {
237
- promise = person.create({
238
- name: 'Arthur'
239
- }, {
240
- name: 'Ford'
241
- });
242
- promise.done.should.be["function"];
243
- promise.done(function() {
244
- return done();
245
- });
246
- return promise.state().should.be.eq('resolved');
247
- });
248
- it('should create record when only callback is passed', function(done) {
249
- person.create(function() {
250
- return done();
251
- });
252
- return jQuery.ajax.callCount.should.be.eq(3);
253
- });
254
- it('should throw exception when nothing is passed', function() {
255
- return expect(person.create).to["throw"](TypeError);
256
- });
257
- return it('should make ajax calls', function() {
258
- return jQuery.ajax.callCount.should.be.eq(3);
259
- });
260
- });
261
- });
262
- return describe('.destroy()', function() {
263
- return describe('with plural resource', function() {
264
- var arthur, deferred, person;
265
-
266
- arthur = person = deferred = null;
267
- beforeEach(function() {
268
- person = model.call({
269
- resource: 'person'
270
- });
271
- deferred = jQuery.Deferred();
272
- deferred.resolveWith(person({
273
- name: 'Arthur'
274
- }), [
275
- {
276
- id: 1
277
- }
278
- ]);
279
- sinon.stub(jQuery, "ajax").returns(deferred);
280
- return arthur = person({
281
- name: 'Arthur',
282
- id: 1
283
- });
284
- });
285
- afterEach(function() {
286
- return jQuery.ajax.restore();
287
- });
288
- it("throw exception when record has no id", function() {
289
- delete arthur.id;
290
- return expect(arthur.destroy).to["throw"](Error);
291
- });
292
- return it("should make ajax calls", function() {
293
- arthur.destroy();
294
- return jQuery.ajax.callCount.should.be.eq(1);
295
- });
296
- });
297
- });
298
- });
299
- });
300
- });
@@ -1,212 +0,0 @@
1
- var model, record, root;
2
-
3
- require('indemma/lib/record/resource');
4
-
5
- require('indemma/lib/record/restfulable');
6
-
7
- require('indemma/lib/record/scopable');
8
-
9
- root = typeof exports !== "undefined" && exports !== null ? exports : window;
10
-
11
- model = root.model;
12
-
13
- record = root.record;
14
-
15
- describe('scopable', function() {
16
- describe('when included', function() {
17
- return it('sets te scopable loaded flag on model', function() {
18
- return model.scopable.should.be["true"];
19
- });
20
- });
21
- return describe('model', function() {
22
- return describe('#(options)', function() {
23
- var person;
24
-
25
- person = null;
26
- beforeEach(function() {
27
- return person = model.call({
28
- $hetero: true,
29
- $by_type: [],
30
- $by_name: String,
31
- resource: 'person'
32
- });
33
- });
34
- it('should add scope methods to model', function() {
35
- return person.none.should.be["function"];
36
- });
37
- it('should generate scope methods based on model definition', function() {
38
- return person.hetero.should.be["function"];
39
- });
40
- describe('#none', function() {
41
- return it('should return empty response on fetch calls', function(done) {
42
- return person.none().fetch(null, function(people) {
43
- people.length.should.be.empty;
44
- return done();
45
- });
46
- });
47
- });
48
- describe('scope', function() {
49
- return describe('#(name, type)', function() {
50
- return it('should add scope methods to model', function() {
51
- person.scope('bissexual', Boolean);
52
- return person.bissexual.should.be["function"];
53
- });
54
- });
55
- });
56
- return describe('#{generated_scope}', function() {
57
- var deferred;
58
-
59
- deferred = null;
60
- beforeEach(function() {
61
- deferred = jQuery.Deferred();
62
- sinon.stub(jQuery, "ajax").returns(deferred);
63
- return person.scope.clear();
64
- });
65
- afterEach(function() {
66
- return jQuery.ajax.restore();
67
- });
68
- describe('#all', function() {
69
- var promises;
70
-
71
- deferred = promises = person = null;
72
- return it('should return models when promise is resolved', function(done) {
73
- var fetched;
74
-
75
- fetched = function(people) {
76
- people.should.be.array;
77
- people[0].name.should.be.string;
78
- return done();
79
- };
80
- person.every(fetched);
81
- deferred.resolveWith(person, [
82
- [
83
- {
84
- name: 'Arthur'
85
- }, {
86
- name: 'Ford'
87
- }
88
- ]
89
- ]);
90
- return jQuery.ajax.callCount.should.be.eq(1);
91
- });
92
- });
93
- describe('when string', function() {
94
- it('should acumulate data in scope object', function() {
95
- person.by_name();
96
- return person.scope.data.by_name.should.be.a('string');
97
- });
98
- return it('should override data throught parameters', function() {
99
- person.by_name('Ford');
100
- return person.scope.data.by_name.should.be.eq('Ford');
101
- });
102
- });
103
- describe('when array', function() {
104
- it('should acumulate data in scope object', function() {
105
- person.by_type();
106
- return person.scope.data.by_type.should.be.a('array');
107
- });
108
- it('should override data throught parameters', function() {
109
- person.by_type(1, 2, 3);
110
- return person.scope.data.by_type.should.contain(1, 2, 3);
111
- });
112
- it('should use default value');
113
- it('should allow scope chaining');
114
- return describe('xhr request', function() {
115
- it('should build correct url', function() {
116
- var settings;
117
-
118
- person.by_type(1, 3, 4).fetch();
119
- settings = jQuery.ajax.firstCall.args[0];
120
- settings.should.have.property('data');
121
- settings.data.should.have.property('by_type');
122
- return settings.data.by_type.should.include(1, 3, 4);
123
- });
124
- return it('should make call', function() {
125
- person.by_type(1, 3, 4).fetch();
126
- return jQuery.ajax.callCount.should.be.eq(1);
127
- });
128
- });
129
- });
130
- describe('when boolean', function() {
131
- it('should acumulate data in scope object', function() {
132
- person.hetero();
133
- return person.scope.data.hetero.should.be.eq(true);
134
- });
135
- it('should override data throught parameters', function() {
136
- person.hetero(false);
137
- return person.scope.data.hetero.should.be.eq(false);
138
- });
139
- it('should allow scope chaining');
140
- return it('should make ajax call', function() {
141
- person.hetero().fetch();
142
- return jQuery.ajax.callCount.should.be.eq(1);
143
- });
144
- });
145
- return describe('#{generated_association}', function() {
146
- describe('of type belongs_to', function() {
147
- var towel;
148
-
149
- towel = null;
150
- beforeEach(function() {
151
- person = model.call({
152
- $hetero: true,
153
- $by_type: [],
154
- resource: 'person'
155
- });
156
- return towel = model.call({
157
- resource: 'towel',
158
- material: 'cotton',
159
- belongs_to: 'person'
160
- });
161
- });
162
- return describe('#{generated_scope}', function() {
163
- return it('can be called on association', function() {
164
- var soft_towel;
165
-
166
- soft_towel = towel({
167
- material: 'silicon microfiber'
168
- });
169
- soft_towel.build_person();
170
- return expect(soft_towel.person).to.respondTo('hetero');
171
- });
172
- });
173
- });
174
- return describe('of type has_many', function() {
175
- var arthur, towel;
176
-
177
- arthur = towel = null;
178
- beforeEach(function() {
179
- person = model.call({
180
- $hetero: true,
181
- $by_type: [],
182
- resource: 'person',
183
- has_many: 'towels'
184
- });
185
- towel = model.call({
186
- $by_material: [],
187
- resource: 'towel',
188
- material: 'cotton',
189
- belongs_to: 'person'
190
- });
191
- return arthur = person({
192
- name: 'Arthur'
193
- });
194
- });
195
- return describe('#{generated_scope}', function() {
196
- it('can be called on association', function() {
197
- return expect(arthur.towels).to.respondTo('by_material');
198
- });
199
- return it('should be serializable into paramenters', function() {
200
- var query_string;
201
-
202
- arthur.towels.by_material('cotton', 'microfiber');
203
- query_string = decodeURIComponent(jQuery.param(arthur.towels.scope.data));
204
- return query_string.should.be.eq('by_material[]=cotton&by_material[]=microfiber');
205
- });
206
- });
207
- });
208
- });
209
- });
210
- });
211
- });
212
- });
@@ -1,53 +0,0 @@
1
- var root, storable;
2
-
3
- root = typeof exports !== "undefined" && exports !== null ? exports : window;
4
-
5
- storable = require('indemma/lib/record/storable');
6
-
7
- describe('storable', function() {
8
- it('should set the storable key', function() {
9
- return model.should.have.property('storable', true);
10
- });
11
- beforeEach(function() {
12
- return this.storage = storable();
13
- });
14
- return describe("#store", function() {
15
- describe("write", function() {
16
- it("should write object on deep storage");
17
- it("should write object on storage", function() {
18
- var data;
19
-
20
- data = {
21
- name: 'Arthur Dent'
22
- };
23
- this.storage.store('1', data);
24
- this.storage.writes.should.be.eq(1);
25
- return this.storage.database['1'].should.be.eq(data);
26
- });
27
- return it("should mark an object as sustained", function() {
28
- var data;
29
-
30
- data = {
31
- name: 'Arthur Dent'
32
- };
33
- this.storage.store('1', data);
34
- return data.should.have.property('sustained', true);
35
- });
36
- });
37
- return describe("read", function() {
38
- var data;
39
-
40
- data = null;
41
- beforeEach(function() {
42
- data = {
43
- name: 'Arthur Dent'
44
- };
45
- return this.storage.store('1', data);
46
- });
47
- it("should save object on storage", function() {
48
- return this.storage.store('1').should.be.eq(data);
49
- });
50
- return it("should unmark an object as sustained");
51
- });
52
- });
53
- });
@@ -1,28 +0,0 @@
1
- var root;
2
-
3
- root = typeof exports !== "undefined" && exports !== null ? exports : window;
4
-
5
- require('indemma/lib/record/translationable');
6
-
7
- describe('model', function() {
8
- var model, person;
9
-
10
- model = root.model;
11
- person = null;
12
- beforeEach(function() {
13
- return person = model.call({
14
- resource: 'person',
15
- name: String,
16
- translation: {
17
- attributes: {
18
- name: 'Batata'
19
- }
20
- }
21
- });
22
- });
23
- return describe('#human_attribute_name', function() {
24
- return it('should return the translated attribute name', function() {
25
- return person.human_attribute_name('name').should.be.eq('Batata');
26
- });
27
- });
28
- });
@@ -1,111 +0,0 @@
1
- var root;
2
-
3
- root = typeof exports !== "undefined" && exports !== null ? exports : window;
4
-
5
- require('indemma/lib/record/validatable');
6
-
7
- describe('model', function() {
8
- var corporation, model, person;
9
-
10
- model = root.model;
11
- person = corporation = null;
12
- beforeEach(function() {
13
- return person = model.call({
14
- resource: 'person'
15
- });
16
- });
17
- it('should store validators', function() {
18
- person.should.have.property('validators');
19
- return person.validators.should.be.an('array');
20
- });
21
- return describe('(validates_... : ...)', function() {
22
- describe('validators instatiation', function() {
23
- it('should have validators', function() {
24
- var validator;
25
-
26
- person = model.call({
27
- resource: 'person',
28
- name: String,
29
- validates_presence_of: 'name'
30
- });
31
- person.validators.should.not.be.empty;
32
- validator = person.validators[0];
33
- return validator.should.have.property('attribute_name', 'name');
34
- });
35
- return it('should have validators with in the key validates');
36
- });
37
- describe('.validate_attribute()', function() {
38
- beforeEach(function() {
39
- person.validators.length = 0;
40
- return person = model.call({
41
- resource: 'person',
42
- name: String,
43
- validates_presence_of: 'name'
44
- });
45
- });
46
- return it('should add error messages for the validated attribute', function() {
47
- var arthur;
48
-
49
- arthur = person({
50
- name: null
51
- });
52
- arthur.validate_attribute('name');
53
- arthur.errors.length.should.be.eq(1);
54
- return arthur.errors.messages.should.have.property('name');
55
- });
56
- });
57
- return describe('.valid', function() {
58
- person = null;
59
- beforeEach(function() {
60
- person.validators.length = 0;
61
- return person = model.call({
62
- resource: 'person',
63
- name: String,
64
- validates_presence_of: 'name'
65
- });
66
- });
67
- it('should be true when valid', function() {
68
- var arthur;
69
-
70
- arthur = person({
71
- name: "Arthur"
72
- });
73
- arthur.should.have.property('valid');
74
- arthur.valid.should.be["true"];
75
- return arthur.errors.length.should.be.eq(0);
76
- });
77
- it('should exist as read only property', function() {
78
- var arthur;
79
-
80
- arthur = person({
81
- name: "Arthur"
82
- });
83
- return expect(function() {
84
- return arthur.valid = false;
85
- }).to["throw"](Error);
86
- });
87
- it('should validate record', function() {
88
- var anonymous;
89
-
90
- anonymous = person({
91
- name: null
92
- });
93
- anonymous.valid.should.be["false"];
94
- return anonymous.errors.length.should.be.eq(1);
95
- });
96
- return it('should not validate record util it changes', function() {
97
- var anonymous, validation;
98
-
99
- anonymous = person({
100
- name: null
101
- });
102
- anonymous.valid.should.be["false"];
103
- anonymous.errors.length.should.be.eq(1);
104
- validation = anonymous.validation;
105
- anonymous.validate().should.be.eq(validation);
106
- anonymous.dirty = true;
107
- return anonymous.validate().should.not.be.eq(validation);
108
- });
109
- });
110
- });
111
- });