joosy 1.0.0.RC5 → 1.0.0.RC6
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.
- data/Gemfile +2 -4
- data/Gemfile.lock +28 -20
- data/Guardfile +8 -0
- data/app/assets/javascripts/joosy/core/application.js.coffee +1 -0
- data/app/assets/javascripts/joosy/core/form.js.coffee +28 -6
- data/app/assets/javascripts/joosy/core/modules/events.js.coffee +30 -4
- data/app/assets/javascripts/joosy/core/page.js.coffee +1 -4
- data/app/assets/javascripts/joosy/core/resource/generic.js.coffee +1 -1
- data/joosy.gemspec +1 -1
- data/lib/joosy/rails/version.rb +1 -1
- data/spec/javascripts/joosy/core/form_spec.js.coffee +63 -2
- data/spec/javascripts/joosy/core/modules/events_spec.js.coffee +24 -0
- data/spec/javascripts/joosy/core/modules/renderer_spec.js.coffee +34 -0
- data/spec/javascripts/joosy/core/resource/generic_spec.js.coffee +12 -0
- data/spec/javascripts/support/{sinon-ie-1.3.1.js → sinon-ie-1.3.1.js.skip} +0 -0
- metadata +23 -22
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
GIT
|
2
2
|
remote: git://github.com/pivotal/jasmine-gem.git
|
3
|
-
revision:
|
3
|
+
revision: 478c6027a19f391c4fc3ca0faef001915ee7906f
|
4
4
|
specs:
|
5
|
-
jasmine (1.2
|
6
|
-
jasmine-core (
|
5
|
+
jasmine (1.3.2)
|
6
|
+
jasmine-core (~> 1.3.1)
|
7
7
|
rack (~> 1.0)
|
8
8
|
rspec (>= 1.3.1)
|
9
9
|
selenium-webdriver (>= 0.1.3)
|
@@ -11,7 +11,7 @@ GIT
|
|
11
11
|
PATH
|
12
12
|
remote: .
|
13
13
|
specs:
|
14
|
-
joosy (1.0.0.
|
14
|
+
joosy (1.0.0.RC5)
|
15
15
|
coffee-rails
|
16
16
|
haml_coffee_assets
|
17
17
|
i18n-js
|
@@ -48,6 +48,7 @@ GEM
|
|
48
48
|
activesupport (3.2.9)
|
49
49
|
i18n (~> 0.6)
|
50
50
|
multi_json (~> 1.0)
|
51
|
+
addressable (2.3.2)
|
51
52
|
arel (3.0.2)
|
52
53
|
builder (3.0.4)
|
53
54
|
childprocess (0.3.6)
|
@@ -67,8 +68,8 @@ GEM
|
|
67
68
|
eventmachine (1.0.0-java)
|
68
69
|
execjs (1.4.0)
|
69
70
|
multi_json (~> 1.0)
|
70
|
-
ffi (1.
|
71
|
-
ffi (1.
|
71
|
+
ffi (1.2.0)
|
72
|
+
ffi (1.2.0-java)
|
72
73
|
guard (1.5.4)
|
73
74
|
listen (>= 0.4.2)
|
74
75
|
lumberjack (>= 1.0.2)
|
@@ -80,7 +81,7 @@ GEM
|
|
80
81
|
guard-sprockets (0.4.1)
|
81
82
|
guard (>= 1.1.0)
|
82
83
|
sprockets (~> 2.0)
|
83
|
-
haml_coffee_assets (1.
|
84
|
+
haml_coffee_assets (1.8.2)
|
84
85
|
coffee-script (>= 1.0.0)
|
85
86
|
sprockets (>= 2.0.3)
|
86
87
|
tilt (>= 1.3.3)
|
@@ -88,16 +89,19 @@ GEM
|
|
88
89
|
i18n (0.6.1)
|
89
90
|
i18n-js (2.1.2)
|
90
91
|
i18n
|
91
|
-
jasmine-core (1.
|
92
|
+
jasmine-core (1.3.1)
|
92
93
|
journey (1.0.4)
|
93
|
-
jquery-rails (2.1.
|
94
|
-
railties (>= 3.
|
95
|
-
thor (
|
94
|
+
jquery-rails (2.1.4)
|
95
|
+
railties (>= 3.0, < 5.0)
|
96
|
+
thor (>= 0.14, < 2.0)
|
96
97
|
json (1.7.5)
|
97
98
|
json (1.7.5-java)
|
98
|
-
|
99
|
+
libnotify (0.8.0)
|
100
|
+
ffi (>= 1.0.11)
|
101
|
+
libwebsocket (0.1.7.1)
|
102
|
+
addressable
|
99
103
|
websocket
|
100
|
-
listen (0.
|
104
|
+
listen (0.6.0)
|
101
105
|
lumberjack (1.0.2)
|
102
106
|
mail (2.4.4)
|
103
107
|
i18n (>= 0.4.0)
|
@@ -105,7 +109,7 @@ GEM
|
|
105
109
|
treetop (~> 1.4.8)
|
106
110
|
method_source (0.8.1)
|
107
111
|
mime-types (1.19)
|
108
|
-
multi_json (1.
|
112
|
+
multi_json (1.5.0)
|
109
113
|
polyglot (0.3.3)
|
110
114
|
pry (0.9.10)
|
111
115
|
coderay (~> 1.0.5)
|
@@ -138,26 +142,28 @@ GEM
|
|
138
142
|
rake (>= 0.8.7)
|
139
143
|
rdoc (~> 3.4)
|
140
144
|
thor (>= 0.14.6, < 2.0)
|
141
|
-
rake (10.0.
|
145
|
+
rake (10.0.3)
|
146
|
+
rb-inotify (0.8.8)
|
147
|
+
ffi (>= 0.5.0)
|
142
148
|
rdoc (3.12)
|
143
149
|
json (~> 1.4)
|
144
150
|
rspec (2.12.0)
|
145
151
|
rspec-core (~> 2.12.0)
|
146
152
|
rspec-expectations (~> 2.12.0)
|
147
153
|
rspec-mocks (~> 2.12.0)
|
148
|
-
rspec-core (2.12.
|
149
|
-
rspec-expectations (2.12.
|
154
|
+
rspec-core (2.12.2)
|
155
|
+
rspec-expectations (2.12.1)
|
150
156
|
diff-lcs (~> 1.1.3)
|
151
157
|
rspec-mocks (2.12.0)
|
152
158
|
rubyzip (0.9.9)
|
153
|
-
selenium-webdriver (2.
|
159
|
+
selenium-webdriver (2.27.2)
|
154
160
|
childprocess (>= 0.2.5)
|
155
161
|
libwebsocket (~> 0.1.3)
|
156
162
|
multi_json (~> 1.0)
|
157
163
|
rubyzip
|
158
164
|
slop (3.3.3)
|
159
165
|
spoon (0.0.1)
|
160
|
-
sprockets (2.2.
|
166
|
+
sprockets (2.2.2)
|
161
167
|
hike (~> 1.2)
|
162
168
|
multi_json (~> 1.0)
|
163
169
|
rack (~> 1.0)
|
@@ -172,7 +178,7 @@ GEM
|
|
172
178
|
polyglot
|
173
179
|
polyglot (>= 0.3.1)
|
174
180
|
tzinfo (0.3.35)
|
175
|
-
websocket (1.0.
|
181
|
+
websocket (1.0.6)
|
176
182
|
|
177
183
|
PLATFORMS
|
178
184
|
java
|
@@ -184,4 +190,6 @@ DEPENDENCIES
|
|
184
190
|
guard-sprockets
|
185
191
|
jasmine!
|
186
192
|
joosy!
|
193
|
+
libnotify
|
194
|
+
rb-inotify
|
187
195
|
thin
|
data/Guardfile
CHANGED
@@ -98,6 +98,7 @@ class Joosy.Form extends Joosy.Module
|
|
98
98
|
# @option options [String] resourceName The string to use as a resource name prefix for fields to match invalidation
|
99
99
|
# @option options [String] action Action URL for the form
|
100
100
|
# @option options [String] method HTTP method, for example PUT, that will passed in _method param
|
101
|
+
# @option options [Boolean] debounce Drop submit events while there is a pending submit request
|
101
102
|
#
|
102
103
|
constructor: (form, options={}) ->
|
103
104
|
if Object.isFunction options
|
@@ -120,10 +121,18 @@ class Joosy.Form extends Joosy.Module
|
|
120
121
|
@container.ajaxForm
|
121
122
|
dataType: 'json'
|
122
123
|
beforeSend: =>
|
124
|
+
return false if @__debounce arguments...
|
123
125
|
@__before arguments...
|
126
|
+
@__pending_request = true
|
127
|
+
@debugAs this, 'beforeSend: pending_request = true'
|
128
|
+
true
|
124
129
|
success: =>
|
130
|
+
@__pending_request = false
|
131
|
+
@debugAs this, 'success: pending_request = false'
|
125
132
|
@__success arguments...
|
126
133
|
error: =>
|
134
|
+
@__pending_request = false
|
135
|
+
@debugAs this, 'error: pending_request = false'
|
127
136
|
@__error arguments...
|
128
137
|
xhr: =>
|
129
138
|
xhr = $.ajaxSettings.xhr()
|
@@ -133,16 +142,16 @@ class Joosy.Form extends Joosy.Module
|
|
133
142
|
@progress (event.position / event.total * 100).round 2
|
134
143
|
xhr
|
135
144
|
|
136
|
-
if
|
137
|
-
@fill(
|
145
|
+
if @resource?
|
146
|
+
@fill(@resource, options)
|
138
147
|
delete @resource
|
139
148
|
|
140
|
-
if
|
141
|
-
@container.attr 'action',
|
149
|
+
if @action?
|
150
|
+
@container.attr 'action', @action
|
142
151
|
@container.attr 'method', 'POST'
|
143
152
|
|
144
|
-
if
|
145
|
-
@__markMethod
|
153
|
+
if @method?
|
154
|
+
@__markMethod @method
|
146
155
|
|
147
156
|
#
|
148
157
|
# Resets form submit behavior to default
|
@@ -198,6 +207,7 @@ class Joosy.Form extends Joosy.Module
|
|
198
207
|
|
199
208
|
filler data, resource.__entityName || options.resourceName
|
200
209
|
|
210
|
+
$('input[name=_method]', @container).remove()
|
201
211
|
@__markMethod(options?.method || 'PUT') if resource.id()
|
202
212
|
|
203
213
|
url = options?.action || (if resource.id()? then resource.memberPath() else resource.collectionPath())
|
@@ -267,6 +277,18 @@ class Joosy.Form extends Joosy.Module
|
|
267
277
|
|
268
278
|
return false
|
269
279
|
|
280
|
+
#
|
281
|
+
# Aborts form submit if there is already another one pending XHR
|
282
|
+
#
|
283
|
+
__debounce: (xhr) ->
|
284
|
+
@debugAs this, "debounce: pending_request == #{@__pending_request}"
|
285
|
+
if @__pending_request && @debounce != false
|
286
|
+
if @debounce || Joosy.Application.debounceForms
|
287
|
+
xhr.abort()
|
288
|
+
@debugAs this, "debounce: xhr aborted"
|
289
|
+
return true
|
290
|
+
false
|
291
|
+
|
270
292
|
#
|
271
293
|
# Finds field by field name.
|
272
294
|
# This is not inlined since we want to override
|
@@ -8,26 +8,38 @@ Joosy.Modules.Events =
|
|
8
8
|
#
|
9
9
|
# Waits for the list of given events to happen at least once. Then runs callback.
|
10
10
|
#
|
11
|
-
# @param [String] events
|
11
|
+
# @param [String|Array] events List of events to wait for separated by space
|
12
12
|
# @param [Function] callback Action to run when all events were triggered at least once
|
13
|
+
# @param [Hash] options Options
|
13
14
|
#
|
14
|
-
|
15
|
+
# @option options [Boolean] unique Call has no effect if true and the given pair
|
16
|
+
# of events and callback is already set up
|
17
|
+
#
|
18
|
+
wait: (events, callback, options = {}) ->
|
15
19
|
events = @__splitEvents events
|
16
20
|
@__validateEvents events
|
17
21
|
|
22
|
+
return if options.unique && @__isBound(events, callback, true)
|
23
|
+
|
18
24
|
@__oneShotEvents ||= []
|
19
25
|
@__oneShotEvents.push [events, callback]
|
20
26
|
|
21
27
|
#
|
22
28
|
# Binds action to run each time any of given even was triggered
|
23
29
|
#
|
24
|
-
# @param [String] events
|
30
|
+
# @param [String|Array] events List of events separated by space
|
25
31
|
# @param [Function] callback Action to run on trigger
|
32
|
+
# @param [Hash] options Options
|
26
33
|
#
|
27
|
-
|
34
|
+
# @option options [Boolean] unique Call has no effect if true and the given pair
|
35
|
+
# of events and callback is already set up
|
36
|
+
#
|
37
|
+
bind: (events, callback, options = {}) ->
|
28
38
|
events = @__splitEvents events
|
29
39
|
@__validateEvents events
|
30
40
|
|
41
|
+
return if options.unique && @__isBound(events, callback)
|
42
|
+
|
31
43
|
@__boundEvents ||= []
|
32
44
|
@__boundEvents.push [events, callback]
|
33
45
|
|
@@ -101,6 +113,20 @@ Joosy.Modules.Events =
|
|
101
113
|
unless Object.isArray(events) && events.length > 0
|
102
114
|
throw new Error "#{Joosy.Module.__className @}> bind invalid events: #{events}"
|
103
115
|
|
116
|
+
__isBound: (events, callback, oneShot = false) ->
|
117
|
+
haystack = if oneShot
|
118
|
+
@__oneShotEvents
|
119
|
+
else
|
120
|
+
@__boundEvents
|
121
|
+
|
122
|
+
return false unless haystack
|
123
|
+
|
124
|
+
result = haystack.find (item) ->
|
125
|
+
item[0].length == events.length &&
|
126
|
+
item[0].subtract(events).isEmpty() &&
|
127
|
+
item[1] == callback
|
128
|
+
|
129
|
+
!!result
|
104
130
|
|
105
131
|
#
|
106
132
|
# Internal representation of {Joosy.Modules.Events.synchronize} context
|
@@ -96,10 +96,6 @@ class Joosy.Page extends Joosy.Module
|
|
96
96
|
@paint: (callback) ->
|
97
97
|
@::__paint = callback
|
98
98
|
|
99
|
-
#
|
100
|
-
# @todo Does anybody have idea why we could need this method?
|
101
|
-
# Looks like something should be removed from here and bootstrap proccess.
|
102
|
-
#
|
103
99
|
@afterPaint: (callback) ->
|
104
100
|
@::__afterPaint = callback
|
105
101
|
|
@@ -324,6 +320,7 @@ class Joosy.Page extends Joosy.Module
|
|
324
320
|
@__fixHeight()
|
325
321
|
|
326
322
|
@wait "stageClear dataReceived", =>
|
323
|
+
@previous?.__afterPaint?(callbacksParams)
|
327
324
|
@__callSyncedThrough this, '__paint', callbacksParams, =>
|
328
325
|
# Page HTML
|
329
326
|
@swapContainer @layout.content(), @__renderer(@data || {})
|
@@ -173,8 +173,8 @@ class Joosy.Resource.Generic extends Joosy.Module
|
|
173
173
|
shim = Joosy.Resource.Generic.identity[klass][id]
|
174
174
|
shim.load data
|
175
175
|
else
|
176
|
-
@apply shim, [data]
|
177
176
|
Joosy.Resource.Generic.identity[klass][id] = shim
|
177
|
+
@apply shim, [data]
|
178
178
|
else
|
179
179
|
@apply shim, [data]
|
180
180
|
|
data/joosy.gemspec
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.platform = Gem::Platform::RUBY
|
7
7
|
s.summary = "Joosy Framework support for Ruby on Rails"
|
8
8
|
s.email = "boris@roundlake.ru"
|
9
|
-
s.homepage = "http://github.com/
|
9
|
+
s.homepage = "http://github.com/joosy/joosy"
|
10
10
|
s.description = "A gem wrapper to include Joosy via the asset pipeline."
|
11
11
|
s.authors = ['Boris Staal', 'Andrew Shaydurov', 'Peter Zotov', 'Alexander Pavlenko']
|
12
12
|
|
data/lib/joosy/rails/version.rb
CHANGED
@@ -69,11 +69,22 @@ describe "Joosy.Form", ->
|
|
69
69
|
|
70
70
|
it "should hijack form method if it differs from POST/GET", ->
|
71
71
|
form = new Joosy.Form @putForm, callback=sinon.spy()
|
72
|
-
marker = @putForm.find "input[
|
72
|
+
marker = @putForm.find "input[name=_method]"
|
73
73
|
expect(@putForm.attr('method')?.toLowerCase()).toEqual 'post'
|
74
|
-
expect(marker.attr '
|
74
|
+
expect(marker.attr 'type').toEqual 'hidden'
|
75
75
|
expect(marker.attr 'value').toEqual 'put'
|
76
76
|
|
77
|
+
it "should not stack _method inputs", ->
|
78
|
+
form = new Joosy.Form @putForm
|
79
|
+
3.times =>
|
80
|
+
form.fill @resource
|
81
|
+
marker = @putForm.find "input[name=_method]"
|
82
|
+
expect(marker.length).toEqual 1
|
83
|
+
expect(marker.attr 'value').toEqual 'PUT'
|
84
|
+
form.fill Test
|
85
|
+
marker = @putForm.find "input[name=_method]"
|
86
|
+
expect(marker.length).toEqual 0
|
87
|
+
|
77
88
|
describe "Filling", ->
|
78
89
|
|
79
90
|
beforeEach ->
|
@@ -159,6 +170,56 @@ describe "Joosy.Form", ->
|
|
159
170
|
@nestedForm.fill @resource
|
160
171
|
# expect(you).toBeAlive(), lol
|
161
172
|
|
173
|
+
describe 'Submit', ->
|
174
|
+
|
175
|
+
beforeEach ->
|
176
|
+
@xhr = sinon.useFakeXMLHttpRequest()
|
177
|
+
@requests = []
|
178
|
+
@xhr.onCreate = (xhr) =>
|
179
|
+
@requests.push xhr
|
180
|
+
|
181
|
+
afterEach ->
|
182
|
+
@xhr.restore()
|
183
|
+
delete @requests
|
184
|
+
|
185
|
+
describe 'Global debouncing disabled', ->
|
186
|
+
|
187
|
+
it 'should allow multiple submit', ->
|
188
|
+
@nudeForm = new Joosy.Form @nudeForm
|
189
|
+
3.times =>
|
190
|
+
@nudeForm.container.submit()
|
191
|
+
expect(@requests.length).toEqual 3
|
192
|
+
|
193
|
+
it 'should optionally prevent multiple submit', ->
|
194
|
+
@nudeForm = new Joosy.Form @nudeForm, debounce: true
|
195
|
+
[200, 404, 500].each (code) =>
|
196
|
+
3.times =>
|
197
|
+
@nudeForm.container.submit()
|
198
|
+
expect(@requests.length).toEqual 1
|
199
|
+
@requests[0].respond(code, {}, '{}')
|
200
|
+
expect(@requests.length).toEqual 1
|
201
|
+
@requests = []
|
202
|
+
|
203
|
+
describe 'Global debouncing enabled', ->
|
204
|
+
|
205
|
+
beforeEach ->
|
206
|
+
Joosy.Application.debounceForms = true
|
207
|
+
|
208
|
+
afterEach ->
|
209
|
+
Joosy.Application.debounceForms = false
|
210
|
+
|
211
|
+
it 'should optionally allow multiple submit', ->
|
212
|
+
@nudeForm = new Joosy.Form @nudeForm, debounce: false
|
213
|
+
3.times =>
|
214
|
+
@nudeForm.container.submit()
|
215
|
+
expect(@requests.length).toEqual 3
|
216
|
+
|
217
|
+
it 'should prevent multiple submit', ->
|
218
|
+
@nudeForm = new Joosy.Form @nudeForm
|
219
|
+
3.times =>
|
220
|
+
@nudeForm.container.submit()
|
221
|
+
expect(@requests.length).toEqual 1
|
222
|
+
|
162
223
|
describe "Callbacks", ->
|
163
224
|
|
164
225
|
beforeEach ->
|
@@ -54,6 +54,30 @@ describe "Joosy.Modules.Events", ->
|
|
54
54
|
@box.trigger 'event'
|
55
55
|
expect(callback.callCount).toEqual 3
|
56
56
|
|
57
|
+
it "should allow multiple binding", ->
|
58
|
+
callback = ->
|
59
|
+
|
60
|
+
3.times =>
|
61
|
+
@box.bind 'event', callback
|
62
|
+
expect(@box.__boundEvents).toEqual [[['event'], callback], [['event'], callback], [['event'], callback]]
|
63
|
+
|
64
|
+
3.times =>
|
65
|
+
@box.wait 'event', callback
|
66
|
+
expect(@box.__oneShotEvents).toEqual [[['event'], callback], [['event'], callback], [['event'], callback]]
|
67
|
+
|
68
|
+
it "should ignore multiple binding", ->
|
69
|
+
callback = ->
|
70
|
+
|
71
|
+
@box.bind 'event', callback
|
72
|
+
3.times =>
|
73
|
+
@box.bind 'event', callback, unique: true
|
74
|
+
expect(@box.__boundEvents).toEqual [[['event'], callback]]
|
75
|
+
|
76
|
+
@box.wait 'event', callback
|
77
|
+
3.times =>
|
78
|
+
@box.wait 'event', callback, unique: true
|
79
|
+
expect(@box.__oneShotEvents).toEqual [[['event'], callback]]
|
80
|
+
|
57
81
|
it "should handle inheritance well", ->
|
58
82
|
callback = sinon.spy()
|
59
83
|
@sub.wait 'foo', callback
|
@@ -112,6 +112,40 @@ describe "Joosy.Modules.Renderer", ->
|
|
112
112
|
runs ->
|
113
113
|
expect(elem.text()).toBe "suck"
|
114
114
|
|
115
|
+
it "renders collections and track its new items", ->
|
116
|
+
class Foo extends Joosy.Resource.Generic
|
117
|
+
@entity 'foo'
|
118
|
+
|
119
|
+
data = new Joosy.Resource.Collection(Foo)
|
120
|
+
data.load [
|
121
|
+
{key: 1},
|
122
|
+
{key: 2}
|
123
|
+
]
|
124
|
+
|
125
|
+
@TestContainer.view (locals) ->
|
126
|
+
template = -> @data.map((item) -> item('key')).join('')
|
127
|
+
@renderDynamic(template, locals)
|
128
|
+
|
129
|
+
elem = $("<div></div>")
|
130
|
+
@ground.append elem
|
131
|
+
elem.html @dummyContainer.__renderer(data)
|
132
|
+
|
133
|
+
waits 0
|
134
|
+
|
135
|
+
runs ->
|
136
|
+
expect(elem.text()).toBe "12"
|
137
|
+
data.add Foo.build(key: 3)
|
138
|
+
|
139
|
+
waits 0
|
140
|
+
|
141
|
+
runs ->
|
142
|
+
expect(elem.text()).toBe "123"
|
143
|
+
data.at(2)('key', 6)
|
144
|
+
|
145
|
+
waits 0
|
146
|
+
|
147
|
+
runs ->
|
148
|
+
expect(elem.text()).toBe "126"
|
115
149
|
|
116
150
|
it "debounces morpher updates", ->
|
117
151
|
@TestContainer.view (locals) ->
|
@@ -7,6 +7,11 @@ describe "Joosy.Resource.Generic", ->
|
|
7
7
|
@entity 'test'
|
8
8
|
@map 'test_inlines', TestInline
|
9
9
|
|
10
|
+
class TestNode extends Joosy.Resource.Generic
|
11
|
+
@entity 'test_node'
|
12
|
+
@map 'children', TestNode
|
13
|
+
@map 'parent', TestNode
|
14
|
+
|
10
15
|
beforeEach ->
|
11
16
|
@resource = Joosy.Resource.Generic.build @data =
|
12
17
|
foo: 'bar'
|
@@ -153,3 +158,10 @@ describe "Joosy.Resource.Generic", ->
|
|
153
158
|
inline('foo', 'bar')
|
154
159
|
|
155
160
|
expect(root('test_inlines').at(0)('foo')).toEqual 'bar'
|
161
|
+
|
162
|
+
it "handles nested bi-directional reference", ->
|
163
|
+
biDirectionTestNode = TestNode.build
|
164
|
+
id: 1
|
165
|
+
children: [{id: 2, parent: {id: 1}}]
|
166
|
+
|
167
|
+
expect(biDirectionTestNode).toEqual(biDirectionTestNode('children').at(0)('parent'))
|
File without changes
|
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.0.0.
|
4
|
+
version: 1.0.0.RC6
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,11 +12,11 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2013-01-09 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rails
|
19
|
-
requirement: &
|
19
|
+
requirement: &70125953693180 !ruby/object:Gem::Requirement
|
20
20
|
none: false
|
21
21
|
requirements:
|
22
22
|
- - ! '>='
|
@@ -24,10 +24,10 @@ dependencies:
|
|
24
24
|
version: 3.1.0
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
|
-
version_requirements: *
|
27
|
+
version_requirements: *70125953693180
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: coffee-rails
|
30
|
-
requirement: &
|
30
|
+
requirement: &70125953692180 !ruby/object:Gem::Requirement
|
31
31
|
none: false
|
32
32
|
requirements:
|
33
33
|
- - ! '>='
|
@@ -35,10 +35,10 @@ dependencies:
|
|
35
35
|
version: '0'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
|
-
version_requirements: *
|
38
|
+
version_requirements: *70125953692180
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: jquery-rails
|
41
|
-
requirement: &
|
41
|
+
requirement: &70125953691180 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
44
|
- - ! '>='
|
@@ -46,10 +46,10 @@ dependencies:
|
|
46
46
|
version: '0'
|
47
47
|
type: :runtime
|
48
48
|
prerelease: false
|
49
|
-
version_requirements: *
|
49
|
+
version_requirements: *70125953691180
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
51
|
name: haml_coffee_assets
|
52
|
-
requirement: &
|
52
|
+
requirement: &70125953689800 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
54
54
|
requirements:
|
55
55
|
- - ! '>='
|
@@ -57,10 +57,10 @@ dependencies:
|
|
57
57
|
version: '0'
|
58
58
|
type: :runtime
|
59
59
|
prerelease: false
|
60
|
-
version_requirements: *
|
60
|
+
version_requirements: *70125953689800
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: i18n-js
|
63
|
-
requirement: &
|
63
|
+
requirement: &70125953491060 !ruby/object:Gem::Requirement
|
64
64
|
none: false
|
65
65
|
requirements:
|
66
66
|
- - ! '>='
|
@@ -68,10 +68,10 @@ dependencies:
|
|
68
68
|
version: '0'
|
69
69
|
type: :runtime
|
70
70
|
prerelease: false
|
71
|
-
version_requirements: *
|
71
|
+
version_requirements: *70125953491060
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: guard
|
74
|
-
requirement: &
|
74
|
+
requirement: &70125953487880 !ruby/object:Gem::Requirement
|
75
75
|
none: false
|
76
76
|
requirements:
|
77
77
|
- - ! '>='
|
@@ -79,10 +79,10 @@ dependencies:
|
|
79
79
|
version: '0'
|
80
80
|
type: :development
|
81
81
|
prerelease: false
|
82
|
-
version_requirements: *
|
82
|
+
version_requirements: *70125953487880
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: guard-coffeescript
|
85
|
-
requirement: &
|
85
|
+
requirement: &70125953487340 !ruby/object:Gem::Requirement
|
86
86
|
none: false
|
87
87
|
requirements:
|
88
88
|
- - ! '>='
|
@@ -90,10 +90,10 @@ dependencies:
|
|
90
90
|
version: '0'
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
|
-
version_requirements: *
|
93
|
+
version_requirements: *70125953487340
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
95
|
name: guard-sprockets
|
96
|
-
requirement: &
|
96
|
+
requirement: &70125953486620 !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
98
98
|
requirements:
|
99
99
|
- - ! '>='
|
@@ -101,10 +101,10 @@ dependencies:
|
|
101
101
|
version: '0'
|
102
102
|
type: :development
|
103
103
|
prerelease: false
|
104
|
-
version_requirements: *
|
104
|
+
version_requirements: *70125953486620
|
105
105
|
- !ruby/object:Gem::Dependency
|
106
106
|
name: jasmine
|
107
|
-
requirement: &
|
107
|
+
requirement: &70125953485680 !ruby/object:Gem::Requirement
|
108
108
|
none: false
|
109
109
|
requirements:
|
110
110
|
- - ! '>='
|
@@ -112,7 +112,7 @@ dependencies:
|
|
112
112
|
version: '0'
|
113
113
|
type: :development
|
114
114
|
prerelease: false
|
115
|
-
version_requirements: *
|
115
|
+
version_requirements: *70125953485680
|
116
116
|
description: A gem wrapper to include Joosy via the asset pipeline.
|
117
117
|
email: boris@roundlake.ru
|
118
118
|
executables: []
|
@@ -220,12 +220,12 @@ files:
|
|
220
220
|
- spec/javascripts/support/jasmine_config.rb
|
221
221
|
- spec/javascripts/support/jasmine_runner.rb
|
222
222
|
- spec/javascripts/support/sinon-1.3.1.js
|
223
|
-
- spec/javascripts/support/sinon-ie-1.3.1.js
|
223
|
+
- spec/javascripts/support/sinon-ie-1.3.1.js.skip
|
224
224
|
- vendor/assets/javascripts/jquery.form.js
|
225
225
|
- vendor/assets/javascripts/jquery.hashchange.js
|
226
226
|
- vendor/assets/javascripts/metamorph.js
|
227
227
|
- vendor/assets/javascripts/sugar.js
|
228
|
-
homepage: http://github.com/
|
228
|
+
homepage: http://github.com/joosy/joosy
|
229
229
|
licenses: []
|
230
230
|
post_install_message:
|
231
231
|
rdoc_options: []
|
@@ -250,3 +250,4 @@ signing_key:
|
|
250
250
|
specification_version: 3
|
251
251
|
summary: Joosy Framework support for Ruby on Rails
|
252
252
|
test_files: []
|
253
|
+
has_rdoc:
|