browser 0.1.6 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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" }
|