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.
- checksums.yaml +7 -0
- data/.gitignore +2 -1
- data/.travis.yml +8 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +70 -38
- data/README.md +114 -0
- data/Rakefile +12 -10
- data/browser.gemspec +2 -4
- data/config.ru +2 -0
- data/gemfiles/rails3.gemfile +4 -0
- data/gemfiles/rails3.gemfile.lock +111 -0
- data/lib/browser.rb +57 -283
- data/lib/browser/action_controller.rb +9 -7
- data/lib/browser/meta/base.rb +20 -0
- data/lib/browser/meta/generic_browser.rb +9 -0
- data/lib/browser/meta/id.rb +9 -0
- data/lib/browser/meta/ie.rb +18 -0
- data/lib/browser/meta/ios.rb +9 -0
- data/lib/browser/meta/mobile.rb +9 -0
- data/lib/browser/meta/modern.rb +9 -0
- data/lib/browser/meta/platform.rb +9 -0
- data/lib/browser/meta/safari.rb +9 -0
- data/lib/browser/meta/webkit.rb +9 -0
- data/lib/browser/methods/devices.rb +33 -0
- data/lib/browser/methods/ie.rb +40 -0
- data/lib/browser/methods/language.rb +131 -0
- data/lib/browser/methods/mobile.rb +23 -0
- data/lib/browser/methods/platform.rb +54 -0
- data/lib/browser/middleware.rb +43 -0
- data/lib/browser/middleware/context.rb +20 -0
- data/lib/browser/middleware/context/additions.rb +16 -0
- data/lib/browser/middleware/context/url_methods.rb +13 -0
- data/lib/browser/rails.rb +14 -0
- data/lib/browser/version.rb +2 -2
- data/test/browser_test.rb +220 -74
- data/test/middleware_test.rb +32 -0
- data/test/sample_app.rb +27 -0
- data/test/test_helper.rb +2 -1
- metadata +43 -57
- data/README.rdoc +0 -75
@@ -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,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
|
data/lib/browser/version.rb
CHANGED
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
|
6
|
-
IPOD
|
7
|
-
IPAD
|
8
|
-
SAFARI
|
9
|
-
IE6
|
10
|
-
IE7
|
11
|
-
IE8
|
12
|
-
IE8_COMPAT
|
13
|
-
IE9
|
14
|
-
IE9_COMPAT
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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.
|
87
|
+
assert @browser.modern?
|
78
88
|
assert @browser.ios?
|
79
|
-
assert @browser.tablet?
|
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.
|
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.
|
113
|
+
assert @browser.modern?
|
104
114
|
assert @browser.ios?
|
105
|
-
assert @browser.tablet?
|
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.
|
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.
|
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.
|
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.
|
153
|
-
assert @browser.compatibility_view?
|
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
|
165
|
-
assert @browser.
|
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.
|
178
|
-
assert
|
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
|
190
|
-
assert @browser.
|
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.
|
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.
|
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
|
299
|
+
assert ! @browser.safari?
|
222
300
|
assert @browser.webkit?
|
223
|
-
assert @browser.
|
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
|
311
|
+
assert ! @browser.safari?
|
234
312
|
assert @browser.webkit?
|
235
|
-
assert @browser.
|
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?
|
249
|
-
assert @browser.
|
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?
|
339
|
+
assert ! @browser.mobile?
|
262
340
|
assert @browser.tablet?
|
263
|
-
assert @browser.
|
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?
|
351
|
+
assert ! @browser.tablet?
|
274
352
|
assert @browser.mobile?
|
275
|
-
assert @browser.
|
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?
|
399
|
+
assert ! @browser.tablet?
|
310
400
|
|
311
401
|
@browser.ua = "MIDP-2.0"
|
312
402
|
assert @browser.mobile?
|
313
|
-
assert @browser.tablet?
|
403
|
+
assert ! @browser.tablet?
|
314
404
|
|
315
405
|
@browser.ua = "Windows CE"
|
316
406
|
assert @browser.mobile?
|
317
|
-
assert @browser.tablet?
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
455
|
+
def test_return_string_representation_for_ie6
|
348
456
|
@browser.ua = IE6
|
349
|
-
|
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
|
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
|
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
|
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
|
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
|
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" }
|