browser 0.1.6 → 0.2.0

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.
@@ -0,0 +1,20 @@
1
+ class Browser
2
+ class Middleware
3
+ class Context
4
+ attr_reader :browser, :request
5
+
6
+ def initialize(request)
7
+ @request = request
8
+
9
+ @browser = Browser.new(
10
+ ua: request.user_agent,
11
+ accept_language: request.env["HTTP_ACCEPT_LANGUAGE"]
12
+ )
13
+ end
14
+
15
+ def redirect_to(path)
16
+ throw :redirected, path.to_s
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,16 @@
1
+ require "browser/middleware/context/url_methods"
2
+
3
+ class Browser
4
+ class Middleware
5
+ class Context
6
+ module Additions
7
+ extend ActiveSupport::Concern
8
+
9
+ included do
10
+ include Rails.application.routes.url_helpers
11
+ include UrlMethods
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ class Browser
2
+ class Middleware
3
+ class Context
4
+ module UrlMethods
5
+ def default_url_options
6
+ Rails.configuration.browser.default_url_options ||
7
+ Rails.configuration.action_mailer.default_url_options ||
8
+ {}
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ require "rails/railtie"
2
+ require "browser/action_controller"
3
+ require "browser/middleware/context/additions"
4
+
5
+ class Browser
6
+ class Railtie < Rails::Railtie
7
+ config.browser = ActiveSupport::OrderedOptions.new
8
+
9
+ initializer "browser" do
10
+ ::ActionController::Base.send :include, Browser::ActionController
11
+ Browser::Middleware::Context.send :include, Browser::Middleware::Context::Additions
12
+ end
13
+ end
14
+ end
@@ -1,8 +1,8 @@
1
1
  class Browser
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 1
5
- PATCH = 6
4
+ MINOR = 2
5
+ PATCH = 0
6
6
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
7
7
  end
8
8
  end
data/test/browser_test.rb CHANGED
@@ -2,33 +2,43 @@
2
2
  require "test_helper"
3
3
 
4
4
  class BrowserTest < Test::Unit::TestCase
5
- IPHONE = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/1A542a Safari/419.3"
6
- IPOD = "Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A100a Safari/419.3"
7
- IPAD = "Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10"
8
- SAFARI = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-us) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8"
9
- IE6 = "Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
10
- IE7 = "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)"
11
- IE8 = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)"
12
- IE8_COMPAT = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; Media Center PC 5.0; .NET CLR 3.5.21022)"
13
- IE9 = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
14
- IE9_COMPAT = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)"
15
- OPERA = "Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; en) Presto/2.10.229 Version/11.64"
16
- FIREFOX = "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8"
17
- CHROME = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4"
18
- MOBILE_CHROME = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3"
19
- ANDROID = "Android SDK 1.5r3: Mozilla/5.0 (Linux; U; Android 1.5; de-; sdk Build/CUPCAKE) AppleWebkit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1"
20
- TABLOID = "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13"
21
- BLACKBERRY = "BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103"
22
- PSP = "Mozilla/4.0 (PSP (PlayStation Portable); 2.00)"
23
- QUICKTIME = "QuickTime/7.6.8 (qtver=7.6.8;os=Windows NT 5.1Service Pack 3)"
24
- COREMEDIA = "Apple Mac OS X v10.6.4 CoreMedia v1.0.0.10F569"
25
- XOOM = "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13"
26
- NEXUS_TABLET = "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19"
27
- OPERA_MINI = "Opera/9.80 (Android; Opera Mini/7.029952/28.2359;u; fr) Presto/2.8.119 Version/11.10"
28
- OPERA_MOBI = "Opera/9.8 (Android 2.3.5; Linux; Opera Mobi/ADR-1205181138; U; en) Presto/2.10.254 Version/12.00"
29
- WINDOWS_PHONE = "Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; DELL; Venue Pro)"
30
- KINDLE = "Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600×800; rotate)"
31
- KINDLE_FIRE = "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
5
+ IPHONE = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/1A542a Safari/419.3"
6
+ IPOD = "Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A100a Safari/419.3"
7
+ IPAD = "Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10"
8
+ SAFARI = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-us) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8"
9
+ IE6 = "Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
10
+ IE7 = "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)"
11
+ IE8 = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)"
12
+ IE8_COMPAT = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; Media Center PC 5.0; .NET CLR 3.5.21022)"
13
+ IE9 = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
14
+ IE9_COMPAT = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)"
15
+ IE10 = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0; EIE10;ENUSMSN)"
16
+ IE10_COMPAT = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; EIE10;ENUSMSN)"
17
+ OPERA = "Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; en) Presto/2.10.229 Version/11.64"
18
+ OPERA_NEXT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.37 Safari/537.36 OPR/15.0.1147.44 (Edition Next)"
19
+ FIREFOX = "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8"
20
+ FIREFOX_MODERN = "Mozilla/5.0 (X11; Ubuntu; Linux armv7l; rv:17.0) Gecko/20100101 Firefox/17.0"
21
+ CHROME = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4"
22
+ MOBILE_CHROME = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3"
23
+ ANDROID = "Android SDK 1.5r3: Mozilla/5.0 (Linux; U; Android 1.5; de-; sdk Build/CUPCAKE) AppleWebkit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1"
24
+ TABLOID = "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13"
25
+ BLACKBERRY = "BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103"
26
+ PSP = "Mozilla/4.0 (PSP (PlayStation Portable); 2.00)"
27
+ QUICKTIME = "QuickTime/7.6.8 (qtver=7.6.8;os=Windows NT 5.1Service Pack 3)"
28
+ COREMEDIA = "Apple Mac OS X v10.6.4 CoreMedia v1.0.0.10F569"
29
+ XOOM = "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13"
30
+ NEXUS_TABLET = "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19"
31
+ NOOK = "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; NOOK BNTV250A Build/GINGERBREAD 1.4.3) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1"
32
+ SAMSUNG = "Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; SAMSUNG-SGH-I497 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30"
33
+ OPERA_MINI = "Opera/9.80 (Android; Opera Mini/7.029952/28.2359;u; fr) Presto/2.8.119 Version/11.10"
34
+ OPERA_MOBI = "Opera/9.8 (Android 2.3.5; Linux; Opera Mobi/ADR-1205181138; U; en) Presto/2.10.254 Version/12.00"
35
+ WINDOWS_PHONE = "Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; DELL; Venue Pro)"
36
+ KINDLE = "Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600×800; rotate)"
37
+ KINDLE_FIRE = "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
38
+ PHANTOM_JS = "Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.0 Safari/534.34"
39
+ IOS4 = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7"
40
+ IOS5 = "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3"
41
+ IOS6 = "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"
32
42
 
33
43
  def setup
34
44
  @browser = Browser.new
@@ -74,9 +84,9 @@ class BrowserTest < Test::Unit::TestCase
74
84
  assert @browser.safari?
75
85
  assert @browser.webkit?
76
86
  assert @browser.mobile?
77
- assert @browser.capable?
87
+ assert @browser.modern?
78
88
  assert @browser.ios?
79
- assert @browser.tablet? == false
89
+ assert ! @browser.tablet?
80
90
  assert_equal "3.0", @browser.full_version
81
91
  assert_equal "3", @browser.version
82
92
  end
@@ -87,7 +97,7 @@ class BrowserTest < Test::Unit::TestCase
87
97
  assert_equal "Safari", @browser.name
88
98
  assert @browser.safari?
89
99
  assert @browser.webkit?
90
- assert @browser.capable?
100
+ assert @browser.modern?
91
101
  assert_equal "5.0.1", @browser.full_version
92
102
  assert_equal "5", @browser.version
93
103
  end
@@ -100,9 +110,9 @@ class BrowserTest < Test::Unit::TestCase
100
110
  assert @browser.safari?
101
111
  assert @browser.webkit?
102
112
  assert @browser.mobile?
103
- assert @browser.capable?
113
+ assert @browser.modern?
104
114
  assert @browser.ios?
105
- assert @browser.tablet? == false
115
+ assert ! @browser.tablet?
106
116
  assert_equal "3.0", @browser.full_version
107
117
  assert_equal "3", @browser.version
108
118
  end
@@ -114,20 +124,40 @@ class BrowserTest < Test::Unit::TestCase
114
124
  assert @browser.ipad?
115
125
  assert @browser.safari?
116
126
  assert @browser.webkit?
117
- assert @browser.capable?
127
+ assert @browser.modern?
118
128
  assert @browser.ios?
119
129
  assert @browser.tablet?
130
+ assert ! @browser.mobile?
120
131
  assert_equal "4.0.4", @browser.full_version
121
132
  assert_equal "4", @browser.version
122
133
  end
123
134
 
135
+ def test_detect_ios4
136
+ @browser.ua = IOS4
137
+ assert @browser.ios?
138
+ assert @browser.ios4?
139
+ end
140
+
141
+
142
+ def test_detect_ios5
143
+ @browser.ua = IOS5
144
+ assert @browser.ios?
145
+ assert @browser.ios5?
146
+ end
147
+
148
+ def test_detect_ios6
149
+ @browser.ua = IOS6
150
+ assert @browser.ios?
151
+ assert @browser.ios6?
152
+ end
153
+
124
154
  def test_detect_ie6
125
155
  @browser.ua = IE6
126
156
 
127
157
  assert_equal "Internet Explorer", @browser.name
128
158
  assert @browser.ie?
129
159
  assert @browser.ie6?
130
- assert @browser.capable? == false
160
+ assert ! @browser.modern?
131
161
  assert_equal "6.0", @browser.full_version
132
162
  assert_equal "6", @browser.version
133
163
  end
@@ -138,7 +168,7 @@ class BrowserTest < Test::Unit::TestCase
138
168
  assert_equal "Internet Explorer", @browser.name
139
169
  assert @browser.ie?
140
170
  assert @browser.ie7?
141
- assert @browser.capable?
171
+ assert ! @browser.modern?
142
172
  assert_equal "7.0", @browser.full_version
143
173
  assert_equal "7", @browser.version
144
174
  end
@@ -149,8 +179,8 @@ class BrowserTest < Test::Unit::TestCase
149
179
  assert_equal "Internet Explorer", @browser.name
150
180
  assert @browser.ie?
151
181
  assert @browser.ie8?
152
- assert @browser.capable?
153
- assert @browser.compatibility_view? == false
182
+ assert ! @browser.modern?
183
+ assert ! @browser.compatibility_view?
154
184
  assert_equal "8.0", @browser.full_version
155
185
  assert_equal "8", @browser.version
156
186
  end
@@ -161,8 +191,8 @@ class BrowserTest < Test::Unit::TestCase
161
191
  assert_equal "Internet Explorer", @browser.name
162
192
  assert @browser.ie?
163
193
  assert @browser.ie7?
164
- assert !@browser.ie8?
165
- assert @browser.capable?
194
+ assert ! @browser.ie8?
195
+ assert ! @browser.modern?
166
196
  assert @browser.compatibility_view?
167
197
  assert_equal "7.0", @browser.full_version
168
198
  assert_equal "7", @browser.version
@@ -174,8 +204,8 @@ class BrowserTest < Test::Unit::TestCase
174
204
  assert_equal "Internet Explorer", @browser.name
175
205
  assert @browser.ie?
176
206
  assert @browser.ie9?
177
- assert @browser.capable?
178
- assert !@browser.compatibility_view?
207
+ assert @browser.modern?
208
+ assert ! @browser.compatibility_view?
179
209
  assert_equal "9.0", @browser.full_version
180
210
  assert_equal "9", @browser.version
181
211
  end
@@ -186,8 +216,33 @@ class BrowserTest < Test::Unit::TestCase
186
216
  assert_equal "Internet Explorer", @browser.name
187
217
  assert @browser.ie?
188
218
  assert @browser.ie7?
189
- assert !@browser.ie9?
190
- assert @browser.capable?
219
+ assert ! @browser.ie9?
220
+ assert ! @browser.modern?
221
+ assert @browser.compatibility_view?
222
+ assert_equal "7.0", @browser.full_version
223
+ assert_equal "7", @browser.version
224
+ end
225
+
226
+ def test_detect_ie10
227
+ @browser.ua = IE10
228
+
229
+ assert_equal "Internet Explorer", @browser.name
230
+ assert @browser.ie?
231
+ assert @browser.ie10?
232
+ assert @browser.modern?
233
+ assert ! @browser.compatibility_view?
234
+ assert_equal "10.0", @browser.full_version
235
+ assert_equal "10", @browser.version
236
+ end
237
+
238
+ def test_detect_ie10_in_compatibility_view
239
+ @browser.ua = IE10_COMPAT
240
+
241
+ assert_equal "Internet Explorer", @browser.name
242
+ assert @browser.ie?
243
+ assert @browser.ie7?
244
+ assert ! @browser.ie10?
245
+ assert ! @browser.modern?
191
246
  assert @browser.compatibility_view?
192
247
  assert_equal "7.0", @browser.full_version
193
248
  assert_equal "7", @browser.version
@@ -198,29 +253,52 @@ class BrowserTest < Test::Unit::TestCase
198
253
 
199
254
  assert_equal "Opera", @browser.name
200
255
  assert @browser.opera?
201
- assert @browser.capable?
256
+ assert ! @browser.modern?
202
257
  assert_equal "11.64", @browser.full_version
203
258
  assert_equal "11", @browser.version
204
259
  end
205
260
 
261
+ def test_detect_opera_next
262
+ @browser.ua = OPERA_NEXT
263
+
264
+ assert_equal "Opera", @browser.name
265
+ assert_equal :opera, @browser.id
266
+ assert @browser.opera?
267
+ assert @browser.webkit?
268
+ assert @browser.modern?
269
+ assert ! @browser.chrome?
270
+ assert_equal "28.0.1500.37", @browser.full_version
271
+ assert_equal "28", @browser.version
272
+ end
273
+
206
274
  def test_detect_firefox
207
275
  @browser.ua = FIREFOX
208
276
 
209
277
  assert_equal "Firefox", @browser.name
210
278
  assert @browser.firefox?
211
- assert @browser.capable?
279
+ assert ! @browser.modern?
212
280
  assert_equal "3.8", @browser.full_version
213
281
  assert_equal "3", @browser.version
214
282
  end
215
283
 
284
+ def test_detect_modern_firefox
285
+ @browser.ua = FIREFOX_MODERN
286
+
287
+ assert_equal "Firefox", @browser.name
288
+ assert @browser.firefox?
289
+ assert @browser.modern?
290
+ assert_equal "17.0", @browser.full_version
291
+ assert_equal "17", @browser.version
292
+ end
293
+
216
294
  def test_detect_chrome
217
295
  @browser.ua = CHROME
218
296
 
219
297
  assert_equal "Chrome", @browser.name
220
298
  assert @browser.chrome?
221
- assert !@browser.safari?
299
+ assert ! @browser.safari?
222
300
  assert @browser.webkit?
223
- assert @browser.capable?
301
+ assert @browser.modern?
224
302
  assert_equal "5.0.375.99", @browser.full_version
225
303
  assert_equal "5", @browser.version
226
304
  end
@@ -230,9 +308,9 @@ class BrowserTest < Test::Unit::TestCase
230
308
 
231
309
  assert_equal "Chrome", @browser.name
232
310
  assert @browser.chrome?
233
- assert !@browser.safari?
311
+ assert ! @browser.safari?
234
312
  assert @browser.webkit?
235
- assert @browser.capable?
313
+ assert @browser.modern?
236
314
  assert_equal "19.0.1084.60", @browser.full_version
237
315
  assert_equal "19", @browser.version
238
316
  end
@@ -245,8 +323,8 @@ class BrowserTest < Test::Unit::TestCase
245
323
  assert @browser.safari?
246
324
  assert @browser.webkit?
247
325
  assert @browser.mobile?
248
- assert @browser.tablet? == false
249
- assert @browser.capable?
326
+ assert ! @browser.tablet?
327
+ assert @browser.modern?
250
328
  assert_equal "3.1.2", @browser.full_version
251
329
  assert_equal "3", @browser.version
252
330
  end
@@ -258,9 +336,9 @@ class BrowserTest < Test::Unit::TestCase
258
336
  assert @browser.android?
259
337
  assert @browser.safari?
260
338
  assert @browser.webkit?
261
- assert @browser.mobile? == false
339
+ assert ! @browser.mobile?
262
340
  assert @browser.tablet?
263
- assert @browser.capable?
341
+ assert @browser.modern?
264
342
  assert_equal "4.0", @browser.full_version
265
343
  assert_equal "4", @browser.version
266
344
  end
@@ -270,9 +348,9 @@ class BrowserTest < Test::Unit::TestCase
270
348
 
271
349
  assert_equal "BlackBerry", @browser.name
272
350
  assert @browser.blackberry?
273
- assert @browser.tablet? == false
351
+ assert ! @browser.tablet?
274
352
  assert @browser.mobile?
275
- assert @browser.capable? == false
353
+ assert ! @browser.modern?
276
354
  assert_equal "4.1.0", @browser.full_version
277
355
  assert_equal "4", @browser.version
278
356
  end
@@ -295,6 +373,18 @@ class BrowserTest < Test::Unit::TestCase
295
373
  assert_equal "1", @browser.version
296
374
  end
297
375
 
376
+ def test_detect_phantom_js
377
+ @browser.ua = PHANTOM_JS
378
+
379
+ assert_equal "PhantomJS", @browser.name
380
+ assert @browser.phantom_js?
381
+ assert ! @browser.tablet?
382
+ assert ! @browser.mobile?
383
+ assert @browser.modern?
384
+ assert_equal "1.9.0", @browser.full_version
385
+ assert_equal "1", @browser.version
386
+ end
387
+
298
388
  def test_detect_psp
299
389
  @browser.ua = PSP
300
390
 
@@ -306,16 +396,15 @@ class BrowserTest < Test::Unit::TestCase
306
396
  def test_detect_other_mobiles
307
397
  @browser.ua = "Symbian OS"
308
398
  assert @browser.mobile?
309
- assert @browser.tablet? == false
399
+ assert ! @browser.tablet?
310
400
 
311
401
  @browser.ua = "MIDP-2.0"
312
402
  assert @browser.mobile?
313
- assert @browser.tablet? == false
403
+ assert ! @browser.tablet?
314
404
 
315
405
  @browser.ua = "Windows CE"
316
406
  assert @browser.mobile?
317
- assert @browser.tablet? == false
318
-
407
+ assert ! @browser.tablet?
319
408
  end
320
409
 
321
410
  def test_return_a_zero_version
@@ -331,22 +420,70 @@ class BrowserTest < Test::Unit::TestCase
331
420
 
332
421
  def test_return_string_representation
333
422
  @browser.ua = CHROME
334
- assert_equal "chrome webkit mac capable", @browser.to_s
423
+ meta = @browser.to_s
424
+
425
+ assert meta.include?("chrome")
426
+ assert meta.include?("webkit")
427
+ assert meta.include?("mac")
428
+ assert meta.include?("modern")
335
429
  end
336
430
 
337
431
  def test_return_string_representation_for_ios
338
432
  @browser.ua = IPHONE
339
- assert_equal "iphone webkit ios safari safari3 mac capable mobile", @browser.to_s
433
+ meta = @browser.to_s
434
+
435
+ assert meta.include?("iphone")
436
+ assert meta.include?("webkit")
437
+ assert meta.include?("ios")
438
+ assert meta.include?("safari")
439
+ assert meta.include?("safari3")
440
+ assert meta.include?("mac")
441
+ assert meta.include?("modern")
442
+ assert meta.include?("mobile")
340
443
  end
341
444
 
342
445
  def test_return_string_representation_for_mobile
343
446
  @browser.ua = BLACKBERRY
344
- assert_equal "blackberry blackberry4 other mobile", @browser.to_s
447
+ meta = @browser.to_s
448
+
449
+ assert meta.include?("blackberry")
450
+ assert meta.include?("blackberry4")
451
+ assert meta.include?("other")
452
+ assert meta.include?("mobile")
345
453
  end
346
454
 
347
- def test_return_string_representation_for_handcap
455
+ def test_return_string_representation_for_ie6
348
456
  @browser.ua = IE6
349
- assert_equal "ie ie6 windows", @browser.to_s
457
+ meta = @browser.meta
458
+
459
+ assert meta.include?("ie")
460
+ assert meta.include?("ie6")
461
+ assert meta.include?("oldie")
462
+ assert meta.include?("lt-ie8")
463
+ assert meta.include?("lt-ie9")
464
+ assert meta.include?("windows")
465
+ end
466
+
467
+ def test_return_string_representation_for_ie7
468
+ @browser.ua = IE7
469
+ meta = @browser.meta
470
+
471
+ assert meta.include?("ie")
472
+ assert meta.include?("ie7")
473
+ assert meta.include?("oldie")
474
+ assert meta.include?("lt-ie8")
475
+ assert meta.include?("lt-ie9")
476
+ assert meta.include?("windows")
477
+ end
478
+
479
+ def test_return_string_representation_for_ie8
480
+ @browser.ua = IE8
481
+ meta = @browser.meta
482
+
483
+ assert meta.include?("ie")
484
+ assert meta.include?("ie8")
485
+ assert meta.include?("lt-ie9")
486
+ assert meta.include?("windows")
350
487
  end
351
488
 
352
489
  def test_detect_unknown_id
@@ -384,17 +521,12 @@ class BrowserTest < Test::Unit::TestCase
384
521
  assert_equal ["en-us", "en", "pt-br", "pt"], @browser.accept_language
385
522
  end
386
523
 
387
- def test_pimp_action_controller
388
- methods = ActionController::Base.private_instance_methods.collect {|m| m.to_sym}
389
- assert methods.include?(:browser)
390
- end
391
-
392
524
  def test_xoom
393
525
  @browser.ua = XOOM
394
526
 
395
527
  assert @browser.android?
396
528
  assert @browser.tablet?
397
- assert !@browser.mobile?
529
+ assert ! @browser.mobile?
398
530
  end
399
531
 
400
532
  def test_nexus_tablet
@@ -402,14 +534,14 @@ class BrowserTest < Test::Unit::TestCase
402
534
 
403
535
  assert @browser.android?
404
536
  assert @browser.tablet?
405
- assert !@browser.mobile?
537
+ assert ! @browser.mobile?
406
538
  end
407
539
 
408
540
  def test_opera_mini
409
541
  @browser.ua = OPERA_MINI
410
542
 
411
543
  assert @browser.opera_mini?
412
- assert !@browser.tablet?
544
+ assert ! @browser.tablet?
413
545
  assert @browser.mobile?
414
546
  end
415
547
 
@@ -417,7 +549,7 @@ class BrowserTest < Test::Unit::TestCase
417
549
  @browser.ua = OPERA_MOBI
418
550
 
419
551
  assert @browser.opera?
420
- assert !@browser.tablet?
552
+ assert ! @browser.tablet?
421
553
  assert @browser.mobile?
422
554
  end
423
555
 
@@ -427,7 +559,7 @@ class BrowserTest < Test::Unit::TestCase
427
559
  assert @browser.ie?
428
560
  assert_equal "7", @browser.version
429
561
  assert @browser.mobile?
430
- assert !@browser.tablet?
562
+ assert ! @browser.tablet?
431
563
  end
432
564
 
433
565
  def test_kindle_monochrome
@@ -444,6 +576,20 @@ class BrowserTest < Test::Unit::TestCase
444
576
  assert @browser.webkit?
445
577
  end
446
578
 
579
+ def test_nook
580
+ @browser.ua = NOOK
581
+
582
+ assert @browser.tablet?
583
+ assert ! @browser.mobile?
584
+ end
585
+
586
+ def test_samsung
587
+ @browser.ua = SAMSUNG
588
+
589
+ assert @browser.tablet?
590
+ assert ! @browser.mobile?
591
+ end
592
+
447
593
  def test_remove_duplicate_items
448
594
  @browser.ua = SAFARI
449
595
  assert_equal ["safari"], @browser.meta.select {|item| item == "safari" }