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,61 +0,0 @@
|
|
|
1
|
-
# TODO Add base settings to validation
|
|
2
|
-
# model = window.model
|
|
3
|
-
|
|
4
|
-
# TODO implement method
|
|
5
|
-
# model[resource].validators_on 'field' # Get all validators related to this field
|
|
6
|
-
|
|
7
|
-
rest = require '../rest'
|
|
8
|
-
stampit = require '../../../vendor/stampit'
|
|
9
|
-
|
|
10
|
-
remoteable = stampit
|
|
11
|
-
validate_each: (record, attribute, value) ->
|
|
12
|
-
data = @json record
|
|
13
|
-
|
|
14
|
-
# TODO best partial application
|
|
15
|
-
# @post(data).done(_.partial @succeeded, record)
|
|
16
|
-
@post(data).done((json) => @succeeded(json, record))
|
|
17
|
-
|
|
18
|
-
json: (record) ->
|
|
19
|
-
param = @resource.param_name || @resource.toString()
|
|
20
|
-
|
|
21
|
-
data = {}
|
|
22
|
-
data[param] = record.json()
|
|
23
|
-
|
|
24
|
-
# TODO stop renaming id field, lol
|
|
25
|
-
data[param].id ||= data[param]._id
|
|
26
|
-
delete data[param]._id
|
|
27
|
-
|
|
28
|
-
data
|
|
29
|
-
|
|
30
|
-
# TODO Use rest.post
|
|
31
|
-
post: (data) ->
|
|
32
|
-
|
|
33
|
-
jQuery.ajax
|
|
34
|
-
url : @route
|
|
35
|
-
data : data
|
|
36
|
-
type : 'post'
|
|
37
|
-
dataType: 'json'
|
|
38
|
-
context : @
|
|
39
|
-
|
|
40
|
-
succeeded: (json, record) ->
|
|
41
|
-
error_messages = json[@attribute_name]
|
|
42
|
-
|
|
43
|
-
return unless error_messages
|
|
44
|
-
|
|
45
|
-
for error_message in error_messages
|
|
46
|
-
record.errors.add @attribute_name, 'server', server_message: error_message
|
|
47
|
-
,
|
|
48
|
-
message: "Remote validation failed"
|
|
49
|
-
route: null
|
|
50
|
-
, ->
|
|
51
|
-
# TODO discover why @model.route is coming null!
|
|
52
|
-
# Desglobalize model constant
|
|
53
|
-
pluralized_resource = model.pluralize @model.resource.toString()
|
|
54
|
-
@resource = @model.resource
|
|
55
|
-
@route ||= "/#{pluralized_resource}/validate"
|
|
56
|
-
@
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
composed = stampit.compose require('./validatorable'), remoteable
|
|
60
|
-
composed.definition_key = 'validates_remotely'
|
|
61
|
-
module.exports = composed
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# TODO Add base settings to validation
|
|
2
|
-
# model = window.model
|
|
3
|
-
|
|
4
|
-
# TODO implement method
|
|
5
|
-
# model[resource].validators_on 'field' # Get all validators related to this field
|
|
6
|
-
|
|
7
|
-
validations = require '../validatable'
|
|
8
|
-
stampit = require '../../../vendor/stampit'
|
|
9
|
-
|
|
10
|
-
typeable = stampit
|
|
11
|
-
validate_each: (record, attribute, value) ->
|
|
12
|
-
# TODO store type on validator instantiation
|
|
13
|
-
@type ||= model[record.resource.toString()][attribute]
|
|
14
|
-
|
|
15
|
-
if value
|
|
16
|
-
|
|
17
|
-
if value instanceof @type
|
|
18
|
-
|
|
19
|
-
# TODO store type_name on costructor
|
|
20
|
-
@type_name ||= @type.name
|
|
21
|
-
|
|
22
|
-
unless value.valid # Will trigger validation
|
|
23
|
-
record.errors.add attribute, 'type', type_name: @type_name?
|
|
24
|
-
|
|
25
|
-
else
|
|
26
|
-
throw new Error "Invalid attribute value type! Found #{typeof value} expected #{@type.name}"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
composed = stampit.compose require('./validatorable'), typeable
|
|
30
|
-
composed.definition_key = 'validates_type_of'
|
|
31
|
-
module.exports = composed
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
$ = require 'jquery'
|
|
2
|
-
type = require 'type'
|
|
3
|
-
bind = require 'bind'
|
|
4
|
-
observable = require('observable').mixin
|
|
5
|
-
advisable = require('advisable' ).mixin
|
|
6
|
-
extend = require 'assimilate'
|
|
7
|
-
merge = require('assimilate').withStrategy 'deep'
|
|
8
|
-
|
|
9
|
-
# TODO support other type of associations
|
|
10
|
-
@model = do -> # mixin
|
|
11
|
-
modelable =
|
|
12
|
-
after_mix: []
|
|
13
|
-
record:
|
|
14
|
-
# TODO usar deferred
|
|
15
|
-
after_initialize: []
|
|
16
|
-
# TODO usar deferred
|
|
17
|
-
before_initialize: []
|
|
18
|
-
every: ->
|
|
19
|
-
# TODO transform model in a array like object and store cache in root
|
|
20
|
-
@cache
|
|
21
|
-
# TODO better find support
|
|
22
|
-
create: (params...) ->
|
|
23
|
-
# Implementat non restful model creation
|
|
24
|
-
throw 'model.create not implemented yet, try using the restful.model.create method'
|
|
25
|
-
# find: (id) ->
|
|
26
|
-
# @where id: id, true
|
|
27
|
-
where: (conditions, first = false) ->
|
|
28
|
-
results = []
|
|
29
|
-
conditions.id = [conditions.id] if type(conditions.id) != 'array'
|
|
30
|
-
# TODO transform model in a array like object and store cache in root
|
|
31
|
-
for record in @cache when conditions.id.indexOf(record._id) isnt -1
|
|
32
|
-
if first
|
|
33
|
-
return record
|
|
34
|
-
else
|
|
35
|
-
results.push record
|
|
36
|
-
|
|
37
|
-
if first then null else results
|
|
38
|
-
|
|
39
|
-
initialize_record = (data = {resource: @resource, parent_resource: @parent_resource}) ->
|
|
40
|
-
data.resource ||= @resource
|
|
41
|
-
data.parent_resource ||= @resource.parent || @parent_resource
|
|
42
|
-
data.route ||= @route
|
|
43
|
-
data.nested_attributes = @nested_attributes || []
|
|
44
|
-
|
|
45
|
-
# instance = record.call extend data, @record # TODO remove @record from outside scop
|
|
46
|
-
after_initialize = (data.after_initialize || []).concat(@record.after_initialize)
|
|
47
|
-
|
|
48
|
-
# TODO only shim in older browsers
|
|
49
|
-
# TODO try to remove _shim need
|
|
50
|
-
creation = extend Object.create(data, {_shim: {}}), @record, creation, after_initialize: after_initialize
|
|
51
|
-
|
|
52
|
-
# TODO use deferred instead of before_initialize array
|
|
53
|
-
for callback, index in @record.before_initialize
|
|
54
|
-
callback.call @, creation
|
|
55
|
-
|
|
56
|
-
instance = record.call creation # TODO remove @record from outside scope
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
# Call and remove used callbacks
|
|
60
|
-
# TODO use deferred instead of after_initialize array
|
|
61
|
-
for callback, index in instance.after_initialize
|
|
62
|
-
callback.call instance, instance
|
|
63
|
-
|
|
64
|
-
delete instance.after_initialize
|
|
65
|
-
|
|
66
|
-
instance
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
# Create model
|
|
70
|
-
mixer = (options) ->
|
|
71
|
-
throw 'Model mixin called incorrectly call with model.call {} instead of model({})' if @ == window
|
|
72
|
-
mixer.stale = true unless mixer.stale # Prevent model changes
|
|
73
|
-
|
|
74
|
-
# TODO Use stampit and solve this mess!!
|
|
75
|
-
if @record and @record.after_initialize
|
|
76
|
-
after_initialize = @record.after_initialize.splice 0
|
|
77
|
-
else
|
|
78
|
-
after_initialize = []
|
|
79
|
-
|
|
80
|
-
instance = bind @, initialize_record
|
|
81
|
-
|
|
82
|
-
extend instance, merge @, modelable
|
|
83
|
-
|
|
84
|
-
@record = instance.record = merge {}, instance.record, modelable.record
|
|
85
|
-
@record.after_initialize = instance.record.after_initialize = instance.record.after_initialize.concat after_initialize
|
|
86
|
-
|
|
87
|
-
@record.before_initialize = instance.record.before_initialize.concat []
|
|
88
|
-
|
|
89
|
-
callback.call instance, instance for callback in modelable.after_mix
|
|
90
|
-
|
|
91
|
-
# Store model for later use
|
|
92
|
-
|
|
93
|
-
# TODO implement correctly stampit usage, and remove the need for
|
|
94
|
-
# direct storage
|
|
95
|
-
mixer[@resource.name || @resource.toString()] = instance
|
|
96
|
-
|
|
97
|
-
mixer.mix = (blender) ->
|
|
98
|
-
throw "Trying to change model mixin with #{object} but model already used.\nCheck your configuration order" if @stale
|
|
99
|
-
|
|
100
|
-
blender modelable
|
|
101
|
-
|
|
102
|
-
# window.model
|
|
103
|
-
mixer
|
|
104
|
-
|
|
105
|
-
@record = do -> # mixin
|
|
106
|
-
|
|
107
|
-
callbacks =
|
|
108
|
-
# TODO search for a existing word and rename method, 'smudge' perhaps?
|
|
109
|
-
dirtify: ->
|
|
110
|
-
# TODO add suport to subscribe to any property
|
|
111
|
-
# @subscribe (prop, value, old) ->
|
|
112
|
-
# if prop isnt 'dirty' and not @dirty and value isnt old
|
|
113
|
-
# console.groupCollapsed "◉ Property '#{prop}' dirtied a #{@resource}"
|
|
114
|
-
# console.log old, "→", value
|
|
115
|
-
# console.log @
|
|
116
|
-
# console.groupEnd()
|
|
117
|
-
# @dirty = true
|
|
118
|
-
|
|
119
|
-
recordable =
|
|
120
|
-
# TODO usar deferred
|
|
121
|
-
dirty: false
|
|
122
|
-
after_initialize: [ callbacks.dirtify ]
|
|
123
|
-
|
|
124
|
-
that = (data) ->
|
|
125
|
-
throw "Mixin called incorrectly, call mixin with call method: record.call(object, data)" if @ == window
|
|
126
|
-
|
|
127
|
-
data ||= {}
|
|
128
|
-
after_initialize = (@after_initialize || []).concat(data.after_initialize || []).concat(recordable.after_initialize)
|
|
129
|
-
advisable observable(extend(@, recordable, data, after_initialize: after_initialize))
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
that.mix = (blender) ->
|
|
133
|
-
blender recordable
|
|
134
|
-
|
|
135
|
-
that
|
|
136
|
-
|
|
137
|
-
exports.record = @record
|
|
138
|
-
exports.model = @model
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
root = exports ? window
|
|
2
|
-
|
|
3
|
-
require 'indemma/lib/record/associable'
|
|
4
|
-
|
|
5
|
-
describe 'record', ->
|
|
6
|
-
record = root.record
|
|
7
|
-
|
|
8
|
-
it 'should create a record'
|
|
9
|
-
|
|
10
|
-
describe 'model', ->
|
|
11
|
-
model = root.model
|
|
12
|
-
arthur = radio = null
|
|
13
|
-
person = corporation = null
|
|
14
|
-
|
|
15
|
-
beforeEach ->
|
|
16
|
-
corporation = model.call
|
|
17
|
-
resource: 'corporation'
|
|
18
|
-
|
|
19
|
-
# TODO implement support for self referential associations
|
|
20
|
-
friend = model.call
|
|
21
|
-
resource: 'friends'
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
person = model.call
|
|
25
|
-
resource : 'person'
|
|
26
|
-
has_many : 'friends'
|
|
27
|
-
belongs_to: 'corporation'
|
|
28
|
-
|
|
29
|
-
radio = corporation
|
|
30
|
-
_id: 1
|
|
31
|
-
name: 'Local Radio'
|
|
32
|
-
|
|
33
|
-
ford = friend
|
|
34
|
-
_id: 2
|
|
35
|
-
name: 'Ford Perfect'
|
|
36
|
-
|
|
37
|
-
arthur = person
|
|
38
|
-
_id: 3
|
|
39
|
-
name: 'Arthur Philip Dent'
|
|
40
|
-
|
|
41
|
-
describe 'has_one', ->
|
|
42
|
-
it 'should add a has_one property with the associations descriptions', ->
|
|
43
|
-
$.type(person.has_one).should.be.eq 'array'
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
describe 'belongs_to', ->
|
|
47
|
-
it 'should add a belongs_to property with the associations descriptions', ->
|
|
48
|
-
$.type(person.belongs_to).should.be.eq 'array'
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
describe "#associated_id", ->
|
|
52
|
-
it 'should return an partial resource when acessing associated', ->
|
|
53
|
-
arthur.corporation_id = radio._id
|
|
54
|
-
|
|
55
|
-
arthur.should.have.property 'corporation'
|
|
56
|
-
arthur.corporation.should.be.object
|
|
57
|
-
arthur.corporation.should.have.property 'resource'
|
|
58
|
-
arthur.corporation.should.have.property '_id', radio._id
|
|
59
|
-
|
|
60
|
-
xit 'should fetch the resource when accessing associated and resource not present', (done) ->
|
|
61
|
-
radio = corporation
|
|
62
|
-
_id: 1
|
|
63
|
-
name: 'Local Radio'
|
|
64
|
-
|
|
65
|
-
arthur.corporation_id = radio._id
|
|
66
|
-
|
|
67
|
-
arthur.corporation.should.be.object
|
|
68
|
-
arthur.corporation.should.have.property 'resource', radio.resource
|
|
69
|
-
arthur.corporation._id.should.be null
|
|
70
|
-
arthur.corporation.locking.should.be.object
|
|
71
|
-
|
|
72
|
-
arthur.corporation.locking.done (corporation) ->
|
|
73
|
-
corporation.should.have.property '_id' , radio.id
|
|
74
|
-
corporation.should.have.property 'name', radio.name
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
describe "#associated", ->
|
|
78
|
-
|
|
79
|
-
it 'should update associated id and record when associated record changes', ->
|
|
80
|
-
radio = corporation
|
|
81
|
-
_id: 1
|
|
82
|
-
name: 'Local Radio'
|
|
83
|
-
sustained: true
|
|
84
|
-
|
|
85
|
-
expect(arthur.corporation).to.be.undefined
|
|
86
|
-
|
|
87
|
-
arthur.corporation = radio
|
|
88
|
-
|
|
89
|
-
arthur.should.to.have.property 'corporation', radio
|
|
90
|
-
arthur.should.to.have.property 'corporation_id', radio._id
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
describe "#build_associated", ->
|
|
94
|
-
it 'should add builded object to association named attribute', ->
|
|
95
|
-
arthur = person
|
|
96
|
-
name: 'Arthur Dent'
|
|
97
|
-
|
|
98
|
-
corporation = arthur.build_corporation()
|
|
99
|
-
arthur.should.have.property 'corporation'
|
|
100
|
-
expect(corporation).to.be.ok
|
|
101
|
-
|
|
102
|
-
describe 'has_many', ->
|
|
103
|
-
it 'should add a has_many property with the associations descriptions', ->
|
|
104
|
-
$.type(person.has_many).should.be.eq 'array'
|
|
105
|
-
|
|
106
|
-
it 'should return a record factory with associations stored', ->
|
|
107
|
-
person.has_many.should.be.array
|
|
108
|
-
|
|
109
|
-
has_many = Array.prototype.splice.call person.has_many, 0
|
|
110
|
-
|
|
111
|
-
has_many.should.contain 'friends'
|
|
112
|
-
|
|
113
|
-
describe '#()', ->
|
|
114
|
-
|
|
115
|
-
it 'should return a record with an association object', ->
|
|
116
|
-
person().should.have.property 'friends'
|
|
117
|
-
|
|
118
|
-
describe '{generated_association}', ->
|
|
119
|
-
association = null
|
|
120
|
-
|
|
121
|
-
beforeEach -> association = person().friends
|
|
122
|
-
|
|
123
|
-
it 'should have query methods', ->
|
|
124
|
-
association.should.have.property 'all'
|
|
125
|
-
association.should.have.property 'each'
|
|
126
|
-
association.should.have.property 'reload'
|
|
127
|
-
|
|
128
|
-
describe '#all', ->
|
|
129
|
-
|
|
130
|
-
it 'should auto observe nested associations attributes'
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
root = exports ? window
|
|
2
|
-
|
|
3
|
-
persistable = require 'indemma/lib/record/persistable'
|
|
4
|
-
|
|
5
|
-
describe 'persistable', ->
|
|
6
|
-
|
|
7
|
-
describe 'model', ->
|
|
8
|
-
it 'should set the persistable key', ->
|
|
9
|
-
model.should.have.property 'persistable', true
|
|
10
|
-
|
|
11
|
-
describe '#find', ->
|
|
12
|
-
beforeEach ->
|
|
13
|
-
@person = model.call
|
|
14
|
-
resource : 'person'
|
|
15
|
-
has_many : 'friends'
|
|
16
|
-
belongs_to: 'corporation'
|
|
17
|
-
|
|
18
|
-
@arthur = @person
|
|
19
|
-
_id: '1'
|
|
20
|
-
name: 'Arthur Philip Dent'
|
|
21
|
-
|
|
22
|
-
it 'should call try to store a record after saving', (done) ->
|
|
23
|
-
sinon.stub(@person.storage, 'store').returns true
|
|
24
|
-
|
|
25
|
-
@arthur.save =>
|
|
26
|
-
expect(@person.storage.store.calledOnce).to.be.true
|
|
27
|
-
done()
|
|
28
|
-
|
|
29
|
-
@person.storage.store.restore()
|
|
30
|
-
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
root = exports ? window
|
|
2
|
-
|
|
3
|
-
queryable = require 'indemma/lib/record/queryable'
|
|
4
|
-
|
|
5
|
-
describe 'queryable', ->
|
|
6
|
-
|
|
7
|
-
describe 'model', ->
|
|
8
|
-
beforeEach ->
|
|
9
|
-
@person = model.call
|
|
10
|
-
resource : 'person'
|
|
11
|
-
|
|
12
|
-
it 'should set the queryable key', ->
|
|
13
|
-
model.should.have.property 'queryable', true
|
|
14
|
-
|
|
15
|
-
it 'should create a storage', ->
|
|
16
|
-
@person.should.have.property 'storage'
|
|
17
|
-
|
|
18
|
-
describe '#find', ->
|
|
19
|
-
beforeEach ->
|
|
20
|
-
@arthur = @person
|
|
21
|
-
_id: '1'
|
|
22
|
-
name: 'Arthur Philip Dent'
|
|
23
|
-
|
|
24
|
-
@arthur.save()
|
|
25
|
-
|
|
26
|
-
it 'should retrieve a record by key', ->
|
|
27
|
-
@person.find('1').should.have.property 'name', @arthur.name
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
require 'indemma/lib/record/restfulable'
|
|
2
|
-
require 'indemma/lib/record/resource'
|
|
3
|
-
|
|
4
|
-
root = exports ? window
|
|
5
|
-
|
|
6
|
-
model = root.model # TODO model = require 'indemma/model'
|
|
7
|
-
record = root.record # TODO model = require 'indemma/record'
|
|
8
|
-
jQuery = require 'component-jquery'
|
|
9
|
-
|
|
10
|
-
describe 'resource', ->
|
|
11
|
-
|
|
12
|
-
describe 'with scope option', ->
|
|
13
|
-
person = towel = null
|
|
14
|
-
|
|
15
|
-
beforeEach ->
|
|
16
|
-
person = model.call
|
|
17
|
-
resource: 'person'
|
|
18
|
-
|
|
19
|
-
towel = model.call
|
|
20
|
-
resource:
|
|
21
|
-
name: 'towel'
|
|
22
|
-
scope: 'users'
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
it 'should be prefixed with scope', ->
|
|
26
|
-
towel. route.should.be.eq '/users/towels'
|
|
27
|
-
towel( { } ).route.should.be.eq '/users/towels'
|
|
28
|
-
towel(id: 1).route.should.be.eq '/users/towels'
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
describe 'with singular resource', ->
|
|
32
|
-
towel = null
|
|
33
|
-
|
|
34
|
-
beforeEach ->
|
|
35
|
-
towel = model.call
|
|
36
|
-
resource:
|
|
37
|
-
name: 'towel'
|
|
38
|
-
singular: true
|
|
39
|
-
|
|
40
|
-
deferred = jQuery.Deferred()
|
|
41
|
-
|
|
42
|
-
context = towel(name: 'Arthur Philip Dent')
|
|
43
|
-
context.lock = JSON.stringify context.json()
|
|
44
|
-
deferred.resolveWith context, [_id: 1, name: 'Arthur Philip Dent']
|
|
45
|
-
|
|
46
|
-
sinon.stub(jQuery, "ajax").returns(deferred)
|
|
47
|
-
|
|
48
|
-
promises = towel.create {name: 'Arthur Philip Dent'}, {name: 'Ford'}
|
|
49
|
-
|
|
50
|
-
afterEach -> jQuery.ajax.restore()
|
|
51
|
-
|
|
52
|
-
it 'the route should be in singular form', ->
|
|
53
|
-
towel. route.should.be.eq '/towel'
|
|
54
|
-
towel( { } ).route.should.be.eq '/towel'
|
|
55
|
-
towel(id: 1).route.should.be.eq '/towel'
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
describe 'when included', ->
|
|
59
|
-
xit 'sets the resource loaded flag on model', ->
|
|
60
|
-
# model.resource.should.be.true
|
|
61
|
-
|
|
62
|
-
describe 'model' , ->
|
|
63
|
-
it 'add methods to model object'
|
|
64
|
-
|
|
65
|
-
describe '#pluralize', ->
|
|
66
|
-
xit 'transforms word into plural form'
|
|
67
|
-
|
|
68
|
-
describe '#singularize', ->
|
|
69
|
-
xit 'transforms word into singular form'
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
require 'indemma/lib/record/resource'
|
|
2
|
-
|
|
3
|
-
root = exports ? window
|
|
4
|
-
|
|
5
|
-
rest = require 'indemma/lib/record/rest'
|
|
6
|
-
jQuery = require 'component-jquery'
|
|
7
|
-
|
|
8
|
-
describe 'rest', ->
|
|
9
|
-
object = null
|
|
10
|
-
|
|
11
|
-
beforeEach ->
|
|
12
|
-
object = Object.create rest
|
|
13
|
-
object.route = "users"
|
|
14
|
-
object.resource = "user"
|
|
15
|
-
|
|
16
|
-
beforeEach -> sinon.stub(jQuery, "ajax").returns(jQuery.Deferred())
|
|
17
|
-
afterEach -> jQuery.ajax.restore()
|
|
18
|
-
|
|
19
|
-
describe '#delete', ->
|
|
20
|
-
it 'should make ajax call', ->
|
|
21
|
-
object.delete()
|
|
22
|
-
jQuery.ajax.called.should.be.true
|