ende 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,215 +0,0 @@
1
- require 'indemma/lib/record/restfulable'
2
- require 'indemma/lib/record/validatable'
3
- require 'indemma/lib/record/resource'
4
-
5
- 'use strict'
6
-
7
- root = exports ? window
8
-
9
- model = root.model # TODO model = require 'indemma/model'
10
- record = root.record # TODO model = require 'indemma/record'
11
- jQuery = require 'component-jquery'
12
-
13
-
14
- # Move to shared behaviour!
15
- should_behave_like_errorsable = ->
16
-
17
- describe '.errors', ->
18
- describe 'when server responds', ->
19
- beforeEach ->
20
- @xhr =
21
- status: 422
22
-
23
- describe 'with errors', ->
24
- it 'should add messages for each attribute on the errors object'
25
- it 'should add messages for base attribute on the errors object', ->
26
- base_messages = ["arthur you should bring a towel!"]
27
- @xhr.responseText = JSON.stringify
28
- errors:
29
- base: base_messages
30
-
31
- @subject.failed @xhr, 'error'
32
- @subject.should.have.property 'errors'
33
- @subject.errors[0].should.include 'base', 'server', server_message: base_messages[0]
34
- @subject.errors.messages.should.have.property 'base', base_messages[0]
35
-
36
- describe 'with invalid error messages', ->
37
- it 'when inexistent attribute should throw exception', ->
38
-
39
- describe 'restfulable', ->
40
-
41
- describe 'when included', ->
42
- it 'sets te restufulable loaded flag on model', ->
43
- model.restfulable.should.be.true
44
-
45
- # it 'adds save methods to records'
46
-
47
- describe 'record', ->
48
- # TODO Convert to @arthur
49
- arthur = null
50
-
51
- describe '()', ->
52
-
53
- beforeEach ->
54
- # TODO Convert to @arthur
55
- @arthur = arthur = record.call
56
- resource: 'person'
57
- name : 'Arthur Philip Dent'
58
-
59
- @arthur.dirty = true
60
-
61
- describe '.save()', ->
62
- beforeEach -> sinon.stub(jQuery, "ajax").returns(jQuery.Deferred())
63
- afterEach -> jQuery.ajax.restore()
64
-
65
- it 'should be able to serialize record', ->
66
- JSON.stringify arthur.json()
67
-
68
- it 'should ignore key in transient fields'
69
-
70
- it 'should send paramenters accordingly'
71
-
72
- # TODO erase this test and implement the above test (should
73
- # send paramenters accordingly)
74
- it 'should make ajax call', ->
75
- arthur.save()
76
- jQuery.ajax.called.should.be.true
77
-
78
- describe 'model' , ->
79
- describe '()', ->
80
- describe '.json()', ->
81
- friend = person = null
82
-
83
- beforeEach ->
84
- person = model.call
85
- resource: 'person'
86
- has_many: 'friends'
87
- nested_attributes: ['friends']
88
- name: String
89
-
90
- friend = model.call
91
- resource: 'friend'
92
- belongs_to: 'person'
93
-
94
- describe '.assign_attributes()', ->
95
- friend = person = null
96
-
97
- beforeEach ->
98
- person = model.call
99
- resource: 'person'
100
- has_many: 'friends'
101
- name: String
102
-
103
- friend = model.call
104
- resource: 'friend'
105
- belongs_to: 'person'
106
-
107
- # TODO implement setter on has many association and move this code to there
108
- it 'should not assign attribute with the same value twice', ->
109
- object = {}
110
-
111
- arthur = person name: object
112
- arthur.assign_attributes name: {}
113
-
114
- arthur.name.should.not.be.eq object
115
-
116
- it 'assigns associations properly', ->
117
- arthur = person name: 'Arthur Dent'
118
- ford = friend name: 'Ford Perfect'
119
- marvin = friend name: 'Marvin'
120
- attributes = friends: [ford, marvin]
121
-
122
- arthur.assign_attributes attributes
123
-
124
- search_record = (association, search) ->
125
- search = JSON.stringify search.json()
126
- for associated in association
127
- associated = JSON.stringify(associated.json())
128
- return true if associated == search
129
-
130
- false
131
-
132
- search_record(arthur.friends, ford).should.be.eq.true
133
- search_record(arthur.friends, arthur).should.be.eq.true
134
-
135
-
136
- describe 'with singular resource', ->
137
- describe '.create()', ->
138
-
139
- it 'should return promises'
140
- it 'should return models when promise is resolved'
141
-
142
- describe 'with plural resource', ->
143
-
144
- describe '.create()', ->
145
- deferred = promise = person = null
146
- should_behave_like_errorsable()
147
-
148
- beforeEach ->
149
- person = model.call resource: 'person'
150
- deferred = jQuery.Deferred()
151
-
152
- @subject = context = person(name: 'Arthur')
153
- context.lock = JSON.stringify context.json()
154
- deferred.resolveWith context, [_id: 1, name: 'Arthur']
155
-
156
- deferred.resolveWith person(name: 'Arthur'), [_id: 1, name: 'Arthur']
157
- sinon.stub(jQuery, "ajax").returns(deferred)
158
- promise = person.create {name: 'Arthur'}, {name: 'Ford'}
159
-
160
- afterEach -> jQuery.ajax.restore()
161
-
162
- # TODO move this test to restful test
163
- it 'should return a promise', (done) ->
164
- promise.done.should.be.function
165
- promise.state().should.be.eq 'resolved'
166
- promise.done(-> done()).should.be.eq 'resolved'
167
-
168
-
169
- it 'should return models when promise is resolved', (done) ->
170
- # Will be called once for each saved record
171
- created = ->
172
- @name.should.be.eq 'Arthur'
173
- done()
174
-
175
- person.create {name: 'Arthur'}, {name: 'Ford'}, created
176
-
177
- it 'should optionally accept create callback', (done) ->
178
- promise = person.create {name: 'Arthur'}, {name: 'Ford'}
179
- promise.done.should.be.function
180
- promise.done -> done()
181
- promise.state().should.be.eq 'resolved'
182
-
183
-
184
- it 'should create record when only callback is passed', (done) ->
185
- person.create -> done()
186
- jQuery.ajax.callCount.should.be.eq 3 # 2 is counts is from the beforeEach
187
-
188
- it 'should throw exception when nothing is passed', () ->
189
- expect(person.create).to.throw TypeError
190
-
191
- it 'should make ajax calls', ->
192
- jQuery.ajax.callCount.should.be.eq 3
193
-
194
-
195
- describe '.destroy()', ->
196
- describe 'with plural resource', ->
197
- arthur = person = deferred = null
198
-
199
- beforeEach ->
200
- person = model.call resource: 'person'
201
- deferred = jQuery.Deferred()
202
- deferred.resolveWith person(name: 'Arthur'), [id: 1]
203
- sinon.stub(jQuery, "ajax").returns(deferred)
204
- arthur = person name: 'Arthur', id: 1
205
-
206
- afterEach -> jQuery.ajax.restore()
207
-
208
- it "throw exception when record has no id", ->
209
- delete arthur.id
210
- expect(arthur.destroy).to.throw Error
211
-
212
-
213
- it "should make ajax calls", ->
214
- arthur.destroy()
215
- jQuery.ajax.callCount.should.be.eq 1
@@ -1,191 +0,0 @@
1
- require 'indemma/lib/record/resource'
2
- require 'indemma/lib/record/restfulable'
3
- require 'indemma/lib/record/scopable'
4
-
5
- root = exports ? window
6
-
7
- model = root.model # TODO model = require 'indemma/model'
8
- record = root.record # TODO model = require 'indemma/record'
9
-
10
- describe 'scopable', ->
11
-
12
- describe 'when included', ->
13
- it 'sets te scopable loaded flag on model', ->
14
- model.scopable.should.be.true
15
-
16
- # TODO check if it is better to create a queryable extension and
17
- # move finder methods there
18
- # it 'adds finder methods to records'
19
-
20
- describe 'model', ->
21
-
22
- describe '#(options)', ->
23
- person = null
24
-
25
- beforeEach ->
26
-
27
- person = model.call
28
- $hetero : true
29
- $by_type: []
30
- $by_name: String
31
- resource: 'person'
32
-
33
- it 'should add scope methods to model', ->
34
- person.none.should.be.function
35
-
36
- it 'should generate scope methods based on model definition', ->
37
- person.hetero.should.be.function
38
-
39
- describe '#none', ->
40
- it 'should return empty response on fetch calls', (done) ->
41
- # TODO implement getter for none property!
42
- person.none().fetch null, (people) ->
43
- people.length.should.be.empty
44
- done()
45
-
46
-
47
- describe 'scope', ->
48
-
49
- describe '#(name, type)', ->
50
-
51
- it 'should add scope methods to model', ->
52
- person.scope 'bissexual', Boolean
53
- person.bissexual.should.be.function
54
-
55
- describe '#{generated_scope}', ->
56
- deferred = null
57
-
58
- beforeEach ->
59
- deferred = jQuery.Deferred()
60
- sinon.stub(jQuery, "ajax").returns deferred
61
- person.scope.clear()
62
-
63
- afterEach -> jQuery.ajax.restore()
64
-
65
- describe '#all', ->
66
- deferred = promises = person = null
67
-
68
- it 'should return models when promise is resolved', (done) ->
69
-
70
- # Will be called once for each saved record
71
- fetched = (people) ->
72
- people.should.be.array
73
- people[0].name.should.be.string
74
- done()
75
-
76
- person.every fetched
77
-
78
- deferred.resolveWith person, [[{name: 'Arthur'}, {name: 'Ford'}]]
79
- jQuery.ajax.callCount.should.be.eq 1
80
-
81
-
82
- describe 'when string', ->
83
- it 'should acumulate data in scope object', ->
84
- person.by_name()
85
- person.scope.data.by_name.should.be.a 'string'
86
-
87
- it 'should override data throught parameters', ->
88
- person.by_name 'Ford'
89
- person.scope.data.by_name.should.be.eq 'Ford'
90
-
91
- describe 'when array', ->
92
- it 'should acumulate data in scope object', ->
93
- person.by_type()
94
- person.scope.data.by_type.should.be.a 'array'
95
-
96
- it 'should override data throught parameters', ->
97
- person.by_type 1, 2, 3
98
- person.scope.data.by_type.should.contain 1, 2, 3
99
-
100
- it 'should use default value'
101
- it 'should allow scope chaining'
102
-
103
- describe 'xhr request', ->
104
-
105
- it 'should build correct url', ->
106
- person.by_type(1, 3, 4).fetch()
107
-
108
- settings = jQuery.ajax.firstCall.args[0]
109
-
110
- settings.should.have.property 'data'
111
- settings.data.should.have.property 'by_type'
112
- settings.data.by_type.should.include 1, 3, 4
113
-
114
- it 'should make call', ->
115
- person.by_type(1, 3, 4).fetch()
116
- jQuery.ajax.callCount.should.be.eq 1
117
-
118
-
119
- describe 'when boolean', ->
120
-
121
- it 'should acumulate data in scope object', ->
122
- person.hetero()
123
- person.scope.data.hetero.should.be.eq true
124
-
125
- it 'should override data throught parameters', ->
126
- person.hetero false
127
- person.scope.data.hetero.should.be.eq false
128
-
129
- it 'should allow scope chaining'
130
-
131
- it 'should make ajax call', ->
132
- person.hetero().fetch()
133
- jQuery.ajax.callCount.should.be.eq 1
134
-
135
- describe '#{generated_association}', ->
136
-
137
- describe 'of type belongs_to', ->
138
- towel = null
139
-
140
- beforeEach ->
141
- person = model.call
142
- $hetero: true
143
- $by_type: []
144
- resource: 'person'
145
-
146
- towel = model.call
147
- resource: 'towel'
148
- material: 'cotton'
149
- belongs_to: 'person'
150
-
151
-
152
- describe '#{generated_scope}', ->
153
-
154
- it 'can be called on association', ->
155
- soft_towel = towel
156
- material: 'silicon microfiber'
157
-
158
- soft_towel.build_person()
159
-
160
- expect(soft_towel.person).to.respondTo 'hetero'
161
-
162
- describe 'of type has_many', ->
163
- arthur = towel = null
164
-
165
- beforeEach ->
166
- person = model.call
167
- $hetero: true
168
- $by_type: []
169
- resource: 'person'
170
- has_many: 'towels'
171
-
172
- towel = model.call
173
- $by_material: []
174
- resource: 'towel'
175
- material: 'cotton'
176
- belongs_to: 'person'
177
-
178
- arthur = person
179
- name: 'Arthur'
180
-
181
-
182
-
183
- describe '#{generated_scope}', ->
184
-
185
- it 'can be called on association', ->
186
- expect(arthur.towels).to.respondTo 'by_material'
187
-
188
- it 'should be serializable into paramenters', ->
189
- arthur.towels.by_material 'cotton', 'microfiber'
190
- query_string = decodeURIComponent(jQuery.param arthur.towels.scope.data)
191
- query_string.should.be.eq 'by_material[]=cotton&by_material[]=microfiber'
@@ -1,40 +0,0 @@
1
- root = exports ? window
2
-
3
- storable = require 'indemma/lib/record/storable'
4
-
5
- describe 'storable', ->
6
- it 'should set the storable key', ->
7
- model.should.have.property 'storable', true
8
-
9
- beforeEach ->
10
- @storage = storable()
11
-
12
- describe "#store", ->
13
-
14
- describe "write", ->
15
- it "should write object on deep storage"
16
- # storage.store 'users.1', data
17
-
18
- it "should write object on storage", ->
19
- data = name: 'Arthur Dent'
20
- @storage.store '1', data
21
- @storage.writes.should.be.eq 1
22
- @storage.database['1'].should.be.eq data
23
-
24
- it "should mark an object as sustained", ->
25
- data = name: 'Arthur Dent'
26
- @storage.store '1', data
27
- data.should.have.property 'sustained', true
28
-
29
-
30
- describe "read", ->
31
- data = null
32
-
33
- beforeEach ->
34
- data = name: 'Arthur Dent'
35
- @storage.store '1', data
36
-
37
- it "should save object on storage", ->
38
- @storage.store('1').should.be.eq data
39
-
40
- it "should unmark an object as sustained"
@@ -1,19 +0,0 @@
1
- root = exports ? window
2
-
3
- require 'indemma/lib/record/translationable'
4
-
5
- describe 'model', ->
6
- model = root.model
7
- person = null
8
-
9
- beforeEach ->
10
- person = model.call
11
- resource : 'person'
12
- name: String
13
- translation:
14
- attributes:
15
- name: 'Batata'
16
-
17
- describe '#human_attribute_name', ->
18
- it 'should return the translated attribute name', ->
19
- person.human_attribute_name('name').should.be.eq 'Batata'
@@ -1,100 +0,0 @@
1
- root = exports ? window
2
-
3
- require 'indemma/lib/record/validatable'
4
-
5
- describe 'model', ->
6
- model = root.model
7
- person = corporation = null
8
-
9
- beforeEach ->
10
- person = model.call resource : 'person'
11
-
12
- it 'should store validators', ->
13
- person.should.have.property 'validators'
14
- person.validators.should.be.an 'array'
15
-
16
- describe '(validates_... : ...)', ->
17
-
18
- describe 'validators instatiation', ->
19
-
20
- it 'should have validators', ->
21
- person = model.call
22
- resource : 'person'
23
- name : String
24
- validates_presence_of: 'name'
25
-
26
- person.validators.should.not.be.empty
27
- validator = person.validators[0]
28
- validator.should.have.property 'attribute_name', 'name'
29
-
30
- it 'should have validators with in the key validates'
31
- #person = model.call
32
- # resource : 'person'
33
- # name : String
34
- # validates : {name: {presence: true} }
35
-
36
- #person.validators.should.have.key 'name'
37
-
38
- describe '.validate_attribute()', ->
39
-
40
- beforeEach ->
41
- # TODO implement better model redefinition pattern
42
- person.validators.length = 0
43
-
44
- person = model.call
45
- resource : 'person'
46
- name : String
47
- validates_presence_of: 'name'
48
-
49
- it 'should add error messages for the validated attribute', ->
50
- arthur = person name: null
51
-
52
- arthur.validate_attribute 'name'
53
-
54
- arthur.errors.length.should.be.eq 1
55
- arthur.errors.messages.should.have.property 'name'
56
-
57
- describe '.valid', ->
58
- person = null
59
-
60
- beforeEach ->
61
- # TODO implement better model redefinition pattern
62
- person.validators.length = 0
63
-
64
- person = model.call
65
- resource : 'person'
66
- name : String
67
- validates_presence_of: 'name'
68
-
69
- # TODO more specific .valid test functionality
70
- it 'should be true when valid', ->
71
- arthur = person name: "Arthur"
72
-
73
- arthur.should.have.property 'valid'
74
- arthur.valid.should.be.true
75
- arthur.errors.length.should.be.eq 0
76
-
77
-
78
- it 'should exist as read only property', ->
79
- arthur = person name: "Arthur"
80
- expect(-> arthur.valid = false).to.throw Error
81
-
82
- it 'should validate record', ->
83
- anonymous = person name: null
84
- anonymous.valid.should.be.false
85
- anonymous.errors.length.should.be.eq 1
86
-
87
- it 'should not validate record util it changes', ->
88
- anonymous = person name: null
89
-
90
- anonymous.valid.should.be.false
91
- anonymous.errors.length.should.be.eq 1
92
-
93
- validation = anonymous.validation
94
- # We expect it to not instanitante new validation deferred
95
- anonymous.validate().should.be.eq validation
96
-
97
- # Record for some reason changed
98
- anonymous.dirty = true
99
- # We expect it to instanitante new validation deferred
100
- anonymous.validate().should.not.be.eq validation
@@ -1,35 +0,0 @@
1
- root = exports ? window
2
-
3
- require 'indemma/lib/record/validatable'
4
-
5
- describe 'model ( validates_associated: ... )', ->
6
-
7
- describe 'basic usage', ->
8
- model = root.model
9
- person = address = null
10
-
11
- beforeEach ->
12
- address = model.call
13
- resource : 'address'
14
- street : String
15
- validates_presence_of: 'street'
16
-
17
- person = model.call
18
- resource : 'person'
19
- has_one : 'address'
20
- validates_associated: 'address'
21
-
22
- afterEach ->
23
- person.validators.length = 0
24
- address.validators.length = 0
25
-
26
- describe '.validate()', ->
27
-
28
- it 'should add error to record when fields does not match', ->
29
- arthur = person {}
30
- arthur.build_address street: null
31
-
32
- arthur.valid
33
-
34
- arthur.errors.messages.should.have.deep.property 'address', 'O registro associado address não é válido.'
35
- arthur.address.errors.messages.should.have.deep.property 'street', 'O campo street não pode ficar em branco.'
@@ -1,25 +0,0 @@
1
- root = exports ? window
2
-
3
- require 'indemma/lib/record/validatable'
4
-
5
- describe 'model #() validates_confirmation_of', ->
6
-
7
- describe 'basic usage', ->
8
- model = root.model
9
- person = null
10
-
11
- beforeEach ->
12
- person = model.call
13
- resource : 'person'
14
- password : String
15
- validates_confirmation_of: 'password'
16
-
17
- afterEach ->
18
- person.validators.length = 0
19
-
20
- describe '#validate', ->
21
-
22
- it 'should add error to record when fields does not match', ->
23
- arthur = person password: "domo", password_confirmation: "kun"
24
- arthur.valid
25
- arthur.errors.messages.should.have.deep.property 'password_confirmation', 'O campo password não está de acordo com o campo password_confirmation.'
@@ -1,28 +0,0 @@
1
- root = exports ? window
2
-
3
- require 'indemma/lib/record/validatable'
4
-
5
- describe 'model #() validates_cpf_format', ->
6
-
7
- describe 'basic usage', ->
8
- model = root.model
9
- person = null
10
-
11
- beforeEach ->
12
- person = model.call
13
- resource : 'person'
14
- cpf : String
15
- validates_cpf_format: 'cpf'
16
-
17
- afterEach ->
18
- # Clear validators from resource
19
- person?.validators.length = 0
20
-
21
- describe '#validate', ->
22
-
23
- it 'should add error to record when fields is in invalid format', ->
24
- arthur = person cpf: '871.943.417-00'
25
- arthur.valid
26
-
27
- # TODO figure out why the heck the validators aren't being reset
28
- arthur.errors.messages.should.have.deep.property 'cpf', "O campo cpf não está válido."
@@ -1,24 +0,0 @@
1
- root = exports ? window
2
-
3
- require 'indemma/lib/record/validatable'
4
-
5
- describe 'model #() validates presence of', ->
6
-
7
- describe 'basic usage', ->
8
- model = root.model
9
- person = null
10
-
11
- beforeEach ->
12
- person = model.call
13
- resource : 'person'
14
- name : String
15
- belongs_to: 'corporation'
16
- validates_presence_of: 'name'
17
-
18
- afterEach ->
19
- person.validators.length = 0
20
-
21
- describe '#validate', ->
22
-
23
- it 'should add error to record when required field is empty (null, undefined or \'\')'
24
-