bubble-wrap 1.1.5 → 1.2.0.pre

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,54 @@
1
+ describe BubbleWrap::Font do
2
+ [[:system, "systemFontOfSize:"], [:bold, "boldSystemFontOfSize:"], [:italic, "italicSystemFontOfSize:"]].each do |font, method|
3
+ describe ".#{font}" do
4
+ it "should work" do
5
+ f = BubbleWrap::Font.send(font, 16)
6
+ f.should == UIFont.send(method, 16)
7
+
8
+ f = BubbleWrap::Font.send(font)
9
+ f.should == UIFont.send(method, UIFont.systemFontSize)
10
+ end
11
+ end
12
+ end
13
+
14
+ describe ".make" do
15
+ it "should work with UIFont" do
16
+ BubbleWrap::Font.new(UIFont.boldSystemFontOfSize(12)).should == UIFont.boldSystemFontOfSize(12)
17
+ end
18
+
19
+ it "should work with string" do
20
+ BubbleWrap::Font.new("Helvetica").should == UIFont.fontWithName("Helvetica", size: UIFont.systemFontSize)
21
+ end
22
+
23
+ it "should work with string and size" do
24
+ BubbleWrap::Font.new("Helvetica", 18).should == UIFont.fontWithName("Helvetica", size: 18)
25
+ end
26
+
27
+ it "should work with string and hash" do
28
+ BubbleWrap::Font.new("Helvetica", size: 16).should == UIFont.fontWithName("Helvetica", size: 16)
29
+ end
30
+
31
+ it "should work with hash" do
32
+ BubbleWrap::Font.new(name: "Chalkduster", size: 16).should == UIFont.fontWithName("Chalkduster", size: 16)
33
+ end
34
+ end
35
+
36
+ describe ".named" do
37
+ it "should work" do
38
+ BubbleWrap::Font.named("Helvetica").should == UIFont.fontWithName("Helvetica", size: UIFont.systemFontSize)
39
+ end
40
+ end
41
+
42
+ describe ".attributes" do
43
+ it "should work" do
44
+ _attributes = BubbleWrap::Font.attributes(font: UIFont.systemFontOfSize(12), color: "red", shadow_color: "blue", shadow_offset: {x: 5, y: 10})
45
+
46
+ _attributes.should == {
47
+ UITextAttributeFont => UIFont.systemFontOfSize(12),
48
+ UITextAttributeTextColor => UIColor.redColor,
49
+ UITextAttributeTextShadowColor => UIColor.blueColor,
50
+ UITextAttributeTextShadowOffset => NSValue.valueWithUIOffset(UIOffsetMake(5, 10))
51
+ }
52
+ end
53
+ end
54
+ end
@@ -154,8 +154,8 @@ describe "HTTP" do
154
154
  @options = {
155
155
  headers: @headers,
156
156
  }
157
- @query = BubbleWrap::HTTP::Query.new( @localhost_url , :get, @options )
158
- @query.should.not.be.nil
157
+ query = BubbleWrap::HTTP::Query.new( @localhost_url , :get, @options )
158
+ query.should.not.be.nil
159
159
  end
160
160
 
161
161
  describe "When initialized" do
@@ -219,7 +219,7 @@ describe "HTTP" do
219
219
  end
220
220
 
221
221
  it "should set payload from options{} to @payload" do
222
- payload = "user[name]=marin&user[surname]=usalj&twitter=@mneorr&website=mneorr.com&values[]=apple&values[]=orange&values[]=peach&credentials[username]=mneorr&credentials[password]=123456xx!@crazy"
222
+ payload = "user%5Bname%5D=marin&user%5Bsurname%5D=usalj&twitter=%40mneorr&website=mneorr.com&values%5B%5D=apple&values%5B%5D=orange&values%5B%5D=peach&credentials%5Busername%5D=mneorr&credentials%5Bpassword%5D=123456xx%21%40crazy"
223
223
  @query.instance_variable_get(:@payload).should.equal payload
224
224
  @options.should.not.has_key? :payload
225
225
  end
@@ -248,6 +248,35 @@ describe "HTTP" do
248
248
  end
249
249
  end
250
250
 
251
+ it "processes filenames from file hashes" do
252
+ files = {
253
+ upload: {data: sample_data, filename: "test.txt"}
254
+ }
255
+ query = BubbleWrap::HTTP::Query.new(@fake_url, :post, {files: files})
256
+ uuid = query.instance_variable_get(:@boundary)
257
+ real_payload = NSString.alloc.initWithData(query.request.HTTPBody, encoding:NSUTF8StringEncoding)
258
+ real_payload.should.equal "--#{uuid}\r\nContent-Disposition: form-data; name=\"upload\"; filename=\"test.txt\"\r\nContent-Type: application/octet-stream\r\n\r\ntwitter:@mneorr\r\n--#{uuid}--\r\n"
259
+ end
260
+
261
+ it "processes filenames from file hashes, using the name when the filename is missing" do
262
+ files = {
263
+ upload: {data: sample_data}
264
+ }
265
+ query = BubbleWrap::HTTP::Query.new(@fake_url, :post, {files: files})
266
+ uuid = query.instance_variable_get(:@boundary)
267
+ real_payload = NSString.alloc.initWithData(query.request.HTTPBody, encoding:NSUTF8StringEncoding)
268
+ real_payload.should.equal "--#{uuid}\r\nContent-Disposition: form-data; name=\"upload\"; filename=\"upload\"\r\nContent-Type: application/octet-stream\r\n\r\ntwitter:@mneorr\r\n--#{uuid}--\r\n"
269
+ end
270
+
271
+ it "throws an error for invalid file parameters" do
272
+ files = {
273
+ twitter: {filename: "test.txt", data: nil}
274
+ }
275
+ lambda {
276
+ BW::HTTP::Query.new("http://example.com", :post, { files: files})
277
+ }.should.raise InvalidFileError
278
+ end
279
+
251
280
  it "sets the HTTPBody DATA to @request for all methods except GET and HEAD" do
252
281
  payload = { name: 'apple', model: 'macbook'}
253
282
  files = { twitter: sample_data, site: "mneorr.com".dataUsingEncoding(NSUTF8StringEncoding) }
@@ -336,7 +365,7 @@ describe "HTTP" do
336
365
  end
337
366
 
338
367
  it "should call initiate_request with the URL passed in" do
339
- processed_url = "http://localhost?user%5Bname%5D=marin&user%5Bsurname%5D=usalj&twitter=@mneorr&website=mneorr.com&values%5B%5D=apple&values%5B%5D=orange&values%5B%5D=peach&credentials%5Busername%5D=mneorr&credentials%5Bpassword%5D=123456xx!@crazy"
368
+ processed_url = "http://localhost?user%5Bname%5D=marin&user%5Bsurname%5D=usalj&twitter=%40mneorr&website=mneorr.com&values%5B%5D=apple&values%5B%5D=orange&values%5B%5D=peach&credentials%5Busername%5D=mneorr&credentials%5Bpassword%5D=123456xx%21%40crazy"
340
369
  @query.instance_variable_get(:@url).description.should.equal processed_url
341
370
  end
342
371
 
@@ -583,6 +612,24 @@ describe "HTTP" do
583
612
  end
584
613
  end
585
614
 
615
+ it "should always allow canonical redirects" do
616
+ @query.options.update({:no_redirect => 1})
617
+ request = @query.connection(nil, willSendRequest:@request, redirectResponse:nil)
618
+ request.should.equal @request
619
+ end
620
+
621
+ it "should disallow non-canonical redirects if requested not to" do
622
+ @query.options.update({:no_redirect => 1})
623
+ request = @query.connection(nil, willSendRequest:@request, redirectResponse:"monkey")
624
+ request.should.equal nil
625
+ end
626
+
627
+ it "should allow non-canonical redirects by default" do
628
+ @query.options.delete(:no_redirect)
629
+ request = @query.connection(nil, willSendRequest:@request, redirectResponse:"monkey")
630
+ request.should.equal @request
631
+ end
632
+
586
633
  describe "after 30 redirects" do
587
634
  before do
588
635
  31.times do
@@ -603,6 +650,15 @@ describe "HTTP" do
603
650
  end
604
651
  end
605
652
 
653
+ it "should update the request URL after redirecting by default" do
654
+ query = BubbleWrap::HTTP::Query.new( @localhost_url , :get, {} )
655
+ redirected_request = NSMutableURLRequest.requestWithURL NSURL.URLWithString('http://expanded.local/')
656
+ query.connection(nil, willSendRequest:redirected_request, redirectResponse:nil)
657
+ query.connectionDidFinishLoading(nil)
658
+ query.response.url.absoluteString.should.equal redirected_request.URL.absoluteString
659
+ query.response.original_url.absoluteString.should.equal @localhost_url
660
+ end
661
+
606
662
  end
607
663
 
608
664
  describe "didReceiveAuthenticationChallenge" do
@@ -630,8 +686,8 @@ describe "HTTP" do
630
686
 
631
687
  it 'should continue without credentials when no credentials provided' do
632
688
  @options.delete :credentials
633
- @query = BubbleWrap::HTTP::Query.new( @localhost_url , :get, @options )
634
- @query.connection(nil, didReceiveAuthenticationChallenge:@challenge)
689
+ query = BubbleWrap::HTTP::Query.new( @localhost_url , :get, @options )
690
+ query.connection(nil, didReceiveAuthenticationChallenge:@challenge)
635
691
  @challenge.sender.continue_without_credential.should.equal true
636
692
  end
637
693
 
@@ -640,18 +696,36 @@ describe "HTTP" do
640
696
  describe "properly format payload to url get query string" do
641
697
 
642
698
  before do
643
- @payload = {"we love" => '#==Rock&Roll==#', "radio" => "Ga Ga", "qual" => 3.0, "incr" => -1}
699
+ @payload = {"we love" => '#==Rock&Roll==#', "radio" => "Ga Ga", "qual" => 3.0, "incr" => -1, "RFC3986" => "!*'();:@&=+$,/?%#[]"}
644
700
  @url_string = 'http://fake.url/method'
645
701
  @get_query = BubbleWrap::HTTP::Query.new( @url_string, :get, :payload => @payload)
646
- @escaped_url = "http://fake.url/method?we%20love=%23%3D%3DRock%26Roll%3D%3D%23&radio=Ga%20Ga&qual=3.0&incr=-1"
702
+ @escaped_url = "http://fake.url/method?we%20love=%23%3D%3DRock%26Roll%3D%3D%23&radio=Ga%20Ga&qual=3.0&incr=-1&RFC3986=%21%2A%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23%5B%5D"
647
703
  end
648
704
 
649
- it "should escape \#=& characters only in keys and values" do
705
+ it "should escape !*'();:@&=+$,/?%#[] characters only in keys and values" do
650
706
  @get_query.instance_variable_get(:@url).description.should.equal @escaped_url
651
707
  end
652
708
 
653
709
  end
654
710
 
711
+ describe 'properly support cookie-option for nsmutableurlrequest' do
712
+
713
+ before do
714
+ @no_cookie_query = BubbleWrap::HTTP::Query.new("http://haz-no-cookiez.url", :get, {:payload => {:something => "else"}, :cookies => false})
715
+ @cookie_query = BubbleWrap::HTTP::Query.new("http://haz-cookiez.url", :get, :payload => {:something => "else"})
716
+ end
717
+
718
+ it 'should disabled cookie-usage on nsurlrequest' do
719
+ @no_cookie_query.instance_variable_get(:@request).HTTPShouldHandleCookies.should.equal false
720
+ end
721
+
722
+ it 'should keep sane cookie-related defaults on nsurlrequest' do
723
+ @cookie_query.instance_variable_get(:@request).HTTPShouldHandleCookies.should.equal true
724
+ end
725
+
726
+
727
+ end
728
+
655
729
  class FakeSender
656
730
  attr_reader :challenge, :credential, :was_cancelled, :continue_without_credential
657
731
  def cancelAuthenticationChallenge(challenge)
@@ -14,7 +14,7 @@ class CLLocationManager
14
14
 
15
15
  def self.locationServicesEnabled
16
16
  return true if @enabled.nil?
17
- @enabled
17
+ @enabled
18
18
  end
19
19
 
20
20
  def startUpdatingLocation
@@ -101,6 +101,27 @@ describe BubbleWrap::Location do
101
101
  end
102
102
  end
103
103
 
104
+ describe ".get_once" do
105
+ it "should have correct location when succeeding" do
106
+ to = CLLocation.alloc.initWithLatitude(100, longitude: 50)
107
+ from = CLLocation.alloc.initWithLatitude(100, longitude: 49)
108
+
109
+ @number_times = 0
110
+ BW::Location.get_once do |location|
111
+ location.longitude.should == 50
112
+ location.latitude.should == 100
113
+ @number_times += 1
114
+ end
115
+
116
+ BW::Location.locationManager(location_manager, didUpdateToLocation: to, fromLocation: from)
117
+
118
+ to = CLLocation.alloc.initWithLatitude(0, longitude: 0)
119
+ from = CLLocation.alloc.initWithLatitude(0, longitude: 0)
120
+ BW::Location.locationManager(location_manager, didUpdateToLocation: to, fromLocation: from)
121
+ @number_times.should == 1
122
+ end
123
+ end
124
+
104
125
  describe ".get_significant" do
105
126
  before do
106
127
  reset
@@ -15,6 +15,21 @@ describe BubbleWrap::Reactor::Eventable do
15
15
  events = @subject.instance_variable_get(:@events)
16
16
  events[:foo].member?(proof).should == true
17
17
  end
18
+
19
+ it 'returns the array of blocks for the event' do
20
+ proof = proc { }
21
+ @subject.on(:foo, &proof).should == [proof]
22
+ end
23
+ end
24
+
25
+ describe '.off' do
26
+ it 'unregisters events' do
27
+ proof = proc { }
28
+ @subject.on(:foo, &proof)
29
+ events = @subject.instance_variable_get(:@events)
30
+ @subject.off(:foo, &proof)
31
+ events[:foo].member?(proof).should == false
32
+ end
18
33
  end
19
34
 
20
35
  describe '.trigger' do
@@ -53,6 +53,29 @@ describe BubbleWrap::Reactor do
53
53
  @proxy.proof.should >= 2
54
54
  end
55
55
  end
56
+
57
+ it 'accepts non-block callbacks' do
58
+ @proxy.proof = 0
59
+ callback = lambda {
60
+ @proxy.proof = @proxy.proof + 1
61
+ @subject.cancel_timer(@timer) if @proxy.proof > 2
62
+ }
63
+ @timer = @subject.add_periodic_timer 0.5, callback
64
+ wait 1.1 do
65
+ @proxy.proof.should >= 2
66
+ end
67
+ end
68
+
69
+ it 'runs callbacks repeatedly in common runloop modes' do
70
+ @proxy.proof = 0
71
+ @timer = @subject.add_periodic_timer 0.5, :common_modes => true do
72
+ @proxy.proof = @proxy.proof + 1
73
+ @subject.cancel_timer(@timer) if @proxy.proof > 2
74
+ end
75
+ wait 1.1 do
76
+ @proxy.proof.should >= 2
77
+ end
78
+ end
56
79
  end
57
80
 
58
81
  describe '.cancel_timer' do
@@ -73,6 +96,15 @@ describe BubbleWrap::Reactor do
73
96
  @subject.cancel_timer(timer)
74
97
  @proxy.proof.should == true
75
98
  end
99
+
100
+ it 'cancels common modes periodic timers' do
101
+ @proxy.proof = true
102
+ timer = @subject.add_periodic_timer 10.0, :common_modes => true do
103
+ @proxy.proof = false
104
+ end
105
+ @subject.cancel_timer(timer)
106
+ @proxy.proof.should == true
107
+ end
76
108
  end
77
109
 
78
110
  describe '.defer' do
@@ -0,0 +1,26 @@
1
+ describe BubbleWrap::Constants do
2
+ describe ".get" do
3
+ BubbleWrap::Constants.register UIReturnKeyDone, UIReturnKeyNext
4
+
5
+
6
+ it "should return integer passed" do
7
+ BW::Constants.get("anything", 5).should == 5
8
+ end
9
+
10
+ it "should return integer for decimal passed" do
11
+ BW::Constants.get("anything", 5.0).should == 5
12
+ end
13
+
14
+ it "should return the correct integer for a string" do
15
+ BW::Constants.get("UIReturnKey", "done").should == UIReturnKeyDone
16
+ end
17
+
18
+ it "should return the correct integer for a symbol" do
19
+ BW::Constants.get("UIReturnKey", :done).should == UIReturnKeyDone
20
+ end
21
+
22
+ it "should bitmask array values" do
23
+ BW::Constants.get("UIReturnKey", :done, :next).should == (UIReturnKeyDone | UIReturnKeyNext)
24
+ end
25
+ end
26
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bubble-wrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
5
- prerelease:
4
+ version: 1.2.0.pre
6
5
  platform: ruby
7
6
  authors:
8
7
  - Matt Aimonetti
@@ -15,12 +14,11 @@ authors:
15
14
  autorequire:
16
15
  bindir: bin
17
16
  cert_chain: []
18
- date: 2013-01-22 00:00:00.000000000 Z
17
+ date: 2013-04-19 00:00:00.000000000 Z
19
18
  dependencies:
20
19
  - !ruby/object:Gem::Dependency
21
20
  name: mocha
22
21
  requirement: !ruby/object:Gem::Requirement
23
- none: false
24
22
  requirements:
25
23
  - - '='
26
24
  - !ruby/object:Gem::Version
@@ -28,7 +26,6 @@ dependencies:
28
26
  type: :development
29
27
  prerelease: false
30
28
  version_requirements: !ruby/object:Gem::Requirement
31
- none: false
32
29
  requirements:
33
30
  - - '='
34
31
  - !ruby/object:Gem::Version
@@ -36,7 +33,6 @@ dependencies:
36
33
  - !ruby/object:Gem::Dependency
37
34
  name: mocha-on-bacon
38
35
  requirement: !ruby/object:Gem::Requirement
39
- none: false
40
36
  requirements:
41
37
  - - ! '>='
42
38
  - !ruby/object:Gem::Version
@@ -44,7 +40,6 @@ dependencies:
44
40
  type: :development
45
41
  prerelease: false
46
42
  version_requirements: !ruby/object:Gem::Requirement
47
- none: false
48
43
  requirements:
49
44
  - - ! '>='
50
45
  - !ruby/object:Gem::Version
@@ -52,7 +47,6 @@ dependencies:
52
47
  - !ruby/object:Gem::Dependency
53
48
  name: bacon
54
49
  requirement: !ruby/object:Gem::Requirement
55
- none: false
56
50
  requirements:
57
51
  - - ! '>='
58
52
  - !ruby/object:Gem::Version
@@ -60,7 +54,6 @@ dependencies:
60
54
  type: :development
61
55
  prerelease: false
62
56
  version_requirements: !ruby/object:Gem::Requirement
63
- none: false
64
57
  requirements:
65
58
  - - ! '>='
66
59
  - !ruby/object:Gem::Version
@@ -68,7 +61,6 @@ dependencies:
68
61
  - !ruby/object:Gem::Dependency
69
62
  name: rake
70
63
  requirement: !ruby/object:Gem::Requirement
71
- none: false
72
64
  requirements:
73
65
  - - ! '>='
74
66
  - !ruby/object:Gem::Version
@@ -76,7 +68,6 @@ dependencies:
76
68
  type: :development
77
69
  prerelease: false
78
70
  version_requirements: !ruby/object:Gem::Requirement
79
- none: false
80
71
  requirements:
81
72
  - - ! '>='
82
73
  - !ruby/object:Gem::Version
@@ -112,6 +103,7 @@ extra_rdoc_files:
112
103
  - motion/core/pollute.rb
113
104
  - motion/core/string.rb
114
105
  - motion/core/time.rb
106
+ - motion/font/font.rb
115
107
  - motion/http.rb
116
108
  - motion/location/location.rb
117
109
  - motion/location/pollute.rb
@@ -130,8 +122,10 @@ extra_rdoc_files:
130
122
  - motion/test_suite_delegate.rb
131
123
  - motion/ui/gestures.rb
132
124
  - motion/ui/pollute.rb
125
+ - motion/ui/ui_bar_button_item.rb
133
126
  - motion/ui/ui_control.rb
134
127
  - motion/ui/ui_view_controller.rb
128
+ - motion/util/constants.rb
135
129
  - spec/lib/bubble-wrap/ext/motion_project_app_spec.rb
136
130
  - spec/lib/bubble-wrap/ext/motion_project_config_spec.rb
137
131
  - spec/lib/motion_stub.rb
@@ -148,16 +142,20 @@ extra_rdoc_files:
148
142
  - spec/motion/core/persistence_spec.rb
149
143
  - spec/motion/core/string_spec.rb
150
144
  - spec/motion/core/time_spec.rb
145
+ - spec/motion/core/ui_bar_button_item_spec.rb
151
146
  - spec/motion/core/ui_control_spec.rb
152
147
  - spec/motion/core_spec.rb
148
+ - spec/motion/font/font_spec.rb
153
149
  - spec/motion/http_spec.rb
154
150
  - spec/motion/location/location_spec.rb
155
151
  - spec/motion/media/player_spec.rb
156
152
  - spec/motion/reactor/eventable_spec.rb
157
153
  - spec/motion/reactor_spec.rb
158
154
  - spec/motion/rss_parser_spec.rb
155
+ - spec/motion/util/constants_spec.rb
159
156
  files:
160
157
  - .gitignore
158
+ - .travis.yml
161
159
  - .yardopts
162
160
  - CHANGELOG.md
163
161
  - GEM.md
@@ -176,6 +174,7 @@ files:
176
174
  - lib/bubble-wrap/ext.rb
177
175
  - lib/bubble-wrap/ext/motion_project_app.rb
178
176
  - lib/bubble-wrap/ext/motion_project_config.rb
177
+ - lib/bubble-wrap/font.rb
179
178
  - lib/bubble-wrap/http.rb
180
179
  - lib/bubble-wrap/loader.rb
181
180
  - lib/bubble-wrap/location.rb
@@ -203,6 +202,7 @@ files:
203
202
  - motion/core/pollute.rb
204
203
  - motion/core/string.rb
205
204
  - motion/core/time.rb
205
+ - motion/font/font.rb
206
206
  - motion/http.rb
207
207
  - motion/location/location.rb
208
208
  - motion/location/pollute.rb
@@ -221,8 +221,10 @@ files:
221
221
  - motion/test_suite_delegate.rb
222
222
  - motion/ui/gestures.rb
223
223
  - motion/ui/pollute.rb
224
+ - motion/ui/ui_bar_button_item.rb
224
225
  - motion/ui/ui_control.rb
225
226
  - motion/ui/ui_view_controller.rb
227
+ - motion/util/constants.rb
226
228
  - resources/atom.xml
227
229
  - resources/test.mp3
228
230
  - samples/camera/Gemfile
@@ -269,37 +271,39 @@ files:
269
271
  - spec/motion/core/persistence_spec.rb
270
272
  - spec/motion/core/string_spec.rb
271
273
  - spec/motion/core/time_spec.rb
274
+ - spec/motion/core/ui_bar_button_item_spec.rb
272
275
  - spec/motion/core/ui_control_spec.rb
273
276
  - spec/motion/core_spec.rb
277
+ - spec/motion/font/font_spec.rb
274
278
  - spec/motion/http_spec.rb
275
279
  - spec/motion/location/location_spec.rb
276
280
  - spec/motion/media/player_spec.rb
277
281
  - spec/motion/reactor/eventable_spec.rb
278
282
  - spec/motion/reactor_spec.rb
279
283
  - spec/motion/rss_parser_spec.rb
284
+ - spec/motion/util/constants_spec.rb
280
285
  homepage: http://bubblewrap.io/
281
286
  licenses: []
287
+ metadata: {}
282
288
  post_install_message:
283
289
  rdoc_options: []
284
290
  require_paths:
285
291
  - lib
286
292
  required_ruby_version: !ruby/object:Gem::Requirement
287
- none: false
288
293
  requirements:
289
294
  - - ! '>='
290
295
  - !ruby/object:Gem::Version
291
296
  version: '0'
292
297
  required_rubygems_version: !ruby/object:Gem::Requirement
293
- none: false
294
298
  requirements:
295
- - - ! '>='
299
+ - - ! '>'
296
300
  - !ruby/object:Gem::Version
297
- version: '0'
301
+ version: 1.3.1
298
302
  requirements: []
299
303
  rubyforge_project:
300
- rubygems_version: 1.8.23
304
+ rubygems_version: 2.0.3
301
305
  signing_key:
302
- specification_version: 3
306
+ specification_version: 4
303
307
  summary: RubyMotion wrappers and helpers (Ruby for iOS) - Making Cocoa APIs more Ruby
304
308
  like, one API at a time. Fork away and send your pull request.
305
309
  test_files:
@@ -322,12 +326,14 @@ test_files:
322
326
  - spec/motion/core/persistence_spec.rb
323
327
  - spec/motion/core/string_spec.rb
324
328
  - spec/motion/core/time_spec.rb
329
+ - spec/motion/core/ui_bar_button_item_spec.rb
325
330
  - spec/motion/core/ui_control_spec.rb
326
331
  - spec/motion/core_spec.rb
332
+ - spec/motion/font/font_spec.rb
327
333
  - spec/motion/http_spec.rb
328
334
  - spec/motion/location/location_spec.rb
329
335
  - spec/motion/media/player_spec.rb
330
336
  - spec/motion/reactor/eventable_spec.rb
331
337
  - spec/motion/reactor_spec.rb
332
338
  - spec/motion/rss_parser_spec.rb
333
- has_rdoc:
339
+ - spec/motion/util/constants_spec.rb