browser 0.4.1 → 0.5.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 +4 -4
- data/.hound.yml +90 -0
- data/.travis.yml +2 -1
- data/README.md +18 -0
- data/Rakefile +6 -7
- data/bots.yml +2 -0
- data/browser.gemspec +1 -2
- data/languages.yml +114 -0
- data/lib/browser.rb +47 -46
- data/lib/browser/action_controller.rb +1 -0
- data/lib/browser/meta/generic_browser.rb +7 -1
- data/lib/browser/methods/bots.rb +1 -1
- data/lib/browser/methods/devices.rb +1 -1
- data/lib/browser/methods/ie.rb +3 -1
- data/lib/browser/methods/language.rb +2 -117
- data/lib/browser/methods/mobile.rb +1 -0
- data/lib/browser/middleware.rb +2 -2
- data/lib/browser/version.rb +2 -2
- data/test/{browser_test.rb → browser_spec.rb} +171 -239
- data/test/{middleware_test.rb → middleware_spec.rb} +8 -8
- data/test/spec_helper.rb +8 -0
- data/test/ua.yml +67 -0
- metadata +15 -21
- data/test/test_helper.rb +0 -9
@@ -2,7 +2,13 @@ class Browser
|
|
2
2
|
module Meta
|
3
3
|
class GenericBrowser < Base
|
4
4
|
def meta
|
5
|
-
"#{browser.id} #{browser.id}#{browser.version}"
|
5
|
+
"#{browser.id} #{browser.id}#{browser.version}" if generic?
|
6
|
+
end
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def generic?
|
11
|
+
!browser.safari? && !browser.chrome?
|
6
12
|
end
|
7
13
|
end
|
8
14
|
end
|
data/lib/browser/methods/bots.rb
CHANGED
data/lib/browser/methods/ie.rb
CHANGED
@@ -40,10 +40,12 @@ class Browser
|
|
40
40
|
|
41
41
|
# Detect if IE is running in compatibility mode.
|
42
42
|
def compatibility_view?
|
43
|
-
|
43
|
+
match = ua.match(TRIDENT_VERSION_REGEX)
|
44
|
+
ie? && match && version.to_i < (match[1].to_i + 4)
|
44
45
|
end
|
45
46
|
|
46
47
|
private
|
48
|
+
|
47
49
|
def msie?
|
48
50
|
!!(ua =~ /MSIE/ && ua !~ /Opera/)
|
49
51
|
end
|
@@ -1,121 +1,6 @@
|
|
1
1
|
class Browser
|
2
2
|
module Language
|
3
|
-
LANGUAGES =
|
4
|
-
"af" => "Afrikaans",
|
5
|
-
"sq" => "Albanian",
|
6
|
-
"eu" => "Basque",
|
7
|
-
"bg" => "Bulgarian",
|
8
|
-
"be" => "Byelorussian",
|
9
|
-
"ca" => "Catalan",
|
10
|
-
"zh" => "Chinese",
|
11
|
-
"zh-cn" => "Chinese/China",
|
12
|
-
"zh-tw" => "Chinese/Taiwan",
|
13
|
-
"zh-hk" => "Chinese/Hong Kong",
|
14
|
-
"zh-sg" => "Chinese/singapore",
|
15
|
-
"hr" => "Croatian",
|
16
|
-
"cs" => "Czech",
|
17
|
-
"da" => "Danish",
|
18
|
-
"nl" => "Dutch",
|
19
|
-
"nl-nl" => "Dutch/Netherlands",
|
20
|
-
"nl-be" => "Dutch/Belgium",
|
21
|
-
"en" => "English",
|
22
|
-
"en-gb" => "English/United Kingdom",
|
23
|
-
"en-us" => "English/United States",
|
24
|
-
"en-au" => "English/Australian",
|
25
|
-
"en-ca" => "English/Canada",
|
26
|
-
"en-nz" => "English/New Zealand",
|
27
|
-
"en-ie" => "English/Ireland",
|
28
|
-
"en-za" => "English/South Africa",
|
29
|
-
"en-jm" => "English/Jamaica",
|
30
|
-
"en-bz" => "English/Belize",
|
31
|
-
"en-tt" => "English/Trinidad",
|
32
|
-
"et" => "Estonian",
|
33
|
-
"fo" => "Faeroese",
|
34
|
-
"fa" => "Farsi",
|
35
|
-
"fi" => "Finnish",
|
36
|
-
"fr" => "French",
|
37
|
-
"fr-be" => "French/Belgium",
|
38
|
-
"fr-fr" => "French/France",
|
39
|
-
"fr-ch" => "French/Switzerland",
|
40
|
-
"fr-ca" => "French/Canada",
|
41
|
-
"fr-lu" => "French/Luxembourg",
|
42
|
-
"gd" => "Gaelic",
|
43
|
-
"gl" => "Galician",
|
44
|
-
"de" => "German",
|
45
|
-
"de-at" => "German/Austria",
|
46
|
-
"de-de" => "German/Germany",
|
47
|
-
"de-ch" => "German/Switzerland",
|
48
|
-
"de-lu" => "German/Luxembourg",
|
49
|
-
"de-li" => "German/Liechtenstein",
|
50
|
-
"el" => "Greek",
|
51
|
-
"he" => "Hebrew",
|
52
|
-
"he-il" => "Hebrew/Israel",
|
53
|
-
"hi" => "Hindi",
|
54
|
-
"hu" => "Hungarian",
|
55
|
-
"ie-ee" => "Internet Explorer/Easter Egg",
|
56
|
-
"is" => "Icelandic",
|
57
|
-
"id" => "Indonesian",
|
58
|
-
"in" => "Indonesian",
|
59
|
-
"ga" => "Irish",
|
60
|
-
"it" => "Italian",
|
61
|
-
"it-ch" => "Italian/ Switzerland",
|
62
|
-
"ja" => "Japanese",
|
63
|
-
"km" => "Khmer",
|
64
|
-
"km-kh" => "Khmer/Cambodia",
|
65
|
-
"ko" => "Korean",
|
66
|
-
"lv" => "Latvian",
|
67
|
-
"lt" => "Lithuanian",
|
68
|
-
"mk" => "Macedonian",
|
69
|
-
"ms" => "Malaysian",
|
70
|
-
"mt" => "Maltese",
|
71
|
-
"no" => "Norwegian",
|
72
|
-
"pl" => "Polish",
|
73
|
-
"pt" => "Portuguese",
|
74
|
-
"pt-br" => "Portuguese/Brazil",
|
75
|
-
"rm" => "Rhaeto-Romanic",
|
76
|
-
"ro" => "Romanian",
|
77
|
-
"ro-mo" => "Romanian/Moldavia",
|
78
|
-
"ru" => "Russian",
|
79
|
-
"ru-mo" => "Russian /Moldavia",
|
80
|
-
"gd" => "Scots Gaelic",
|
81
|
-
"sr" => "Serbian",
|
82
|
-
"sk" => "Slovack",
|
83
|
-
"sl" => "Slovenian",
|
84
|
-
"sb" => "Sorbian",
|
85
|
-
"es" => "Spanish",
|
86
|
-
"es-do" => "Spanish",
|
87
|
-
"es-ar" => "Spanish/Argentina",
|
88
|
-
"es-co" => "Spanish/Colombia",
|
89
|
-
"es-mx" => "Spanish/Mexico",
|
90
|
-
"es-es" => "Spanish/Spain",
|
91
|
-
"es-gt" => "Spanish/Guatemala",
|
92
|
-
"es-cr" => "Spanish/Costa Rica",
|
93
|
-
"es-pa" => "Spanish/Panama",
|
94
|
-
"es-ve" => "Spanish/Venezuela",
|
95
|
-
"es-pe" => "Spanish/Peru",
|
96
|
-
"es-ec" => "Spanish/Ecuador",
|
97
|
-
"es-cl" => "Spanish/Chile",
|
98
|
-
"es-uy" => "Spanish/Uruguay",
|
99
|
-
"es-py" => "Spanish/Paraguay",
|
100
|
-
"es-bo" => "Spanish/Bolivia",
|
101
|
-
"es-sv" => "Spanish/El salvador",
|
102
|
-
"es-hn" => "Spanish/Honduras",
|
103
|
-
"es-ni" => "Spanish/Nicaragua",
|
104
|
-
"es-pr" => "Spanish/Puerto Rico",
|
105
|
-
"sx" => "Sutu",
|
106
|
-
"sv" => "Swedish",
|
107
|
-
"sv-se" => "Swedish/Sweden",
|
108
|
-
"sv-fi" => "Swedish/Finland",
|
109
|
-
"ts" => "Thai",
|
110
|
-
"tn" => "Tswana",
|
111
|
-
"tr" => "Turkish",
|
112
|
-
"uk" => "Ukrainian",
|
113
|
-
"ur" => "Urdu",
|
114
|
-
"vi" => "Vietnamese",
|
115
|
-
"xh" => "Xshosa",
|
116
|
-
"ji" => "Yiddish",
|
117
|
-
"zu" => "Zulu"
|
118
|
-
}
|
3
|
+
LANGUAGES = YAML.load_file(File.expand_path("../../../../languages.yml", __FILE__))
|
119
4
|
|
120
5
|
# Set browser's preferred language
|
121
6
|
attr_writer :accept_language
|
@@ -125,7 +10,7 @@ class Browser
|
|
125
10
|
@accept_language
|
126
11
|
.gsub(/;q=[\d.]+/, "")
|
127
12
|
.split(",")
|
128
|
-
.
|
13
|
+
.map {|l| l.downcase.gsub(/\s/m, "") }
|
129
14
|
end
|
130
15
|
end
|
131
16
|
end
|
data/lib/browser/middleware.rb
CHANGED
@@ -3,13 +3,13 @@ require "uri"
|
|
3
3
|
class Browser
|
4
4
|
class Middleware
|
5
5
|
# Detect the most common assets.
|
6
|
-
ASSETS_REGEX =
|
6
|
+
ASSETS_REGEX = /\.(css|png|jpe?g|gif|js|svg|ico|flv|mov|m4v|ogg|swf)\z/i
|
7
7
|
|
8
8
|
# Detect the ACCEPT header. IE8 send */*.
|
9
9
|
ACCEPT_REGEX = %r[(text/html|\*/\*)]
|
10
10
|
|
11
11
|
def initialize(app, &block)
|
12
|
-
|
12
|
+
fail ArgumentError, "Browser::Middleware requires a block" unless block
|
13
13
|
|
14
14
|
@app = app
|
15
15
|
@block = block
|
data/lib/browser/version.rb
CHANGED
@@ -1,91 +1,23 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
require "
|
3
|
-
|
4
|
-
|
5
|
-
|
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
|
-
IE10_X64_WINX64 = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)"
|
18
|
-
IE11 = "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko"
|
19
|
-
IE11_TOUCH_SCREEN = "Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; Touch; rv:11.0) like Gecko"
|
20
|
-
OPERA = "Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; en) Presto/2.10.229 Version/11.64"
|
21
|
-
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)"
|
22
|
-
FIREFOX = "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8"
|
23
|
-
FIREFOX_MODERN = "Mozilla/5.0 (X11; Ubuntu; Linux armv7l; rv:17.0) Gecko/20100101 Firefox/17.0"
|
24
|
-
FIREFOX_TABLET = "Mozilla/5.0 (Android; Tablet; rv:14.0) Gecko/14.0 Firefox/14.0"
|
25
|
-
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"
|
26
|
-
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"
|
27
|
-
CHROME_OS = "Mozilla/5.0 (X11; CrOS x86_64 3701.81.0) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.57 Safari/537.31."
|
28
|
-
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"
|
29
|
-
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"
|
30
|
-
BLACKBERRY = "BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103"
|
31
|
-
BLACKBERRY4 = "BlackBerry8100/4.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103"
|
32
|
-
BLACKBERRY5 = "BlackBerry9000/5.0.0.93 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/179"
|
33
|
-
BLACKBERRY6 = "Mozilla/5.0 (BlackBerry; U; BlackBerry AAAA; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/6.0.0.141 Mobile Safari/534.11+"
|
34
|
-
BLACKBERRY7 = "Mozilla/5.0 (BlackBerry; U; BlackBerry AAAA; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.1 Mobile Safari/534.11+"
|
35
|
-
BLACKBERRY10 = "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.1675 Mobile Safari/537.10+"
|
36
|
-
PSP = "Mozilla/4.0 (PSP (PlayStation Portable); 2.00)"
|
37
|
-
PSP_VITA = "Mozilla/5.0 (Playstation Vita 1.61) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2"
|
38
|
-
QUICKTIME = "QuickTime/7.6.8 (qtver=7.6.8;os=Windows NT 5.1Service Pack 3)"
|
39
|
-
COREMEDIA = "Apple Mac OS X v10.6.4 CoreMedia v1.0.0.10F569"
|
40
|
-
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"
|
41
|
-
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"
|
42
|
-
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"
|
43
|
-
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"
|
44
|
-
OPERA_MINI = "Opera/9.80 (Android; Opera Mini/7.029952/28.2359;u; fr) Presto/2.8.119 Version/11.10"
|
45
|
-
OPERA_MOBI = "Opera/9.8 (Android 2.3.5; Linux; Opera Mobi/ADR-1205181138; U; en) Presto/2.10.254 Version/12.00"
|
46
|
-
WINDOWS_PHONE = "Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; DELL; Venue Pro)"
|
47
|
-
WINDOWS_PHONE8 = "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)"
|
48
|
-
WINDOWS_MOBILE = "Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12)"
|
49
|
-
WINDOWS8 = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"
|
50
|
-
WINDOWS81 = "Mozilla/5.0 (IE 11.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko"
|
51
|
-
SURFACE = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)"
|
52
|
-
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)"
|
53
|
-
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"
|
54
|
-
KINDLE_FIRE_HD = "Mozilla/5.0 (Linux; U; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Safari/535.19 Silk-Accelerated=true"
|
55
|
-
KINDLE_FIRE_HD_MOBILE = "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true"
|
56
|
-
PHANTOM_JS = "Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.0 Safari/534.34"
|
57
|
-
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"
|
58
|
-
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"
|
59
|
-
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"
|
60
|
-
IOS7 = "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53"
|
61
|
-
PLAYBOOK = "Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536.2+"
|
62
|
-
NINTENDO_WII = "Opera/9.00 (Nintendo Wii; U; ; 1309-9; en)"
|
63
|
-
NINTENDO_WIIU = "Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/2.1.0.8.23 NintendoBrowser/1.1.0.7579.EU"
|
64
|
-
PLAYSTATION3 = "Mozilla/5.0 (PLAYSTATION 3; 3.55)"
|
65
|
-
PLAYSTATION4 = "Mozilla/5.0 (PlayStation 4 1.020) AppleWebKit/536.26 (KHTML, like Gecko)"
|
66
|
-
XBOX360 = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox), or Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Xbox)"
|
67
|
-
XBOXONE = "Mozilla/5.0 (Compatible; MSIE 10.0; Windows NT 6.2; Trident /6.0; Xbox; Xbox One)"
|
68
|
-
GOOGLE_BOT = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
|
69
|
-
MSN_BOT = "msnbot-media/1.1 (+http://search.msn.com/msnbot.htm)"
|
70
|
-
FACEBOOK_BOT = "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
|
71
|
-
SMART_TV = "Mozilla/5.0 (SmartHub; SMART-TV; U; Linux/SmartTV) AppleWebKit/531.2+ (KHTML, like Gecko) WebBrowser/1.0 SmartTV Safari/531.2+"
|
72
|
-
|
73
|
-
def setup
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
describe Browser do
|
5
|
+
before do
|
74
6
|
@browser = Browser.new
|
75
7
|
end
|
76
8
|
|
77
|
-
|
9
|
+
it "yields self when block is given" do
|
78
10
|
browser = nil
|
79
11
|
Browser.new {|b| browser = b }
|
80
12
|
assert_kind_of Browser, browser
|
81
13
|
end
|
82
14
|
|
83
|
-
|
15
|
+
it "responds to ua methods" do
|
84
16
|
assert @browser.respond_to?(:ua)
|
85
17
|
assert @browser.respond_to?(:ua=)
|
86
18
|
end
|
87
19
|
|
88
|
-
|
20
|
+
it "delegates ua methods" do
|
89
21
|
@browser.user_agent = "Safari"
|
90
22
|
assert_equal "Safari", @browser.ua
|
91
23
|
|
@@ -93,12 +25,12 @@ class BrowserTest < Test::Unit::TestCase
|
|
93
25
|
assert_equal "Mozilla", @browser.user_agent
|
94
26
|
end
|
95
27
|
|
96
|
-
|
28
|
+
it "sets accept language while instantiating object" do
|
97
29
|
@browser = Browser.new(:accept_language => "pt-br")
|
98
30
|
assert_equal ["pt-br"], @browser.accept_language
|
99
31
|
end
|
100
32
|
|
101
|
-
|
33
|
+
it "sets user agent while instantianting object" do
|
102
34
|
@browser = Browser.new(:ua => "Safari")
|
103
35
|
assert_equal "Safari", @browser.ua
|
104
36
|
|
@@ -106,8 +38,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
106
38
|
assert_equal "Chrome", @browser.ua
|
107
39
|
end
|
108
40
|
|
109
|
-
|
110
|
-
@browser.ua = IPHONE
|
41
|
+
it "detects iphone" do
|
42
|
+
@browser.ua = $ua["IPHONE"]
|
111
43
|
|
112
44
|
assert_equal "iPhone", @browser.name
|
113
45
|
assert @browser.iphone?
|
@@ -121,8 +53,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
121
53
|
assert_equal "3", @browser.version
|
122
54
|
end
|
123
55
|
|
124
|
-
|
125
|
-
@browser.ua = SAFARI
|
56
|
+
it "detects safari" do
|
57
|
+
@browser.ua = $ua["SAFARI"]
|
126
58
|
|
127
59
|
assert_equal "Safari", @browser.name
|
128
60
|
assert @browser.safari?
|
@@ -132,8 +64,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
132
64
|
assert_equal "5", @browser.version
|
133
65
|
end
|
134
66
|
|
135
|
-
|
136
|
-
@browser.ua = IPOD
|
67
|
+
it "detects ipod" do
|
68
|
+
@browser.ua = $ua["IPOD"]
|
137
69
|
|
138
70
|
assert_equal "iPod Touch", @browser.name
|
139
71
|
assert @browser.ipod?
|
@@ -147,8 +79,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
147
79
|
assert_equal "3", @browser.version
|
148
80
|
end
|
149
81
|
|
150
|
-
|
151
|
-
@browser.ua = IPAD
|
82
|
+
it "detects ipad" do
|
83
|
+
@browser.ua = $ua["IPAD"]
|
152
84
|
|
153
85
|
assert_equal "iPad", @browser.name
|
154
86
|
assert @browser.ipad?
|
@@ -162,33 +94,33 @@ class BrowserTest < Test::Unit::TestCase
|
|
162
94
|
assert_equal "4", @browser.version
|
163
95
|
end
|
164
96
|
|
165
|
-
|
166
|
-
@browser.ua = IOS4
|
97
|
+
it "detects ios4" do
|
98
|
+
@browser.ua = $ua["IOS4"]
|
167
99
|
assert @browser.ios?
|
168
100
|
assert @browser.ios4?
|
169
101
|
end
|
170
102
|
|
171
103
|
|
172
|
-
|
173
|
-
@browser.ua = IOS5
|
104
|
+
it "detects ios5" do
|
105
|
+
@browser.ua = $ua["IOS5"]
|
174
106
|
assert @browser.ios?
|
175
107
|
assert @browser.ios5?
|
176
108
|
end
|
177
109
|
|
178
|
-
|
179
|
-
@browser.ua = IOS6
|
110
|
+
it "detects ios6" do
|
111
|
+
@browser.ua = $ua["IOS6"]
|
180
112
|
assert @browser.ios?
|
181
113
|
assert @browser.ios6?
|
182
114
|
end
|
183
115
|
|
184
|
-
|
185
|
-
@browser.ua = IOS7
|
116
|
+
it "detects ios7" do
|
117
|
+
@browser.ua = $ua["IOS7"]
|
186
118
|
assert @browser.ios?
|
187
119
|
assert @browser.ios7?
|
188
120
|
end
|
189
121
|
|
190
|
-
|
191
|
-
@browser.ua = IE6
|
122
|
+
it "detects ie6" do
|
123
|
+
@browser.ua = $ua["IE6"]
|
192
124
|
|
193
125
|
assert_equal "Internet Explorer", @browser.name
|
194
126
|
assert @browser.ie?
|
@@ -198,8 +130,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
198
130
|
assert_equal "6", @browser.version
|
199
131
|
end
|
200
132
|
|
201
|
-
|
202
|
-
@browser.ua = IE7
|
133
|
+
it "detects ie7" do
|
134
|
+
@browser.ua = $ua["IE7"]
|
203
135
|
|
204
136
|
assert_equal "Internet Explorer", @browser.name
|
205
137
|
assert @browser.ie?
|
@@ -209,8 +141,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
209
141
|
assert_equal "7", @browser.version
|
210
142
|
end
|
211
143
|
|
212
|
-
|
213
|
-
@browser.ua = IE8
|
144
|
+
it "detects ie8" do
|
145
|
+
@browser.ua = $ua["IE8"]
|
214
146
|
|
215
147
|
assert_equal "Internet Explorer", @browser.name
|
216
148
|
assert @browser.ie?
|
@@ -221,8 +153,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
221
153
|
assert_equal "8", @browser.version
|
222
154
|
end
|
223
155
|
|
224
|
-
|
225
|
-
@browser.ua = IE8_COMPAT
|
156
|
+
it "detects ie8 in compatibility view" do
|
157
|
+
@browser.ua = $ua["IE8_COMPAT"]
|
226
158
|
|
227
159
|
assert_equal "Internet Explorer", @browser.name
|
228
160
|
assert @browser.ie?
|
@@ -234,8 +166,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
234
166
|
assert_equal "7", @browser.version
|
235
167
|
end
|
236
168
|
|
237
|
-
|
238
|
-
@browser.ua = IE9
|
169
|
+
it "detects ie9" do
|
170
|
+
@browser.ua = $ua["IE9"]
|
239
171
|
|
240
172
|
assert_equal "Internet Explorer", @browser.name
|
241
173
|
assert @browser.ie?
|
@@ -246,8 +178,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
246
178
|
assert_equal "9", @browser.version
|
247
179
|
end
|
248
180
|
|
249
|
-
|
250
|
-
@browser.ua = IE9_COMPAT
|
181
|
+
it "detects ie9 in compatibility view" do
|
182
|
+
@browser.ua = $ua["IE9_COMPAT"]
|
251
183
|
|
252
184
|
assert_equal "Internet Explorer", @browser.name
|
253
185
|
assert @browser.ie?
|
@@ -259,8 +191,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
259
191
|
assert_equal "7", @browser.version
|
260
192
|
end
|
261
193
|
|
262
|
-
|
263
|
-
@browser.ua = IE10
|
194
|
+
it "detects ie10" do
|
195
|
+
@browser.ua = $ua["IE10"]
|
264
196
|
|
265
197
|
assert_equal "Internet Explorer", @browser.name
|
266
198
|
assert @browser.ie?
|
@@ -271,8 +203,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
271
203
|
assert_equal "10", @browser.version
|
272
204
|
end
|
273
205
|
|
274
|
-
|
275
|
-
@browser.ua = IE10_COMPAT
|
206
|
+
it "detects ie10 in compatibility view" do
|
207
|
+
@browser.ua = $ua["IE10_COMPAT"]
|
276
208
|
|
277
209
|
assert_equal "Internet Explorer", @browser.name
|
278
210
|
assert @browser.ie?
|
@@ -284,8 +216,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
284
216
|
assert_equal "7", @browser.version
|
285
217
|
end
|
286
218
|
|
287
|
-
|
288
|
-
@browser.ua = IE11
|
219
|
+
it "detects ie11" do
|
220
|
+
@browser.ua = $ua["IE11"]
|
289
221
|
|
290
222
|
assert_equal "Internet Explorer", @browser.name
|
291
223
|
assert @browser.ie?
|
@@ -296,8 +228,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
296
228
|
assert_equal "11", @browser.version
|
297
229
|
end
|
298
230
|
|
299
|
-
|
300
|
-
@browser.ua = OPERA
|
231
|
+
it "detects opera" do
|
232
|
+
@browser.ua = $ua["OPERA"]
|
301
233
|
|
302
234
|
assert_equal "Opera", @browser.name
|
303
235
|
assert @browser.opera?
|
@@ -306,8 +238,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
306
238
|
assert_equal "11", @browser.version
|
307
239
|
end
|
308
240
|
|
309
|
-
|
310
|
-
@browser.ua = OPERA_NEXT
|
241
|
+
it "detects opera next" do
|
242
|
+
@browser.ua = $ua["OPERA_NEXT"]
|
311
243
|
|
312
244
|
assert_equal "Opera", @browser.name
|
313
245
|
assert_equal :opera, @browser.id
|
@@ -319,8 +251,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
319
251
|
assert_equal "28", @browser.version
|
320
252
|
end
|
321
253
|
|
322
|
-
|
323
|
-
@browser.ua = FIREFOX
|
254
|
+
it "detects firefox" do
|
255
|
+
@browser.ua = $ua["FIREFOX"]
|
324
256
|
|
325
257
|
assert_equal "Firefox", @browser.name
|
326
258
|
assert @browser.firefox?
|
@@ -329,8 +261,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
329
261
|
assert_equal "3", @browser.version
|
330
262
|
end
|
331
263
|
|
332
|
-
|
333
|
-
@browser.ua = FIREFOX_MODERN
|
264
|
+
it "detects modern firefox" do
|
265
|
+
@browser.ua = $ua["FIREFOX_MODERN"]
|
334
266
|
|
335
267
|
assert_equal "Firefox", @browser.name
|
336
268
|
assert @browser.firefox?
|
@@ -339,8 +271,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
339
271
|
assert_equal "17", @browser.version
|
340
272
|
end
|
341
273
|
|
342
|
-
|
343
|
-
@browser.ua = FIREFOX_TABLET
|
274
|
+
it "detects firefox android tablet" do
|
275
|
+
@browser.ua = $ua["FIREFOX_TABLET"]
|
344
276
|
|
345
277
|
assert_equal "Android", @browser.name
|
346
278
|
assert @browser.firefox?
|
@@ -351,8 +283,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
351
283
|
assert_equal "14", @browser.version
|
352
284
|
end
|
353
285
|
|
354
|
-
|
355
|
-
@browser.ua = CHROME
|
286
|
+
it "detects chrome" do
|
287
|
+
@browser.ua = $ua["CHROME"]
|
356
288
|
|
357
289
|
assert_equal "Chrome", @browser.name
|
358
290
|
assert @browser.chrome?
|
@@ -363,8 +295,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
363
295
|
assert_equal "5", @browser.version
|
364
296
|
end
|
365
297
|
|
366
|
-
|
367
|
-
@browser.ua = MOBILE_CHROME
|
298
|
+
it "detects mobile chrome" do
|
299
|
+
@browser.ua = $ua["MOBILE_CHROME"]
|
368
300
|
|
369
301
|
assert_equal "Chrome", @browser.name
|
370
302
|
assert @browser.chrome?
|
@@ -375,8 +307,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
375
307
|
assert_equal "19", @browser.version
|
376
308
|
end
|
377
309
|
|
378
|
-
|
379
|
-
@browser.ua = ANDROID
|
310
|
+
it "detects android" do
|
311
|
+
@browser.ua = $ua["ANDROID"]
|
380
312
|
|
381
313
|
assert_equal "Android", @browser.name
|
382
314
|
assert @browser.android?
|
@@ -389,8 +321,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
389
321
|
assert_equal "3", @browser.version
|
390
322
|
end
|
391
323
|
|
392
|
-
|
393
|
-
@browser.ua = TABLOID
|
324
|
+
it "detects android tablet" do
|
325
|
+
@browser.ua = $ua["TABLOID"]
|
394
326
|
|
395
327
|
assert_equal "Android", @browser.name
|
396
328
|
assert @browser.android?
|
@@ -403,8 +335,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
403
335
|
assert_equal "4", @browser.version
|
404
336
|
end
|
405
337
|
|
406
|
-
|
407
|
-
@browser.ua = SURFACE
|
338
|
+
it "detects surface tablet" do
|
339
|
+
@browser.ua = $ua["SURFACE"]
|
408
340
|
|
409
341
|
assert_equal "Internet Explorer", @browser.name
|
410
342
|
assert @browser.surface?
|
@@ -416,8 +348,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
416
348
|
assert_equal "10", @browser.version
|
417
349
|
end
|
418
350
|
|
419
|
-
|
420
|
-
@browser.ua = BLACKBERRY
|
351
|
+
it "detects blackberry" do
|
352
|
+
@browser.ua = $ua["BLACKBERRY"]
|
421
353
|
|
422
354
|
assert_equal "BlackBerry", @browser.name
|
423
355
|
assert @browser.blackberry?
|
@@ -428,8 +360,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
428
360
|
assert_equal "4", @browser.version
|
429
361
|
end
|
430
362
|
|
431
|
-
|
432
|
-
@browser.ua = BLACKBERRY4
|
363
|
+
it "detects blackberry4" do
|
364
|
+
@browser.ua = $ua["BLACKBERRY4"]
|
433
365
|
|
434
366
|
assert_equal "BlackBerry", @browser.name
|
435
367
|
assert @browser.blackberry4?
|
@@ -440,8 +372,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
440
372
|
assert_equal "4", @browser.version
|
441
373
|
end
|
442
374
|
|
443
|
-
|
444
|
-
@browser.ua = BLACKBERRY5
|
375
|
+
it "detects blackberry5" do
|
376
|
+
@browser.ua = $ua["BLACKBERRY5"]
|
445
377
|
|
446
378
|
assert_equal "BlackBerry", @browser.name
|
447
379
|
assert @browser.blackberry5?
|
@@ -452,8 +384,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
452
384
|
assert_equal "5", @browser.version
|
453
385
|
end
|
454
386
|
|
455
|
-
|
456
|
-
@browser.ua = BLACKBERRY6
|
387
|
+
it "detects blackberry6" do
|
388
|
+
@browser.ua = $ua["BLACKBERRY6"]
|
457
389
|
|
458
390
|
assert_equal "BlackBerry", @browser.name
|
459
391
|
assert @browser.blackberry6?
|
@@ -464,8 +396,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
464
396
|
assert_equal "534", @browser.version
|
465
397
|
end
|
466
398
|
|
467
|
-
|
468
|
-
@browser.ua = BLACKBERRY7
|
399
|
+
it "detects blackberry7" do
|
400
|
+
@browser.ua = $ua["BLACKBERRY7"]
|
469
401
|
|
470
402
|
assert_equal "BlackBerry", @browser.name
|
471
403
|
assert @browser.blackberry7?
|
@@ -476,8 +408,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
476
408
|
assert_equal "534", @browser.version
|
477
409
|
end
|
478
410
|
|
479
|
-
|
480
|
-
@browser.ua = BLACKBERRY10
|
411
|
+
it "detects blackberry10" do
|
412
|
+
@browser.ua = $ua["BLACKBERRY10"]
|
481
413
|
|
482
414
|
assert_equal "Safari", @browser.name
|
483
415
|
assert @browser.blackberry10?
|
@@ -488,8 +420,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
488
420
|
assert_equal "10", @browser.version
|
489
421
|
end
|
490
422
|
|
491
|
-
|
492
|
-
@browser.ua = QUICKTIME
|
423
|
+
it "detects quicktime" do
|
424
|
+
@browser.ua = $ua["QUICKTIME"]
|
493
425
|
|
494
426
|
assert_equal "QuickTime", @browser.name
|
495
427
|
assert @browser.quicktime?
|
@@ -497,8 +429,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
497
429
|
assert_equal "7", @browser.version
|
498
430
|
end
|
499
431
|
|
500
|
-
|
501
|
-
@browser.ua = COREMEDIA
|
432
|
+
it "detects core media" do
|
433
|
+
@browser.ua = $ua["COREMEDIA"]
|
502
434
|
|
503
435
|
assert_equal "Apple CoreMedia", @browser.name
|
504
436
|
assert @browser.core_media?
|
@@ -506,8 +438,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
506
438
|
assert_equal "1", @browser.version
|
507
439
|
end
|
508
440
|
|
509
|
-
|
510
|
-
@browser.ua = PHANTOM_JS
|
441
|
+
it "detects phantom.js" do
|
442
|
+
@browser.ua = $ua["PHANTOM_JS"]
|
511
443
|
|
512
444
|
assert_equal "PhantomJS", @browser.name
|
513
445
|
assert @browser.phantom_js?
|
@@ -518,23 +450,23 @@ class BrowserTest < Test::Unit::TestCase
|
|
518
450
|
assert_equal "1", @browser.version
|
519
451
|
end
|
520
452
|
|
521
|
-
|
522
|
-
@browser.ua = PSP
|
453
|
+
it "detects psp" do
|
454
|
+
@browser.ua = $ua["PSP"]
|
523
455
|
|
524
456
|
assert_equal "PlayStation Portable", @browser.name
|
525
457
|
assert @browser.psp?
|
526
458
|
assert @browser.mobile?
|
527
459
|
end
|
528
460
|
|
529
|
-
|
530
|
-
@browser.ua = PSP_VITA
|
461
|
+
it "detects psp vita" do
|
462
|
+
@browser.ua = $ua["PSP_VITA"]
|
531
463
|
|
532
464
|
assert_equal "PlayStation Portable", @browser.name
|
533
465
|
assert @browser.psp?
|
534
466
|
assert @browser.mobile?
|
535
467
|
end
|
536
468
|
|
537
|
-
|
469
|
+
it "detects other mobiles" do
|
538
470
|
@browser.ua = "Symbian OS"
|
539
471
|
assert @browser.mobile?
|
540
472
|
assert ! @browser.tablet?
|
@@ -544,8 +476,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
544
476
|
assert ! @browser.tablet?
|
545
477
|
end
|
546
478
|
|
547
|
-
|
548
|
-
@browser.ua = WINDOWS_MOBILE
|
479
|
+
it "detects windows mobile" do
|
480
|
+
@browser.ua = $ua["WINDOWS_MOBILE"]
|
549
481
|
|
550
482
|
assert @browser.mobile?
|
551
483
|
assert @browser.windows?
|
@@ -554,19 +486,19 @@ class BrowserTest < Test::Unit::TestCase
|
|
554
486
|
assert ! @browser.tablet?
|
555
487
|
end
|
556
488
|
|
557
|
-
|
489
|
+
it "returns a zero version" do
|
558
490
|
@browser.ua = "Bot"
|
559
491
|
assert_equal "0.0", @browser.full_version
|
560
492
|
assert_equal "0", @browser.version
|
561
493
|
end
|
562
494
|
|
563
|
-
|
564
|
-
@browser.ua = CHROME
|
495
|
+
it "sets meta" do
|
496
|
+
@browser.ua = $ua["CHROME"]
|
565
497
|
assert_kind_of Array, @browser.meta
|
566
498
|
end
|
567
499
|
|
568
|
-
|
569
|
-
@browser.ua = CHROME
|
500
|
+
it "returns string representation" do
|
501
|
+
@browser.ua = $ua["CHROME"]
|
570
502
|
meta = @browser.to_s
|
571
503
|
|
572
504
|
assert meta.include?("chrome")
|
@@ -575,8 +507,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
575
507
|
assert meta.include?("modern")
|
576
508
|
end
|
577
509
|
|
578
|
-
|
579
|
-
@browser.ua = IPHONE
|
510
|
+
it "returns string representation for ios" do
|
511
|
+
@browser.ua = $ua["IPHONE"]
|
580
512
|
meta = @browser.to_s
|
581
513
|
|
582
514
|
assert meta.include?("iphone")
|
@@ -589,8 +521,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
589
521
|
assert meta.include?("mobile")
|
590
522
|
end
|
591
523
|
|
592
|
-
|
593
|
-
@browser.ua = BLACKBERRY
|
524
|
+
it "returns string representation for mobile" do
|
525
|
+
@browser.ua = $ua["BLACKBERRY"]
|
594
526
|
meta = @browser.to_s
|
595
527
|
|
596
528
|
assert meta.include?("blackberry")
|
@@ -599,8 +531,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
599
531
|
assert meta.include?("mobile")
|
600
532
|
end
|
601
533
|
|
602
|
-
|
603
|
-
@browser.ua = IE6
|
534
|
+
it "returns string representation for ie6" do
|
535
|
+
@browser.ua = $ua["IE6"]
|
604
536
|
meta = @browser.meta
|
605
537
|
|
606
538
|
assert meta.include?("ie")
|
@@ -611,8 +543,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
611
543
|
assert meta.include?("windows")
|
612
544
|
end
|
613
545
|
|
614
|
-
|
615
|
-
@browser.ua = IE7
|
546
|
+
it "returns string representation for ie7" do
|
547
|
+
@browser.ua = $ua["IE7"]
|
616
548
|
meta = @browser.meta
|
617
549
|
|
618
550
|
assert meta.include?("ie")
|
@@ -623,8 +555,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
623
555
|
assert meta.include?("windows")
|
624
556
|
end
|
625
557
|
|
626
|
-
|
627
|
-
@browser.ua = IE8
|
558
|
+
it "returns string representation for ie8" do
|
559
|
+
@browser.ua = $ua["IE8"]
|
628
560
|
meta = @browser.meta
|
629
561
|
|
630
562
|
assert meta.include?("ie")
|
@@ -633,76 +565,76 @@ class BrowserTest < Test::Unit::TestCase
|
|
633
565
|
assert meta.include?("windows")
|
634
566
|
end
|
635
567
|
|
636
|
-
|
568
|
+
it "detects unknown id" do
|
637
569
|
@browser.ua = "Unknown"
|
638
570
|
assert_equal :other, @browser.id
|
639
571
|
end
|
640
572
|
|
641
|
-
|
573
|
+
it "detects unknown name" do
|
642
574
|
@browser.ua = "Unknown"
|
643
575
|
assert_equal "Other", @browser.name
|
644
576
|
end
|
645
577
|
|
646
|
-
|
578
|
+
it "detects mac platform" do
|
647
579
|
@browser.ua = "Mac OS X"
|
648
580
|
assert_equal :mac, @browser.platform
|
649
581
|
assert @browser.mac?
|
650
582
|
end
|
651
583
|
|
652
|
-
|
584
|
+
it "detects windows platform" do
|
653
585
|
@browser.ua = "Windows"
|
654
586
|
assert_equal :windows, @browser.platform
|
655
587
|
assert @browser.windows?
|
656
588
|
end
|
657
589
|
|
658
|
-
|
659
|
-
@browser.ua = WINDOWS8
|
590
|
+
it "detects windows8" do
|
591
|
+
@browser.ua = $ua["WINDOWS8"]
|
660
592
|
|
661
593
|
assert @browser.windows?
|
662
594
|
assert @browser.windows8?
|
663
595
|
end
|
664
596
|
|
665
|
-
|
666
|
-
@browser.ua = WINDOWS81
|
597
|
+
it "detects windows8.1" do
|
598
|
+
@browser.ua = $ua["WINDOWS81"]
|
667
599
|
|
668
600
|
assert @browser.windows?
|
669
601
|
assert @browser.windows8?
|
670
602
|
end
|
671
603
|
|
672
|
-
|
604
|
+
it "detects linux platform" do
|
673
605
|
@browser.ua = "Linux"
|
674
606
|
assert_equal :linux, @browser.platform
|
675
607
|
assert @browser.linux?
|
676
608
|
end
|
677
609
|
|
678
|
-
|
610
|
+
it "detects unknown platform" do
|
679
611
|
@browser.ua = "Unknown"
|
680
612
|
assert_equal :other, @browser.platform
|
681
613
|
end
|
682
614
|
|
683
|
-
|
615
|
+
it "returns all known languages" do
|
684
616
|
@browser.accept_language = "en-us,en;q=0.8,pt-br;q=0.5,pt;q=0.3"
|
685
617
|
assert_equal ["en-us", "en", "pt-br", "pt"], @browser.accept_language
|
686
618
|
end
|
687
619
|
|
688
|
-
|
689
|
-
@browser.ua = XOOM
|
620
|
+
it "detects xoom" do
|
621
|
+
@browser.ua = $ua["XOOM"]
|
690
622
|
|
691
623
|
assert @browser.android?
|
692
624
|
assert @browser.tablet?
|
693
625
|
assert ! @browser.mobile?
|
694
626
|
end
|
695
627
|
|
696
|
-
|
697
|
-
@browser.ua = NEXUS_TABLET
|
628
|
+
it "detects nexus tablet" do
|
629
|
+
@browser.ua = $ua["NEXUS_TABLET"]
|
698
630
|
|
699
631
|
assert @browser.android?
|
700
632
|
assert @browser.tablet?
|
701
633
|
assert ! @browser.mobile?
|
702
634
|
end
|
703
635
|
|
704
|
-
|
705
|
-
@browser.ua = PLAYBOOK
|
636
|
+
it "detects blackberry playbook tablet" do
|
637
|
+
@browser.ua = $ua["PLAYBOOK"]
|
706
638
|
|
707
639
|
assert ! @browser.android?
|
708
640
|
assert @browser.tablet?
|
@@ -712,24 +644,24 @@ class BrowserTest < Test::Unit::TestCase
|
|
712
644
|
assert_equal "7", @browser.version
|
713
645
|
end
|
714
646
|
|
715
|
-
|
716
|
-
@browser.ua = OPERA_MINI
|
647
|
+
it "detects opera mini" do
|
648
|
+
@browser.ua = $ua["OPERA_MINI"]
|
717
649
|
|
718
650
|
assert @browser.opera_mini?
|
719
651
|
assert ! @browser.tablet?
|
720
652
|
assert @browser.mobile?
|
721
653
|
end
|
722
654
|
|
723
|
-
|
724
|
-
@browser.ua = OPERA_MOBI
|
655
|
+
it "detects opera mobi" do
|
656
|
+
@browser.ua = $ua["OPERA_MOBI"]
|
725
657
|
|
726
658
|
assert @browser.opera?
|
727
659
|
assert ! @browser.tablet?
|
728
660
|
assert @browser.mobile?
|
729
661
|
end
|
730
662
|
|
731
|
-
|
732
|
-
@browser.ua = WINDOWS_PHONE
|
663
|
+
it "detects windows phone" do
|
664
|
+
@browser.ua = $ua["WINDOWS_PHONE"]
|
733
665
|
|
734
666
|
assert @browser.ie?
|
735
667
|
assert_equal "7", @browser.version
|
@@ -739,8 +671,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
739
671
|
assert ! @browser.tablet?
|
740
672
|
end
|
741
673
|
|
742
|
-
|
743
|
-
@browser.ua = WINDOWS_PHONE8
|
674
|
+
it "detects windows phone 8" do
|
675
|
+
@browser.ua = $ua["WINDOWS_PHONE8"]
|
744
676
|
|
745
677
|
assert @browser.ie?
|
746
678
|
assert_equal "10", @browser.version
|
@@ -750,8 +682,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
750
682
|
assert ! @browser.tablet?
|
751
683
|
end
|
752
684
|
|
753
|
-
|
754
|
-
@browser.ua = WINDOWS_PHONE8
|
685
|
+
it "detects windows mobile" do
|
686
|
+
@browser.ua = $ua["WINDOWS_PHONE8"]
|
755
687
|
|
756
688
|
assert @browser.ie?
|
757
689
|
assert_equal "10", @browser.version
|
@@ -761,13 +693,13 @@ class BrowserTest < Test::Unit::TestCase
|
|
761
693
|
assert ! @browser.tablet?
|
762
694
|
end
|
763
695
|
|
764
|
-
|
765
|
-
@browser.ua = IE10_X64_WINX64
|
696
|
+
it "detects windows x64" do
|
697
|
+
@browser.ua = $ua["IE10_X64_WINX64"]
|
766
698
|
assert @browser.windows_x64?
|
767
699
|
end
|
768
700
|
|
769
|
-
|
770
|
-
@browser.ua = IE11_TOUCH_SCREEN
|
701
|
+
it "detects ie11 touch desktop pc" do
|
702
|
+
@browser.ua = $ua["IE11_TOUCH_SCREEN"]
|
771
703
|
|
772
704
|
assert_equal "Internet Explorer", @browser.name
|
773
705
|
assert @browser.ie?
|
@@ -781,22 +713,22 @@ class BrowserTest < Test::Unit::TestCase
|
|
781
713
|
assert_equal "11", @browser.version
|
782
714
|
end
|
783
715
|
|
784
|
-
|
785
|
-
@browser.ua = KINDLE
|
716
|
+
it "detects kindle monochrome" do
|
717
|
+
@browser.ua = $ua["KINDLE"]
|
786
718
|
|
787
719
|
assert @browser.kindle?
|
788
720
|
assert @browser.webkit?
|
789
721
|
end
|
790
722
|
|
791
|
-
|
792
|
-
@browser.ua = KINDLE_FIRE
|
723
|
+
it "detects kindle fire" do
|
724
|
+
@browser.ua = $ua["KINDLE_FIRE"]
|
793
725
|
|
794
726
|
assert @browser.kindle?
|
795
727
|
assert @browser.webkit?
|
796
728
|
end
|
797
729
|
|
798
|
-
|
799
|
-
@browser.ua = KINDLE_FIRE_HD
|
730
|
+
it "detects kindle fire hd" do
|
731
|
+
@browser.ua = $ua["KINDLE_FIRE_HD"]
|
800
732
|
|
801
733
|
assert @browser.silk?
|
802
734
|
assert @browser.kindle?
|
@@ -805,8 +737,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
805
737
|
assert ! @browser.mobile?
|
806
738
|
end
|
807
739
|
|
808
|
-
|
809
|
-
@browser.ua = KINDLE_FIRE_HD_MOBILE
|
740
|
+
it "detects kindle fire hd mobile" do
|
741
|
+
@browser.ua = $ua["KINDLE_FIRE_HD_MOBILE"]
|
810
742
|
|
811
743
|
assert @browser.silk?
|
812
744
|
assert @browser.kindle?
|
@@ -815,97 +747,97 @@ class BrowserTest < Test::Unit::TestCase
|
|
815
747
|
assert @browser.mobile?
|
816
748
|
end
|
817
749
|
|
818
|
-
|
819
|
-
@browser.ua = NOOK
|
750
|
+
it "detects nook" do
|
751
|
+
@browser.ua = $ua["NOOK"]
|
820
752
|
|
821
753
|
assert @browser.tablet?
|
822
754
|
assert ! @browser.mobile?
|
823
755
|
end
|
824
756
|
|
825
|
-
|
826
|
-
@browser.ua = SAMSUNG
|
757
|
+
it "detects samsung" do
|
758
|
+
@browser.ua = $ua["SAMSUNG"]
|
827
759
|
|
828
760
|
assert @browser.tablet?
|
829
761
|
assert ! @browser.mobile?
|
830
762
|
end
|
831
763
|
|
832
|
-
|
833
|
-
@browser.ua = NINTENDO_WII
|
764
|
+
it "detects nintendo wii" do
|
765
|
+
@browser.ua = $ua["NINTENDO_WII"]
|
834
766
|
|
835
767
|
assert @browser.console?
|
836
768
|
assert @browser.nintendo?
|
837
769
|
end
|
838
770
|
|
839
|
-
|
840
|
-
@browser.ua = NINTENDO_WIIU
|
771
|
+
it "detects nintendo wii u" do
|
772
|
+
@browser.ua = $ua["NINTENDO_WIIU"]
|
841
773
|
|
842
774
|
assert @browser.console?
|
843
775
|
assert @browser.nintendo?
|
844
776
|
end
|
845
777
|
|
846
|
-
|
847
|
-
@browser.ua = PLAYSTATION3
|
778
|
+
it "detects playstation 3" do
|
779
|
+
@browser.ua = $ua["PLAYSTATION3"]
|
848
780
|
|
849
781
|
assert @browser.console?
|
850
782
|
assert @browser.playstation?
|
851
783
|
end
|
852
784
|
|
853
|
-
|
854
|
-
@browser.ua = PLAYSTATION4
|
785
|
+
it "detects playstation 4" do
|
786
|
+
@browser.ua = $ua["PLAYSTATION4"]
|
855
787
|
|
856
788
|
assert @browser.console?
|
857
789
|
assert @browser.playstation?
|
858
790
|
end
|
859
791
|
|
860
|
-
|
861
|
-
@browser.ua = XBOX360
|
792
|
+
it "detects xbox 360" do
|
793
|
+
@browser.ua = $ua["XBOX360"]
|
862
794
|
|
863
795
|
assert @browser.console?
|
864
796
|
assert @browser.xbox?
|
865
797
|
end
|
866
798
|
|
867
|
-
|
868
|
-
@browser.ua = XBOXONE
|
799
|
+
it "detects xbox one" do
|
800
|
+
@browser.ua = $ua["XBOXONE"]
|
869
801
|
|
870
802
|
assert @browser.console?
|
871
803
|
assert @browser.xbox?
|
872
804
|
end
|
873
805
|
|
874
|
-
|
875
|
-
@browser.ua = SAFARI
|
806
|
+
it "removes duplicate items" do
|
807
|
+
@browser.ua = $ua["SAFARI"]
|
876
808
|
assert_equal ["safari"], @browser.meta.select {|item| item == "safari" }
|
877
809
|
end
|
878
810
|
|
879
|
-
|
880
|
-
@browser.ua = SAFARI
|
811
|
+
it "detects meta aliased as to_a" do
|
812
|
+
@browser.ua = $ua["SAFARI"]
|
881
813
|
assert_equal @browser.meta, @browser.to_a
|
882
814
|
end
|
883
815
|
|
884
|
-
|
885
|
-
@browser.ua = GOOGLE_BOT
|
816
|
+
it "detects bots" do
|
817
|
+
@browser.ua = $ua["GOOGLE_BOT"]
|
886
818
|
assert @browser.bot?
|
887
819
|
|
888
|
-
@browser.ua = MSN_BOT
|
820
|
+
@browser.ua = $ua["MSN_BOT"]
|
889
821
|
assert @browser.bot?
|
890
822
|
|
891
|
-
@browser.ua = FACEBOOK_BOT
|
823
|
+
@browser.ua = $ua["FACEBOOK_BOT"]
|
892
824
|
assert @browser.bot?
|
893
825
|
|
894
826
|
# Many bots actually report empty ua strings.
|
895
827
|
@browser.ua = ''
|
896
828
|
assert @browser.bot?
|
897
829
|
|
898
|
-
@browser.ua = CHROME
|
830
|
+
@browser.ua = $ua["CHROME"]
|
899
831
|
assert ! @browser.bot?
|
900
832
|
end
|
901
833
|
|
902
|
-
|
903
|
-
@browser.ua = CHROME_OS
|
834
|
+
it "detects chrome os" do
|
835
|
+
@browser.ua = $ua["CHROME_OS"]
|
904
836
|
assert @browser.chrome_os?
|
905
837
|
end
|
906
838
|
|
907
|
-
|
908
|
-
@browser.ua = SMART_TV
|
839
|
+
it "detects tv" do
|
840
|
+
@browser.ua = $ua["SMART_TV"]
|
909
841
|
assert @browser.tv?
|
910
842
|
end
|
911
843
|
end
|