joosy 1.2.0.alpha.55 → 1.2.0.alpha.56

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 25d487304e9ce59d6de2a9dc4801fb801777239f
4
- data.tar.gz: 27ccb7c1ed82c621247e9e00a155845711636ffe
3
+ metadata.gz: ffe45ebccb32a88133ea2c952189ea4942d15e0e
4
+ data.tar.gz: 6abce34a7d8760160a0e5eccd8bbffb0a09c0e14
5
5
  SHA512:
6
- metadata.gz: d98c25370509ebb3abf2ade548ecf7d0da6f99304c7e9bd8ac7a83509903edffb46cee46d049b6f9c83a974e8ca479912aa59a89ff9ffd1cef4997115c8122e9
7
- data.tar.gz: 39056008866151263195f9888e34c9ddcac102d3c3c58aa8eee62af7eefec1e4f0f65a9c461a2cb9338147090f9a060174b15d73a839ac26d3ff8e8e088fc7b9
6
+ metadata.gz: ed3d5616f102390ddaec6797dac25c0d6842c93bfd7c4329350ba4ef0fe9bdd14cc27af709945fdb32326b63ca562b66431b799e1713815afd508022422d87f5
7
+ data.tar.gz: 3b6e52d5eb9e28b3916d5c931f17bf590a4ad42bdebad55a4d3ae5291334c2679a06597a224ce6b54630ab255d30eded88eb41384f34e91af5b18dd65801c321
data/bower.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "joosy",
3
- "version": "1.2.0-alpha.55",
3
+ "version": "1.2.0-alpha.56",
4
4
  "main": "lib/joosy.js",
5
5
  "ignore": [
6
6
  "bin",
@@ -132,7 +132,7 @@
132
132
  Object.each(data, function(property, val) {
133
133
  var entity, i, input, key, _i, _len, _ref, _results;
134
134
  key = _this.concatFieldName(scope, property);
135
- input = _this.$fields("[name='" + key + "']:not(:file),[name='" + (key.underscore()) + "']:not(:file),[name='" + (key.camelize(false)) + "']:not(:file)");
135
+ input = _this.$fields().filter("[name='" + key + "']:not(:file),[name='" + (key.underscore()) + "']:not(:file),[name='" + (key.camelize(false)) + "']:not(:file)");
136
136
  if (input.length > 0) {
137
137
  if (input.is(':checkbox')) {
138
138
  if (val) {
@@ -247,7 +247,7 @@
247
247
  };
248
248
 
249
249
  Form.prototype.findField = function(field) {
250
- return this.$fields("[name='" + field + "']");
250
+ return this.$fields().filter("[name='" + field + "']");
251
251
  };
252
252
 
253
253
  Form.prototype.__markMethod = function(method) {
@@ -428,11 +428,14 @@
428
428
  }, '');
429
429
  };
430
430
 
431
- REST.basePath = function(options) {
431
+ REST.collectionPath = function(options) {
432
432
  var path;
433
433
  if (options == null) {
434
434
  options = {};
435
435
  }
436
+ if (options.url) {
437
+ return options.url;
438
+ }
436
439
  if ((this.__source != null) && (options.parent == null)) {
437
440
  path = this.__source;
438
441
  } else {
@@ -447,52 +450,42 @@
447
450
  if (options.parent != null) {
448
451
  path = this.__parentsPath(Object.isArray(options.parent) ? options.parent : [options.parent]) + path;
449
452
  }
450
- return path;
451
- };
452
-
453
- REST.prototype.basePath = function(options) {
454
- if (options == null) {
455
- options = {};
456
- }
457
- return this.constructor.basePath(options);
458
- };
459
-
460
- REST.memberPath = function(id, options) {
461
- var path;
462
- if (options == null) {
463
- options = {};
464
- }
465
- path = this.basePath(options) + ("/" + id);
466
453
  if (options.from != null) {
467
454
  path += "/" + options.from;
468
455
  }
469
456
  return path;
470
457
  };
471
458
 
472
- REST.prototype.memberPath = function(options) {
459
+ REST.prototype.collectionPath = function(options) {
473
460
  if (options == null) {
474
461
  options = {};
475
462
  }
476
- return this.constructor.memberPath(this.id(), options);
463
+ return this.constructor.collectionPath(options);
477
464
  };
478
465
 
479
- REST.collectionPath = function(options) {
480
- var path;
466
+ REST.memberPath = function(id, options) {
467
+ var from, path;
481
468
  if (options == null) {
482
469
  options = {};
483
470
  }
484
- path = this.basePath(options);
485
- if (options.from != null) {
486
- path += "/" + options.from;
471
+ if (options.url) {
472
+ return options.url;
473
+ }
474
+ from = options.from;
475
+ path = this.collectionPath(Object.merge(options, {
476
+ from: void 0
477
+ })) + ("/" + id);
478
+ if (from != null) {
479
+ path += "/" + from;
487
480
  }
488
481
  return path;
489
482
  };
490
483
 
491
- REST.prototype.collectionPath = function(options) {
484
+ REST.prototype.memberPath = function(options) {
492
485
  if (options == null) {
493
486
  options = {};
494
487
  }
495
- return this.constructor.collectionPath(options);
488
+ return this.constructor.memberPath(this.id(), options);
496
489
  };
497
490
 
498
491
  REST.get = function(options, callback) {
data/build/joosy.js CHANGED
@@ -496,11 +496,11 @@
496
496
  },
497
497
  __wrapElement: function(value) {
498
498
  var _this = this;
499
- return function(filter) {
500
- if (!filter) {
499
+ return function(context) {
500
+ if (!context) {
501
501
  return _this.$(value);
502
502
  }
503
- return _this.$(value).filter(filter);
503
+ return _this.$(value, context);
504
504
  };
505
505
  },
506
506
  __delegateEvents: function() {
data/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "keywords": [
5
5
  "joosy"
6
6
  ],
7
- "version": "1.2.0-alpha.55",
7
+ "version": "1.2.0-alpha.56",
8
8
  "author": "Boris Staal <boris@staal.io>",
9
9
  "homepage": "http://joosy.ws/",
10
10
  "repository": {
@@ -69,14 +69,16 @@ class Joosy.Resources.REST extends Joosy.Resources.Base
69
69
  , ''
70
70
 
71
71
  #
72
- # Builds base path
72
+ # Builds collection path
73
73
  #
74
74
  # @param [Hash] options See {Joosy.Resources.REST.find} for possible options
75
75
  #
76
76
  # @example Basic usage
77
- # Resource.basePath() # /resources
77
+ # Resource.collectionPath() # /resources/
78
78
  #
79
- @basePath: (options={}) ->
79
+ @collectionPath: (options={}) ->
80
+ return options.url if options.url
81
+
80
82
  if @__source? && !options.parent?
81
83
  path = @__source
82
84
  else
@@ -87,15 +89,17 @@ class Joosy.Resources.REST extends Joosy.Resources.Base
87
89
  if options.parent?
88
90
  path = @__parentsPath(if Object.isArray(options.parent) then options.parent else [options.parent]) + path
89
91
 
92
+ path += "/#{options.from}" if options.from?
93
+
90
94
  path
91
95
 
92
96
  #
93
- # Builds base path
97
+ # Builds collection path
94
98
  #
95
- # @see Joosy.Resources.REST.basePath
99
+ # @see Joosy.Resources.REST.collectionPath
96
100
  #
97
- basePath: (options={}) ->
98
- @constructor.basePath options
101
+ collectionPath: (options={}) ->
102
+ @constructor.collectionPath options
99
103
 
100
104
  #
101
105
  # Builds member path based on the given id.
@@ -107,8 +111,11 @@ class Joosy.Resources.REST extends Joosy.Resources.Base
107
111
  # Resource.memberPath(1, from: 'foo') # /resources/1/foo
108
112
  #
109
113
  @memberPath: (id, options={}) ->
110
- path = @basePath(options) + "/#{id}"
111
- path += "/#{options.from}" if options.from?
114
+ return options.url if options.url
115
+
116
+ from = options.from
117
+ path = @collectionPath(Object.merge(options, from: undefined)) + "/#{id}"
118
+ path += "/#{from}" if from?
112
119
  path
113
120
 
114
121
  #
@@ -122,27 +129,6 @@ class Joosy.Resources.REST extends Joosy.Resources.Base
122
129
  memberPath: (options={}) ->
123
130
  @constructor.memberPath @id(), options
124
131
 
125
- #
126
- # Builds collection path
127
- #
128
- # @param [Hash] options See {Joosy.Resources.REST.find} for possible options
129
- #
130
- # @example Basic usage
131
- # Resource.collectionPath() # /resources/
132
- #
133
- @collectionPath: (options={}) ->
134
- path = @basePath(options)
135
- path += "/#{options.from}" if options.from?
136
- path
137
-
138
- #
139
- # Builds collection path
140
- #
141
- # @see Joosy.Resources.REST.collectionPath
142
- #
143
- collectionPath: (options={}) ->
144
- @constructor.collectionPath options
145
-
146
132
  #
147
133
  # Sends the GET query using collectionPath.
148
134
  # Callback will get parsed JSON object as a parameter.
@@ -179,7 +179,7 @@ class Joosy.Form extends Joosy.Module
179
179
  data.__joosy_form_filler_lock = true
180
180
  Object.each data, (property, val) =>
181
181
  key = @concatFieldName scope, property
182
- input = @$fields("[name='#{key}']:not(:file),[name='#{key.underscore()}']:not(:file),[name='#{key.camelize(false)}']:not(:file)")
182
+ input = @$fields().filter("[name='#{key}']:not(:file),[name='#{key.underscore()}']:not(:file),[name='#{key.camelize(false)}']:not(:file)")
183
183
  if input.length > 0
184
184
  if input.is ':checkbox'
185
185
  if val
@@ -292,7 +292,7 @@ class Joosy.Form extends Joosy.Module
292
292
  # @param [String] field Name of field to find
293
293
  #
294
294
  findField: (field) ->
295
- @$fields("[name='#{field}']")
295
+ @$fields().filter("[name='#{field}']")
296
296
 
297
297
  #
298
298
  # Simulates REST methods by adding hidden _method input with real method
@@ -16,10 +16,6 @@ class Joosy.Module
16
16
  # Remember: minifcation will rename your classes. Therefore it
17
17
  # is only intended for development debugging purposes.
18
18
  #
19
- # @note Go @jashkenas Go! Give us https://github.com/jashkenas/coffee-script/issues/2052.
20
- # Please go vote for this feature if you are reading this. It will
21
- # give us ability to eleminate a lot of boilerplate for you.
22
- #
23
19
  # @return [String]
24
20
  #
25
21
  @__className: (klass) ->
@@ -90,9 +90,9 @@ Joosy.Modules.DOM =
90
90
  # @private
91
91
  #
92
92
  __wrapElement: (value) ->
93
- (filter) =>
94
- return @$(value) unless filter
95
- return @$(value).filter(filter)
93
+ (context) =>
94
+ return @$(value) unless context
95
+ return @$(value, context)
96
96
 
97
97
  #
98
98
  # Binds events defined in 'events' to container
@@ -56,23 +56,26 @@ describe "Joosy.Resources.REST", ->
56
56
  clone = @Test.at 'rumbas', 'salsas', Fluffy.build(1)
57
57
  expect(clone.__source).toEqual '/rumbas/salsas/fluffies/1/tests'
58
58
 
59
- it "build base path", ->
60
- parent = FluffyParent.build 1
61
- grandParent = FluffyParent.build 666
59
+ describe '@memberPath', ->
60
+ beforeEach ->
61
+ @parent = FluffyParent.build 1
62
+ @grandParent = FluffyParent.build 666
62
63
 
63
- expect(Animal.Cat.basePath()).toEqual '/animal/cats'
64
- expect(Animal.Cat.basePath parent: parent).toEqual '/fluffy_parents/1/animal/cats'
65
- expect(Animal.Cat.basePath parent: [grandParent, parent]).toEqual '/fluffy_parents/666/fluffy_parents/1/animal/cats'
64
+ it 'builds member path', ->
65
+ expect(Fluffy.memberPath 1).toEqual '/fluffies/1'
66
66
 
67
- it "builds member path", ->
68
- parent = FluffyParent.build 1
69
- grandParent = FluffyParent.build 666
67
+ it 'builds member path with single parent', ->
68
+ expect(Fluffy.memberPath 1, parent: @parent).toEqual '/fluffy_parents/1/fluffies/1'
69
+
70
+ it 'builds member path with array parent', ->
71
+ expect(Fluffy.memberPath 1, parent: [@grandParent, @parent]).toEqual '/fluffy_parents/666/fluffy_parents/1/fluffies/1'
72
+
73
+ it 'builds member path with parent and from', ->
74
+ expect(Fluffy.memberPath 1, parent: @parent, from: 'test').toEqual '/fluffy_parents/1/fluffies/1/test'
75
+
76
+ it 'builds member path with parent, from and params', ->
77
+ expect(Fluffy.memberPath 1, parent: @parent, from: 'test', params: {foo: 'bar'}).toEqual '/fluffy_parents/1/fluffies/1/test'
70
78
 
71
- expect(Fluffy.memberPath 1).toEqual '/fluffies/1'
72
- expect(Fluffy.memberPath 1, parent: parent).toEqual '/fluffy_parents/1/fluffies/1'
73
- expect(Fluffy.memberPath 1, parent: [grandParent, parent]).toEqual '/fluffy_parents/666/fluffy_parents/1/fluffies/1'
74
- expect(Fluffy.memberPath 1, parent: parent, from: 'test').toEqual '/fluffy_parents/1/fluffies/1/test'
75
- expect(Fluffy.memberPath 1, parent: parent, from: 'test', params: {foo: 'bar'}).toEqual '/fluffy_parents/1/fluffies/1/test'
76
79
 
77
80
  it "builds collection path", ->
78
81
  parent = FluffyParent.build 1
@@ -84,71 +87,81 @@ describe "Joosy.Resources.REST", ->
84
87
  expect(Fluffy.collectionPath parent: parent, from: 'test').toEqual '/fluffy_parents/1/fluffies/test'
85
88
  expect(Fluffy.collectionPath parent: parent, from: 'test', params: {foo: 'bar'}).toEqual '/fluffy_parents/1/fluffies/test'
86
89
 
87
- describe "finds resource", ->
90
+ describe '@find(:id)', ->
88
91
  rawData = '{"fluffy": {"id": 1, "name": "test1"}}'
89
92
 
90
- callback = sinon.spy (target, data) ->
91
- expect(target instanceof Fluffy).toEqual true
92
- expect(target.id()).toEqual 1
93
- expect(target 'name').toEqual 'test1'
94
- expect(data).toEqual $.parseJSON(rawData)
95
-
96
- it "without params", ->
97
- resource = Fluffy.find 1, callback
93
+ beforeEach ->
94
+ @callback = sinon.spy (target, data) ->
95
+ expect(target instanceof Fluffy).toEqual true
96
+ expect(target.id()).toEqual 1
97
+ expect(target 'name').toEqual 'test1'
98
+ expect(data).toEqual $.parseJSON(rawData)
99
+
100
+ it "gets item without params", ->
101
+ resource = Fluffy.find 1, @callback
98
102
  checkAndRespond @server.requests[0], 'GET', /^\/fluffies\/1\?_=\d+/, rawData
99
- expect(callback.callCount).toEqual 1
103
+ expect(@callback.callCount).toEqual 1
100
104
 
101
- it "with from", ->
102
- resource = Fluffy.find 1, {from: 'action'}, callback
105
+ it "gets item with from", ->
106
+ resource = Fluffy.find 1, {from: 'action'}, @callback
103
107
  checkAndRespond @server.requests[0], 'GET', /^\/fluffies\/1\/action\?_=\d+/, rawData
104
- expect(callback.callCount).toEqual 2
108
+ expect(@callback.callCount).toEqual 1
105
109
 
106
- it "with from and parent", ->
107
- resource = Fluffy.find 1, {parent: FluffyParent.build(1), from: 'action'}, callback
110
+ it "gets item with from and parent", ->
111
+ resource = Fluffy.find 1, {parent: FluffyParent.build(1), from: 'action'}, @callback
108
112
  checkAndRespond @server.requests[0], 'GET', /^\/fluffy_parents\/1\/fluffies\/1\/action\?_=\d+/, rawData
109
- expect(callback.callCount).toEqual 3
113
+ expect(@callback.callCount).toEqual 1
110
114
 
111
- it "with params", ->
112
- resource = Fluffy.find 1, params: {foo: 'bar'}, callback
115
+ it "gets item with params", ->
116
+ resource = Fluffy.find 1, params: {foo: 'bar'}, @callback
113
117
  checkAndRespond @server.requests[0], 'GET', /^\/fluffies\/1\?foo=bar&_=\d+/, rawData
114
- expect(callback.callCount).toEqual 4
118
+ expect(@callback.callCount).toEqual 1
115
119
 
116
- it "with direct assignation", ->
117
- resource = Fluffy.find 1, ->
118
- expect(resource instanceof Fluffy).toEqual true
119
- expect(resource.id()).toEqual 1
120
- expect(resource 'name').toEqual 'test1'
120
+ it "gets item with url", ->
121
+ resource = Fluffy.find 1, url: '/some/custom/url', @callback
122
+ checkAndRespond @server.requests[0], 'GET', /^\/some\/custom\/url\?_=\d+/, rawData
123
+ expect(@callback.callCount).toEqual 1
121
124
 
125
+ it "gets item with direct assignation", ->
126
+ resource = Fluffy.find 1, (cbResource) ->
127
+ expect(resource).toBe cbResource
122
128
  checkAndRespond @server.requests[0], 'GET', /^\/fluffies\/1\?_=\d+/, rawData
123
129
 
124
- describe "finds collection", ->
130
+ describe '@find(\'all\')', ->
125
131
  rawData = '{"page": 42, "fluffies": [{"id": 1, "name": "test1"}, {"id": 2, "name": "test2"}]}'
126
132
 
127
- callback = sinon.spy (target, data) ->
128
- expect(target instanceof Joosy.Resources.RESTCollection).toEqual true
129
- expect(target.size()).toEqual 2
130
- expect(target.at(0) instanceof Fluffy).toEqual true
131
- expect(data).toEqual $.parseJSON(rawData)
132
-
133
- it "without params", ->
134
- resource = Fluffy.find 'all', callback
133
+ beforeEach ->
134
+ @callback = sinon.spy (target, data) ->
135
+ expect(target instanceof Joosy.Resources.RESTCollection).toEqual true
136
+ expect(target.size()).toEqual 2
137
+ expect(target.at(0) instanceof Fluffy).toEqual true
138
+ expect(data).toEqual $.parseJSON(rawData)
139
+
140
+ it "gets collection without params", ->
141
+ resource = Fluffy.find 'all', @callback
135
142
  checkAndRespond @server.requests[0], 'GET', /^\/fluffies\?_=\d+/, rawData
136
- expect(callback.callCount).toEqual 1
143
+ expect(@callback.callCount).toEqual 1
137
144
 
138
- it "with from", ->
139
- resource = Fluffy.find 'all', {from: 'action'}, callback
145
+ it "gets collection with from", ->
146
+ resource = Fluffy.find 'all', {from: 'action'}, @callback
140
147
  checkAndRespond @server.requests[0], 'GET', /^\/fluffies\/action\?_=\d+/, rawData
141
- expect(callback.callCount).toEqual 2
148
+ expect(@callback.callCount).toEqual 1
142
149
 
143
- it "with from and parent", ->
144
- resource = Fluffy.find 'all', {parent: FluffyParent.build(1), from: 'action'}, callback
150
+ it "gets collection with from and parent", ->
151
+ resource = Fluffy.find 'all', {parent: FluffyParent.build(1), from: 'action'}, @callback
145
152
  checkAndRespond @server.requests[0], 'GET', /^\/fluffy_parents\/1\/fluffies\/action\?_=\d+/, rawData
146
- expect(callback.callCount).toEqual 3
153
+ expect(@callback.callCount).toEqual 1
147
154
 
148
- it "with params", ->
149
- resource = Fluffy.find 'all', params: {foo: 'bar'}, callback
155
+ it "gets collection with params", ->
156
+ resource = Fluffy.find 'all', params: {foo: 'bar'}, @callback
150
157
  checkAndRespond @server.requests[0], 'GET', /^\/fluffies\?foo=bar&_=\d+/, rawData
151
- expect(callback.callCount).toEqual 4
158
+ expect(@callback.callCount).toEqual 1
159
+
160
+ it 'gets collection with url', ->
161
+ resource = Fluffy.find 'all', url: '/some/custom/url', @callback
162
+ checkAndRespond @server.requests[0], 'GET', /^\/some\/custom\/url\?_=\d+/, rawData
163
+ expect(@callback.callCount).toEqual 1
164
+
152
165
 
153
166
  it "reloads resource", ->
154
167
  rawData = '{"fluffy": {"id": 1, "name": "test1"}}'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joosy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0.alpha.55
4
+ version: 1.2.0.alpha.56
5
5
  platform: ruby
6
6
  authors:
7
7
  - Boris Staal
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-08-07 00:00:00.000000000 Z
13
+ date: 2013-08-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: sprockets