opal-jquery 0.4.1 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +5 -5
  2. data/.editorconfig +12 -0
  3. data/.travis.yml +27 -9
  4. data/CHANGELOG.md +56 -2
  5. data/Gemfile +15 -0
  6. data/README.md +5 -3
  7. data/Rakefile +22 -4
  8. data/config.ru +4 -6
  9. data/lib/opal/jquery/element.rb +91 -25
  10. data/lib/opal/jquery/http.rb +10 -2
  11. data/lib/opal/jquery/version.rb +1 -1
  12. data/lib/opal/jquery/window.rb +2 -1
  13. data/opal-jquery.gemspec +8 -7
  14. data/{spec → spec-opal}/document_spec.rb +11 -4
  15. data/{spec → spec-opal}/element/after_spec.rb +1 -1
  16. data/{spec → spec-opal}/element/animations_spec.rb +5 -5
  17. data/{spec → spec-opal}/element/append_spec.rb +1 -1
  18. data/{spec → spec-opal}/element/append_to_spec.rb +1 -1
  19. data/{spec → spec-opal}/element/at_spec.rb +1 -1
  20. data/{spec → spec-opal}/element/attributes_spec.rb +1 -1
  21. data/{spec → spec-opal}/element/before_spec.rb +1 -1
  22. data/{spec → spec-opal}/element/class_name_spec.rb +2 -2
  23. data/{spec → spec-opal}/element/css_spec.rb +3 -3
  24. data/{spec → spec-opal}/element/display_spec.rb +6 -6
  25. data/spec-opal/element/expose_spec.rb +73 -0
  26. data/{spec → spec-opal}/element/height_width_spec.rb +1 -1
  27. data/{spec → spec-opal}/element/inspect_spec.rb +1 -1
  28. data/{spec → spec-opal}/element/iterable_spec.rb +1 -1
  29. data/{spec → spec-opal}/element/length_spec.rb +1 -1
  30. data/spec-opal/element/method_missing_spec.rb +34 -0
  31. data/{spec → spec-opal}/element/prepend_spec.rb +1 -1
  32. data/{spec → spec-opal}/element/to_s_spec.rb +1 -1
  33. data/{spec → spec-opal}/element/traversing_spec.rb +5 -5
  34. data/spec-opal/element_spec.rb +261 -0
  35. data/{spec → spec-opal}/event_spec.rb +1 -1
  36. data/{spec → spec-opal}/fixtures/simple.txt +0 -0
  37. data/{spec → spec-opal}/fixtures/user.json +0 -0
  38. data/{spec → spec-opal}/http_spec.rb +15 -1
  39. data/{spec → spec-opal}/jquery/index.html.erb +2 -1
  40. data/spec-opal/jquery/index3.html.erb +10 -0
  41. data/{spec/jquery/jquery.js → spec-opal/jquery/jquery-1.8.3.js} +0 -0
  42. data/spec-opal/jquery/jquery-3.0.0.js +4 -0
  43. data/spec-opal/kernel_spec.rb +15 -0
  44. data/{spec → spec-opal}/local_storage_spec.rb +1 -1
  45. data/{spec → spec-opal}/spec_helper.rb +10 -0
  46. data/{spec → spec-opal}/zepto/index.html.erb +1 -0
  47. data/{spec → spec-opal}/zepto/zepto.js +0 -0
  48. metadata +81 -83
  49. data/spec/element/method_missing_spec.rb +0 -32
  50. data/spec/element_spec.rb +0 -261
  51. data/spec/kernel_spec.rb +0 -7
@@ -1,32 +0,0 @@
1
- require "spec_helper"
2
-
3
- # Add our jquery extension
4
- %x{
5
- $.fn.opal_specs_extension = function() {
6
- return "foo_bar_baz";
7
- };
8
-
9
- $.fn.opal_specs_args = function() {
10
- return Array.prototype.slice.call(arguments);
11
- };
12
- }
13
-
14
- class Element
15
- expose :opal_specs_extension, :opal_specs_args
16
- end
17
-
18
- describe "Element#exposes" do
19
- it "exposes jquery plugins by given name" do
20
- Element.new.opal_specs_extension.should eq("foo_bar_baz")
21
- end
22
-
23
- it "forwards any args onto native function" do
24
- Element.new.opal_specs_args(:foo, 42, false).should eq([:foo, 42, false])
25
- end
26
-
27
- it "only forwards calls when a native method exists" do
28
- expect {
29
- Element.new.some_unknown_plugin
30
- }.to raise_error(Exception)
31
- end
32
- end
data/spec/element_spec.rb DELETED
@@ -1,261 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Element do
4
- html <<-HTML
5
- <div id="foo">
6
- <div id="bar" class="apples"></div>
7
- </div>
8
- <div id="baz"></div>
9
- HTML
10
-
11
- describe '#on' do
12
- it 'adds an event listener onto the elements' do
13
- count = 0
14
- foo = Element['#foo']
15
-
16
- foo.on(:click) { count += 1 }
17
- count.should == 0
18
- foo.trigger(:click)
19
- count.should == 1
20
- foo.trigger(:click)
21
- count.should == 2
22
- foo.trigger(:mousedown)
23
- count.should == 2
24
- end
25
-
26
- it 'takes an optional second parameter to delegate events' do
27
- count = 0
28
- foo = Element['#foo']
29
- bar = Element['#bar']
30
-
31
- foo.on(:click, '#bar') { count += 1 }
32
- count.should == 0
33
- foo.trigger(:click)
34
- count.should == 0
35
- bar.trigger(:click)
36
- count.should == 1
37
- bar.trigger(:click)
38
- count.should == 2
39
- bar.trigger(:mousedown)
40
- count.should == 2
41
- end
42
-
43
- it 'can listen for non-browser events' do
44
- count = 0
45
- foo = Element['#foo']
46
-
47
- foo.on('opal-is-mega-lolz') { count += 1 }
48
- count.should == 0
49
- foo.trigger('opal-is-mega-lolz')
50
- count.should == 1
51
- foo.trigger('opal-is-mega-lolz')
52
- count.should == 2
53
- end
54
-
55
- it 'returns the given handler' do
56
- handler = proc {}
57
- Element['#foo'].on(:click, &handler).should == handler
58
- end
59
-
60
- it 'has an Event instance passed to the handler' do
61
- foo = Element['#foo']
62
- foo.on :click do |event|
63
- event.should be_kind_of(Event)
64
- end
65
- foo.trigger(:click)
66
- end
67
-
68
- it 'has an Event instance, plus any additional parameters passed to the handler' do
69
- foo = Element['#foo']
70
- foo.on :bozo do |event, foo, bar, baz, buz|
71
- event.should be_kind_of(Event)
72
- foo.should == 'foo'
73
- bar.should == 'bar'
74
- baz.should == 'baz'
75
- buz.should == 'buz'
76
- end
77
- foo.trigger(:bozo, ['foo', 'bar', 'baz', 'buz'])
78
- end
79
- end
80
-
81
- describe '#off' do
82
- it 'removes event handlers that were added using #on' do
83
- count = 0
84
- foo = Element['#foo']
85
-
86
- handler = foo.on(:click) { count += 1 }
87
- count.should == 0
88
- foo.trigger(:click)
89
- count.should == 1
90
- foo.off(:click, handler)
91
- count.should == 1
92
- foo.trigger(:click)
93
- count.should == 1
94
- end
95
-
96
- it 'removes event handlers added with a selector' do
97
- count = 0
98
- foo = Element['#foo']
99
- bar = Element['#bar']
100
-
101
- handler = foo.on(:click, '#bar') { count += 1 }
102
- count.should == 0
103
- bar.trigger(:click)
104
- count.should == 1
105
- foo.off(:click, '#bar', handler)
106
- count.should == 1
107
- bar.trigger(:click)
108
- count.should == 1
109
- end
110
- end
111
- end
112
-
113
- describe Element do
114
- html <<-HTML
115
- <div id="foo" class="bar"></div>
116
- <div class="woosh"></div>
117
- <div class="woosh"></div>
118
- <div class="find-foo"></div>
119
- <div class="find-bar"></div>
120
- <div class="find-foo"></div>
121
- HTML
122
-
123
- describe ".[]" do
124
- it "should be able to find elements with given id" do
125
- Element['#foo'].class_name.should == "bar"
126
- Element['#foo'].size.should == 1
127
- end
128
-
129
- it "should be able to match any valid CSS selector" do
130
- Element['.woosh'].should be_kind_of(Element)
131
- Element['.woosh'].size.should == 2
132
- end
133
-
134
- it "should return an empty Elements instance when not matching any elements" do
135
- dom = Element['.some-non-existing-class']
136
-
137
- dom.should be_kind_of(Element)
138
- dom.size.should == 0
139
- end
140
-
141
- it "should accept an HTML string and parse it into a Elements instance" do
142
- el = Element['<div id="foo-bar-baz"></div>']
143
-
144
- el.should be_kind_of(Element)
145
- el.id.should == "foo-bar-baz"
146
- el.size.should == 1
147
- end
148
- end
149
-
150
- describe ".find" do
151
- it "should find all elements matching CSS selector" do
152
- foo = Element.find '.find-foo'
153
- foo.should be_kind_of(Element)
154
- foo.length.should == 2
155
-
156
- bar = Element.find '.find-bar'
157
- bar.should be_kind_of(Element)
158
- bar.length.should == 1
159
- end
160
-
161
- it "should return an empty Element instance with length 0 when no matching" do
162
- baz = Element.find '.find-baz'
163
- baz.should be_kind_of(Element)
164
- baz.length.should == 0
165
- end
166
- end
167
-
168
- describe '.id' do
169
- it "should return a new instance with the element with given id" do
170
- Element.id('foo').should be_kind_of(Element)
171
- Element.id('foo').id.should == 'foo'
172
- end
173
-
174
- it "should return nil if no element could be found" do
175
- Element.id('bad-element-id').should be_nil
176
- end
177
- end
178
-
179
- describe '.parse' do
180
- it "should return a new instance with parsed element as single element" do
181
- foo = Element.parse '<div id="foo" class="bar"></div>'
182
- foo.id.should == 'foo'
183
- foo.class_name.should == 'bar'
184
- end
185
- end
186
-
187
- end
188
-
189
- describe "Element#data" do
190
- html <<-HTML
191
- <div id="data-foo"></div>
192
- <div id="data-ford" data-authur="dent"></div>
193
- HTML
194
-
195
- it "sets a data attribute" do
196
- foo = Element.id('data-foo')
197
- foo.data 'bar', 'baz'
198
- expect(foo.data('bar')).to eq('baz')
199
- end
200
-
201
- it "can retrieve a data attribute" do
202
- expect(Element.id('data-ford').data('authur')).to eq('dent')
203
- end
204
-
205
- it "returns nil for an undefined data attribute" do
206
- expect(Element.id('data-ford').data('not-here')).to be_nil
207
- end
208
- end
209
-
210
- describe "Element#html" do
211
- html <<-HTML
212
- <div id="foo">bar</div>
213
- HTML
214
-
215
- it "retrieves the inner html content for the element" do
216
- expect(Element.id('foo').html).to include('bar')
217
- end
218
-
219
- it "can be used to set inner html of element by passing string" do
220
- foo = Element.id 'foo'
221
- foo.html "different content"
222
-
223
- expect(foo.html).to_not include('bar')
224
- expect(foo.html).to include('different content')
225
- end
226
- end
227
-
228
- describe 'Element.expose' do
229
- subject(:element) { Element.new }
230
- before do
231
- `$.fn.exposableMethod = function() {return 123}`
232
- `$.fn.exposableMethod2 = function() {return 12}`
233
- end
234
-
235
- after do
236
- `delete $.fn.exposableMethod; delete $.fn.$exposableMethod;`
237
- `delete $.fn.exposableMethod2; delete $.fn.$exposableMethod2;`
238
- end
239
-
240
- it 'exposes methods defined on $.fn' do
241
- expect(element).not_to respond_to(:exposableMethod)
242
- Element.expose :exposableMethod
243
- expect(element).to respond_to(:exposableMethod)
244
- expect(element.exposableMethod).to eq(123)
245
- end
246
-
247
- it 'work if exposing the same method multiple times' do
248
- Element.expose :exposableMethod
249
- Element.expose :exposableMethod
250
- expect(element.exposableMethod).to eq(123)
251
-
252
- Element.expose :exposableMethod, :exposableMethod
253
- expect(element.exposableMethod).to eq(123)
254
- end
255
-
256
- it 'work if exposing multiple methods' do
257
- Element.expose :exposableMethod, :exposableMethod2
258
- expect(element.exposableMethod).to eq(123)
259
- expect(element.exposableMethod2).to eq(12)
260
- end
261
- end
data/spec/kernel_spec.rb DELETED
@@ -1,7 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'Kernel#alert' do
4
- it 'returns nil' do
5
- Kernel.alert('a message').should be_nil
6
- end
7
- end