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.
- checksums.yaml +4 -4
- data/component.json +2 -2
- data/components/indefinido/indemma/master/component.json +27 -17
- data/components/indefinido/indemma/master/lib/record/associable.js +74 -75
- data/components/indefinido/indemma/master/lib/record/dirtyable.js +40 -0
- data/components/indefinido/indemma/master/lib/record/queryable.js +2 -2
- data/components/indefinido/indemma/master/lib/record/resource.js +1 -1
- data/components/indefinido/indemma/master/lib/record/rest.js +7 -2
- data/components/indefinido/indemma/master/lib/record/restfulable.js +37 -10
- data/components/indefinido/indemma/master/lib/record/scopable.js +20 -47
- data/components/indefinido/indemma/master/lib/record/storable.js +11 -0
- data/components/indefinido/indemma/master/lib/record/validatable.js +195 -1068
- data/components/indefinido/indemma/master/lib/record.js +1 -1
- data/components/indefinido/indemma/master/vendor/stampit.js +568 -242
- data/components/indefinido/observable/es6-modules/component.json +39 -0
- data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/lib/adapters/rivets.js +3 -1
- data/components/indefinido/observable/es6-modules/lib/legacy/notifierable.js +145 -0
- data/components/indefinido/observable/es6-modules/lib/legacy/schedulerable.js +114 -0
- data/components/indefinido/observable/es6-modules/lib/lookup.js +38 -0
- data/components/indefinido/observable/es6-modules/lib/observable/keypath_observer.js +38 -0
- data/components/indefinido/observable/es6-modules/lib/observable/observation.js +45 -0
- data/components/indefinido/observable/es6-modules/lib/observable/selection.js +57 -0
- data/components/indefinido/observable/es6-modules/lib/observable/self_observer.js +38 -0
- data/components/indefinido/observable/es6-modules/lib/observable.js +90 -0
- data/components/indefinido/observable/es6-modules/lib/platform.js +12 -0
- data/components/indefinido/observable/es6-modules/vendor/observe-js/observe.js +1631 -0
- data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/accessors.js +85 -10
- data/lib/assets/javascripts/aura/extensions/rivets.js.coffee +1 -1
- data/lib/ende/version.rb +1 -1
- data/vendor/assets/components/ende_build.js +18379 -26828
- metadata +20 -128
- data/components/indefinido/indemma/master/.gitignore +0 -17
- data/components/indefinido/indemma/master/.ruby-gemset +0 -1
- data/components/indefinido/indemma/master/.ruby-version +0 -1
- data/components/indefinido/indemma/master/Gemfile +0 -13
- data/components/indefinido/indemma/master/Guardfile +0 -39
- data/components/indefinido/indemma/master/History.md +0 -0
- data/components/indefinido/indemma/master/Readme.md +0 -447
- data/components/indefinido/indemma/master/build/build.js +0 -26288
- data/components/indefinido/indemma/master/build/development.js +0 -22200
- data/components/indefinido/indemma/master/build/release.js +0 -22139
- data/components/indefinido/indemma/master/build/test.js +0 -22200
- data/components/indefinido/indemma/master/components/chaijs-assertion-error/component.json +0 -18
- data/components/indefinido/indemma/master/components/chaijs-assertion-error/index.js +0 -110
- data/components/indefinido/indemma/master/components/chaijs-chai/component.json +0 -47
- data/components/indefinido/indemma/master/components/chaijs-chai/index.js +0 -1
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/assertion.js +0 -130
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/core/assertions.js +0 -1270
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/interface/assert.js +0 -1080
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/interface/expect.js +0 -12
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/interface/should.js +0 -76
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/addChainableMethod.js +0 -94
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/addMethod.js +0 -37
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/addProperty.js +0 -40
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/eql.js +0 -129
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/flag.js +0 -32
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getActual.js +0 -19
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getEnumerableProperties.js +0 -25
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getMessage.js +0 -49
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getName.js +0 -20
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getPathValue.js +0 -102
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getProperties.js +0 -35
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/index.js +0 -108
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/inspect.js +0 -320
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/objDisplay.js +0 -48
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/overwriteMethod.js +0 -51
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/overwriteProperty.js +0 -54
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/test.js +0 -26
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/transferFlags.js +0 -44
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/type.js +0 -45
- data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai.js +0 -80
- data/components/indefinido/indemma/master/components/component-bind/component.json +0 -14
- data/components/indefinido/indemma/master/components/component-bind/index.js +0 -24
- data/components/indefinido/indemma/master/components/component-jquery/component.json +0 -14
- data/components/indefinido/indemma/master/components/component-jquery/index.js +0 -9601
- data/components/indefinido/indemma/master/components/component-type/component.json +0 -18
- data/components/indefinido/indemma/master/components/component-type/index.js +0 -32
- data/components/indefinido/indemma/master/components/indefinido-advisable/component.json +0 -21
- data/components/indefinido/indemma/master/components/indefinido-advisable/index.js +0 -1
- data/components/indefinido/indemma/master/components/indefinido-advisable/lib/advisable.js +0 -60
- data/components/indefinido/indemma/master/components/indefinido-observable/component.json +0 -25
- data/components/indefinido/indemma/master/components/indefinido-observable/components/cjohansen-sinon/sinon.js +0 -4290
- data/components/indefinido/indemma/master/components/indefinido-observable/lib/observable.js +0 -323
- data/components/indefinido/indemma/master/components/kapit-observe-utils/component.json +0 -13
- data/components/indefinido/indemma/master/components/paulmillr-es6-shim/component.json +0 -17
- data/components/indefinido/indemma/master/components/paulmillr-es6-shim/es6-shim.js +0 -996
- data/components/indefinido/indemma/master/components/pluma-assimilate/component.json +0 -25
- data/components/indefinido/indemma/master/components/pluma-assimilate/dist/assimilate.js +0 -127
- data/components/indefinido/indemma/master/karma.conf.js +0 -76
- data/components/indefinido/indemma/master/package.json +0 -9
- data/components/indefinido/indemma/master/spec/record/associable_spec.js +0 -137
- data/components/indefinido/indemma/master/spec/record/persistable_spec.js +0 -36
- data/components/indefinido/indemma/master/spec/record/queryable_spec.js +0 -33
- data/components/indefinido/indemma/master/spec/record/resource_spec.js +0 -93
- data/components/indefinido/indemma/master/spec/record/rest_spec.js +0 -32
- data/components/indefinido/indemma/master/spec/record/restfulable_spec.js +0 -300
- data/components/indefinido/indemma/master/spec/record/scopable_spec.js +0 -212
- data/components/indefinido/indemma/master/spec/record/storable_spec.js +0 -53
- data/components/indefinido/indemma/master/spec/record/translationable.js +0 -28
- data/components/indefinido/indemma/master/spec/record/validatable_spec.js +0 -111
- data/components/indefinido/indemma/master/spec/record/validations/associated_spec.js +0 -43
- data/components/indefinido/indemma/master/spec/record/validations/confirmation_spec.js +0 -36
- data/components/indefinido/indemma/master/spec/record/validations/cpf_spec.js +0 -35
- data/components/indefinido/indemma/master/spec/record/validations/presence_spec.js +0 -28
- data/components/indefinido/indemma/master/spec/record/validations/remote_spec.js +0 -87
- data/components/indefinido/indemma/master/spec/record/validations/type_spec.js +0 -48
- data/components/indefinido/indemma/master/spec/record_spec.js +0 -37
- data/components/indefinido/indemma/master/spec/spec_helper.js +0 -11
- data/components/indefinido/indemma/master/spec/support/value_objects/phone.js +0 -45
- data/components/indefinido/indemma/master/src/lib/extensions/rivets.coffee +0 -17
- data/components/indefinido/indemma/master/src/lib/record/associable.coffee +0 -380
- data/components/indefinido/indemma/master/src/lib/record/errors.coffee +0 -20
- data/components/indefinido/indemma/master/src/lib/record/maid.coffee +0 -16
- data/components/indefinido/indemma/master/src/lib/record/persistable.coffee +0 -32
- data/components/indefinido/indemma/master/src/lib/record/queryable.coffee +0 -30
- data/components/indefinido/indemma/master/src/lib/record/resource.coffee +0 -106
- data/components/indefinido/indemma/master/src/lib/record/rest.coffee +0 -28
- data/components/indefinido/indemma/master/src/lib/record/restfulable.coffee +0 -447
- data/components/indefinido/indemma/master/src/lib/record/scopable.coffee +0 -294
- data/components/indefinido/indemma/master/src/lib/record/storable.coffee +0 -46
- data/components/indefinido/indemma/master/src/lib/record/translationable.coffee +0 -18
- data/components/indefinido/indemma/master/src/lib/record/validatable.coffee +0 -207
- data/components/indefinido/indemma/master/src/lib/record/validations/associated.coffee +0 -30
- data/components/indefinido/indemma/master/src/lib/record/validations/confirmation.coffee +0 -17
- data/components/indefinido/indemma/master/src/lib/record/validations/cpf.coffee +0 -57
- data/components/indefinido/indemma/master/src/lib/record/validations/presence.coffee +0 -16
- data/components/indefinido/indemma/master/src/lib/record/validations/remote.coffee +0 -61
- data/components/indefinido/indemma/master/src/lib/record/validations/type.coffee +0 -31
- data/components/indefinido/indemma/master/src/lib/record/validations/validatorable.coffee +0 -5
- data/components/indefinido/indemma/master/src/lib/record.coffee +0 -138
- data/components/indefinido/indemma/master/src/spec/record/associable_spec.coffee +0 -130
- data/components/indefinido/indemma/master/src/spec/record/persistable_spec.coffee +0 -30
- data/components/indefinido/indemma/master/src/spec/record/queryable_spec.coffee +0 -27
- data/components/indefinido/indemma/master/src/spec/record/resource_spec.coffee +0 -69
- data/components/indefinido/indemma/master/src/spec/record/rest_spec.coffee +0 -22
- data/components/indefinido/indemma/master/src/spec/record/restfulable_spec.coffee +0 -215
- data/components/indefinido/indemma/master/src/spec/record/scopable_spec.coffee +0 -191
- data/components/indefinido/indemma/master/src/spec/record/storable_spec.coffee +0 -40
- data/components/indefinido/indemma/master/src/spec/record/translationable.coffee +0 -19
- data/components/indefinido/indemma/master/src/spec/record/validatable_spec.coffee +0 -100
- data/components/indefinido/indemma/master/src/spec/record/validations/associated_spec.coffee +0 -35
- data/components/indefinido/indemma/master/src/spec/record/validations/confirmation_spec.coffee +0 -25
- data/components/indefinido/indemma/master/src/spec/record/validations/cpf_spec.coffee +0 -28
- data/components/indefinido/indemma/master/src/spec/record/validations/presence_spec.coffee +0 -24
- data/components/indefinido/indemma/master/src/spec/record/validations/remote_spec.coffee +0 -74
- data/components/indefinido/indemma/master/src/spec/record/validations/type_spec.coffee +0 -33
- data/components/indefinido/indemma/master/src/spec/record_spec.coffee +0 -23
- data/components/indefinido/indemma/master/src/spec/spec_helper.coffee +0 -9
- data/components/indefinido/indemma/master/src/spec/support/value_objects/phone.coffee +0 -30
- data/components/indefinido/indemma/master/vendor/object/mixin.js +0 -196
- data/components/indefinido/indemma/master/vendor/sinon.js +0 -4290
- /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/index.js +0 -0
- /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/accessors-legacy.js +0 -0
- /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/array.indexOf.js +0 -0
- /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
|
data/components/indefinido/indemma/master/src/spec/record/validations/associated_spec.coffee
DELETED
|
@@ -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.'
|
data/components/indefinido/indemma/master/src/spec/record/validations/confirmation_spec.coffee
DELETED
|
@@ -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
|
-
|