browser_detector 1.0.1 → 1.1.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.
- data/.gitignore +1 -0
- data/Rakefile +19 -31
- data/VERSION +1 -1
- data/browser_detector.gemspec +19 -15
- data/lib/browser_detector.rb +1 -1
- data/lib/browser_detector/detector.rb +111 -98
- data/lib/browser_detector/rails/view_helpers.rb +27 -0
- data/spec/browser_detector/detector_shared_specs.rb +158 -0
- data/spec/browser_detector/detector_spec.rb +475 -0
- data/spec/browser_detector_spec.rb +7 -0
- data/spec/spec.opts +5 -0
- data/spec/spec_helper.rb +9 -0
- metadata +51 -18
- data/test/browser_detector/detector_test.rb +0 -1425
- data/test/browser_detector/rails/view_helpers_test.rb +0 -97
- data/test/browser_detector_test.rb +0 -7
- data/test/test_helper.rb +0 -27
@@ -20,6 +20,33 @@ module BrowserDetector
|
|
20
20
|
@g_browser_detector.browser_version
|
21
21
|
end
|
22
22
|
|
23
|
+
# Returns the major version of the browser that is making this request. For example '7'. When using
|
24
|
+
# the browser detector in the contoller you may put a :g_browser_detector variabe in the session if
|
25
|
+
# you wish to keep the BrowserDetector from being instantiated more than once per request.
|
26
|
+
#
|
27
|
+
def g_browser_version_major
|
28
|
+
setup_detector
|
29
|
+
@g_browser_detector.browser_version_major
|
30
|
+
end
|
31
|
+
|
32
|
+
# Returns the major version of the browser that is making this request. For example '7'. When using
|
33
|
+
# the browser detector in the contoller you may put a :g_browser_detector variabe in the session if
|
34
|
+
# you wish to keep the BrowserDetector from being instantiated more than once per request.
|
35
|
+
#
|
36
|
+
def g_browser_version_minor
|
37
|
+
setup_detector
|
38
|
+
@g_browser_detector.browser_version_minor
|
39
|
+
end
|
40
|
+
|
41
|
+
# Returns the major version of the browser that is making this request. For example '7'. When using
|
42
|
+
# the browser detector in the contoller you may put a :g_browser_detector variabe in the session if
|
43
|
+
# you wish to keep the BrowserDetector from being instantiated more than once per request.
|
44
|
+
#
|
45
|
+
def g_browser_version_build
|
46
|
+
setup_detector
|
47
|
+
@g_browser_detector.browser_version_build
|
48
|
+
end
|
49
|
+
|
23
50
|
# Returns the full browser name. For example, 'Internet Explorer 7.0'.
|
24
51
|
#
|
25
52
|
def g_browser_full_name
|
@@ -0,0 +1,158 @@
|
|
1
|
+
shared_examples_for "any browser detection" do
|
2
|
+
it "should agree that the browser name is '#{vars[:browser_name]}'" do
|
3
|
+
detector.browser_name.should == vars[:browser_name]
|
4
|
+
end
|
5
|
+
|
6
|
+
it "should agree that the browser version is '#{vars[:browser_version]}'" do
|
7
|
+
detector.browser_version.should == vars[:browser_version]
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should agree that the browser major version is '#{vars[:browser_version_major]}'" do
|
11
|
+
detector.browser_version_major.should == vars[:browser_version_major]
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should agree that the browser minor version is '#{vars[:browser_version_minor]}'" do
|
15
|
+
detector.browser_version_minor.should == vars[:browser_version_minor]
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should agree that the browser build version is '#{vars[:browser_version_build]}'" do
|
19
|
+
detector.browser_version_build.should == vars[:browser_version_build]
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should agree that the browser revision version is '#{vars[:browser_version_revision]}'" do
|
23
|
+
detector.browser_version_revision.should == vars[:browser_version_revision]
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should have a browser id of '#{vars[:browser_id]}'" do
|
27
|
+
detector.browser_id.should == vars[:browser_id]
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should have a browser full name of '#{vars[:browser_full_name]}'" do
|
31
|
+
detector.browser_full_name.should == vars[:browser_full_name]
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should #{vars[:can_use_png] ? '' : 'not '}be able to use a png" do
|
35
|
+
detector.can_use_png?.should == vars[:can_use_png]
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should agree that the browser is '#{vars[:browser_name]}" do
|
39
|
+
detector.browser_is?( :name => vars[:browser_name] ).should be_true
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should agree that the browser is :version => '#{vars[:browser_version]}'" do
|
43
|
+
detector.browser_is?( :version => vars[:browser_version] ).should be_true
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should agree that the browser is :name => '#{vars[:browser_name]}' and :version => '#{vars[:browser_version]}'" do
|
47
|
+
detector.browser_is?( :name => vars[:browser_name],
|
48
|
+
:version => vars[:browser_version] ).should be_true
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should agree that the browser is :name => '#{vars[:browser_name]}'.to_sym and :version => '#{vars[:browser_version]}'" do
|
52
|
+
detector.browser_is?( :name => vars[:browser_name].to_sym,
|
53
|
+
:version => vars[:browser_version] ).should be_true
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should agree that the browser is :major_version => '#{vars[:browser_version_major]}'" do
|
57
|
+
detector.browser_is?( :major_version => vars[:browser_version_major] ).should be_true
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should agree that the browser is :minor_version => '#{vars[:browser_version_minor]}'" do
|
61
|
+
detector.browser_is?( :minor_version => vars[:browser_version_minor] ).should be_true
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should agree that the browser is :build_version => '#{vars[:browser_version_build]}'" do
|
65
|
+
detector.browser_is?( :build_version => vars[:browser_version_build] ).should be_true
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should agree that the browser is :revision_version => '#{vars[:browser_version_revision]}'" do
|
69
|
+
detector.browser_is?( :revision_version => vars[:browser_version_revision] ).should be_true
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should agree that the browser is :major_version => '#{vars[:browser_version_major]}', :minor_version => '#{vars[:browser_version_minor]}'" do
|
73
|
+
detector.browser_is?( :major_version => vars[:browser_version_major],
|
74
|
+
:minor_version => vars[:browser_version_minor] ).should be_true
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should agree that the browser is :major_version => '#{vars[:browser_version_major]}', :minor_version => '#{vars[:browser_version_minor]}', :build_version => '#{vars[:browser_version_build]}'" do
|
78
|
+
detector.browser_is?( :major_version => vars[:browser_version_major],
|
79
|
+
:minor_version => vars[:browser_version_minor],
|
80
|
+
:build_version => vars[:browser_version_build] ).should be_true
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should agree that the browser is :major_version => '#{vars[:browser_version_major]}', :minor_version => '#{vars[:browser_version_minor]}', :build_version => '#{vars[:browser_version_build]}', :revision_version => '#{vars[:browser_version_revision]}'" do
|
84
|
+
detector.browser_is?( :major_version => vars[:browser_version_major],
|
85
|
+
:minor_version => vars[:browser_version_minor],
|
86
|
+
:build_version => vars[:browser_version_build],
|
87
|
+
:revision_version => vars[:browser_version_revision] ).should be_true
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should agree that the browser is :name => '#{vars[:browser_name]}', :major_version => '#{vars[:browser_version_major]}'" do
|
91
|
+
detector.browser_is?( :name => vars[:browser_name],
|
92
|
+
:major_version => vars[:browser_version_major] ).should be_true
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should agree that the browser is :name => '#{vars[:browser_name]}', :minor_version => '#{vars[:browser_version_minor]}'" do
|
96
|
+
detector.browser_is?( :name => vars[:browser_name],
|
97
|
+
:minor_version => vars[:browser_version_minor] ).should be_true
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should agree that the browser is :name => '#{vars[:browser_name]}', :build_version => '#{vars[:browser_version_build]}'" do
|
101
|
+
detector.browser_is?( :name => vars[:browser_name],
|
102
|
+
:build_version => vars[:browser_version_build] ).should be_true
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should agree that the browser is :name => '#{vars[:browser_name]}', :revision_version => '#{vars[:browser_version_revision]}'" do
|
106
|
+
detector.browser_is?( :name => vars[:browser_name],
|
107
|
+
:revision_version => vars[:browser_version_revision] ).should be_true
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should agree that the browser is :name => '#{vars[:browser_name]}', :major_version => '#{vars[:browser_version_major]}'.to_i" do
|
111
|
+
detector.browser_is?( :name => vars[:browser_name],
|
112
|
+
:major_version => vars[:browser_version_major].to_i ).should be_true
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should agree that the browser is :name => '#{vars[:browser_name]}', :minor_version => '#{vars[:browser_version_minor]}'.to_i" do
|
116
|
+
detector.browser_is?( :name => vars[:browser_name],
|
117
|
+
:minor_version => vars[:browser_version_minor].to_i ).should be_true
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should agree that the browser is :name => '#{vars[:browser_name]}', :build_version => '#{vars[:browser_version_build]}'.to_i" do
|
121
|
+
detector.browser_is?( :name => vars[:browser_name],
|
122
|
+
:build_version => vars[:browser_version_build].to_i ).should be_true
|
123
|
+
end
|
124
|
+
|
125
|
+
it "should agree that the browser is :name => '#{vars[:browser_name]}', :revision_version => '#{vars[:browser_version_revision]}'.to_i" do
|
126
|
+
detector.browser_is?( :name => vars[:browser_name],
|
127
|
+
:revision_version => vars[:browser_version_revision].to_i ).should be_true
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should agree that the browser is :name => '#{vars[:browser_name]}', :major_version => '#{vars[:browser_version_major]}', :minor_version => '#{vars[:browser_version_minor]}'" do
|
131
|
+
detector.browser_is?( :name => vars[:browser_name],
|
132
|
+
:major_version => vars[:browser_version_major],
|
133
|
+
:minor_version => vars[:browser_version_minor] ).should be_true
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should agree that the browser is :name => '#{vars[:browser_name]}', :major_version => '#{vars[:browser_version_major]}', :minor_version => '#{vars[:browser_version_minor]}', :build_version => '#{vars[:browser_version_build]}'" do
|
137
|
+
detector.browser_is?( :name => vars[:browser_name],
|
138
|
+
:major_version => vars[:browser_version_major],
|
139
|
+
:minor_version => vars[:browser_version_minor],
|
140
|
+
:build_version => vars[:browser_version_build] ).should be_true
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should agree that the browser is :name => '#{vars[:browser_name]}', :major_version => '#{vars[:browser_version_major]}', :minor_version => '#{vars[:browser_version_minor]}', :build_version => '#{vars[:browser_version_build]}', :revision_version => '#{vars[:browser_version_revision]}'" do
|
144
|
+
detector.browser_is?( :name => vars[:browser_name],
|
145
|
+
:major_version => vars[:browser_version_major],
|
146
|
+
:minor_version => vars[:browser_version_minor],
|
147
|
+
:build_version => vars[:browser_version_build],
|
148
|
+
:revision_version => vars[:browser_version_revision]).should be_true
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should agree that it is #{vars[:is_webkit] ? '' : 'not '}a webkit browser" do
|
152
|
+
detector.webkit?.should == vars[:is_webkit]
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should agree that it is #{vars[:is_iphone] ? '' : 'not '}the iphone" do
|
156
|
+
detector.iphone?.should == vars[:is_iphone]
|
157
|
+
end
|
158
|
+
end
|
@@ -0,0 +1,475 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require File.join( File.dirname(__FILE__), 'detector_shared_specs' )
|
3
|
+
|
4
|
+
describe BrowserDetector::Detector do
|
5
|
+
before :each do
|
6
|
+
@klass = BrowserDetector::Detector
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.user_agents
|
10
|
+
{
|
11
|
+
:ie55 => 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1)',
|
12
|
+
:ie60 => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
|
13
|
+
:ie70 => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
|
14
|
+
:ie80 => 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
|
15
|
+
:firefox2 => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17',
|
16
|
+
:firefox3 => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.0.11) Gecko/2009060214 Firefox/3.0.11',
|
17
|
+
:firefox35 => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3',
|
18
|
+
:firefox35win => 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)',
|
19
|
+
:opera10 => 'Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.00',
|
20
|
+
:safari40 => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16',
|
21
|
+
:safari501 => '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',
|
22
|
+
:chrome3 => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0',
|
23
|
+
:chrome4 => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.8 Safari/532.2',
|
24
|
+
:safari_mobile4 => 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7C144 Safari/528.16',
|
25
|
+
:safari_mobile3 => 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A535b Safari/419.3'
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
def user_agents
|
30
|
+
self.class.user_agents
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should have the correct value for IE_REGEX" do
|
34
|
+
@klass::IE_REGEX.should == /.*; MSIE ([\d|.]*);.*/i
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should have the correct value for OPERA_REGEX" do
|
38
|
+
@klass::OPERA_REGEX.should == /Opera.*Version\/([\d|.]*)/i
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should have the crrect value for CHROME_REGEX" do
|
42
|
+
@klass::CHROME_REGEX.should == /.* Chrome\/([\d|.]*).*/i
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should have the crrect value for SAFARI_REGEX" do
|
46
|
+
@klass::SAFARI_REGEX.should == /.*Gecko\) Version\/([\d|.]*) Safari\/[\d|.]*/i
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should have the crrect value for VERSION_REGEX" do
|
50
|
+
@klass::VERSION_REGEX.should == /(\d*)\.(\d*)\.*(\d*)\.*(\d*)/
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should have the crrect value for FIREFOX_REGEX" do
|
54
|
+
@klass::FIREFOX_REGEX.should == /.* Firefox\/([\d|.]*).*/i
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should have the crrect value for SAFARI_MOBILE_REGEX" do
|
58
|
+
@klass::SAFARI_MOBILE_REGEX.should == /.*Gecko\) Version\/([\d|.]*) Mobile\/.* Safari\/[\d|.]*/i
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should have the correct patterns collection" do
|
62
|
+
@klass.patterns.should == {
|
63
|
+
@klass::CHROME_REGEX => 'chrome',
|
64
|
+
@klass::IE_REGEX => 'ie',
|
65
|
+
@klass::FIREFOX_REGEX => 'firefox',
|
66
|
+
@klass::OPERA_REGEX => 'opera',
|
67
|
+
@klass::SAFARI_REGEX => 'safari',
|
68
|
+
@klass::SAFARI_MOBILE_REGEX => 'safari_mobile'
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should not depend on the order the user agent is tested against the REGEXs"
|
73
|
+
|
74
|
+
it "should know the correct known browser ids" do
|
75
|
+
@klass.all_browsers.sort.should == %w(chrome firefox ie55 ie60 ie70 ie80 konqueror netscape opera safari).sort
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should know the correct known mobile browser ids" do
|
79
|
+
@klass.all_mobile_browsers.sort.should == %w(ie_ce4).sort
|
80
|
+
end
|
81
|
+
|
82
|
+
context "when given a nil user agent" do
|
83
|
+
before :each do
|
84
|
+
@detector = @klass.new( nil )
|
85
|
+
@detector.ua.should be_nil
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should agree that the browser name is 'unknown'" do
|
89
|
+
@detector.browser_name.should == 'unknown'
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
context "when given Firefox 2.0 user agent" do
|
94
|
+
def detector
|
95
|
+
BrowserDetector::Detector.new( self.user_agents[:firefox2] )
|
96
|
+
end
|
97
|
+
|
98
|
+
def self.vars
|
99
|
+
{
|
100
|
+
:browser_name => 'firefox',
|
101
|
+
:browser_version => '2.0.0.17',
|
102
|
+
:browser_version_major => '2',
|
103
|
+
:browser_version_minor => '0',
|
104
|
+
:browser_version_build => '0',
|
105
|
+
:browser_version_revision => '17',
|
106
|
+
:browser_id => 'firefox20017',
|
107
|
+
:browser_full_name => 'Firefox 2.0.0.17',
|
108
|
+
:can_use_png => true,
|
109
|
+
:is_webkit => false,
|
110
|
+
:is_iphone => false
|
111
|
+
}
|
112
|
+
end
|
113
|
+
def vars; self.class.vars; end
|
114
|
+
|
115
|
+
it_should_behave_like "any browser detection"
|
116
|
+
end
|
117
|
+
|
118
|
+
context "when given Firefox 3.0 user agent" do
|
119
|
+
def detector
|
120
|
+
BrowserDetector::Detector.new( self.user_agents[:firefox3] )
|
121
|
+
end
|
122
|
+
|
123
|
+
def self.vars
|
124
|
+
{
|
125
|
+
:browser_name => 'firefox',
|
126
|
+
:browser_version => '3.0.11',
|
127
|
+
:browser_version_major => '3',
|
128
|
+
:browser_version_minor => '0',
|
129
|
+
:browser_version_build => '11',
|
130
|
+
:browser_version_revision => '0',
|
131
|
+
:browser_id => 'firefox3011',
|
132
|
+
:browser_full_name => 'Firefox 3.0.11',
|
133
|
+
:can_use_png => true,
|
134
|
+
:is_webkit => false,
|
135
|
+
:is_iphone => false
|
136
|
+
}
|
137
|
+
end
|
138
|
+
def vars; self.class.vars; end
|
139
|
+
|
140
|
+
it_should_behave_like "any browser detection"
|
141
|
+
end
|
142
|
+
|
143
|
+
context "when given Firefox 3.5 user agent" do
|
144
|
+
def detector
|
145
|
+
BrowserDetector::Detector.new( self.user_agents[:firefox35] )
|
146
|
+
end
|
147
|
+
|
148
|
+
def self.vars
|
149
|
+
{
|
150
|
+
:browser_name => 'firefox',
|
151
|
+
:browser_version => '3.5.3',
|
152
|
+
:browser_version_major => '3',
|
153
|
+
:browser_version_minor => '5',
|
154
|
+
:browser_version_build => '3',
|
155
|
+
:browser_version_revision => '0',
|
156
|
+
:browser_id => 'firefox353',
|
157
|
+
:browser_full_name => 'Firefox 3.5.3',
|
158
|
+
:can_use_png => true,
|
159
|
+
:is_webkit => false,
|
160
|
+
:is_iphone => false
|
161
|
+
}
|
162
|
+
end
|
163
|
+
def vars; self.class.vars; end
|
164
|
+
|
165
|
+
it_should_behave_like "any browser detection"
|
166
|
+
end
|
167
|
+
|
168
|
+
context "when given Firefox 3.5 Windows user agent" do
|
169
|
+
def detector
|
170
|
+
BrowserDetector::Detector.new( self.user_agents[:firefox35win] )
|
171
|
+
end
|
172
|
+
|
173
|
+
def self.vars
|
174
|
+
{
|
175
|
+
:browser_name => 'firefox',
|
176
|
+
:browser_version => '3.5.3',
|
177
|
+
:browser_version_major => '3',
|
178
|
+
:browser_version_minor => '5',
|
179
|
+
:browser_version_build => '3',
|
180
|
+
:browser_version_revision => '0',
|
181
|
+
:browser_id => 'firefox353',
|
182
|
+
:browser_full_name => 'Firefox 3.5.3',
|
183
|
+
:can_use_png => true,
|
184
|
+
:is_webkit => false,
|
185
|
+
:is_iphone => false
|
186
|
+
}
|
187
|
+
end
|
188
|
+
def vars; self.class.vars; end
|
189
|
+
|
190
|
+
it_should_behave_like "any browser detection"
|
191
|
+
end
|
192
|
+
|
193
|
+
context "when given Opera 10.0 user agent" do
|
194
|
+
def detector
|
195
|
+
BrowserDetector::Detector.new( self.user_agents[:opera10] )
|
196
|
+
end
|
197
|
+
|
198
|
+
def self.vars
|
199
|
+
{
|
200
|
+
:browser_name => 'opera',
|
201
|
+
:browser_version => '10.00',
|
202
|
+
:browser_version_major => '10',
|
203
|
+
:browser_version_minor => '0',
|
204
|
+
:browser_version_build => '0',
|
205
|
+
:browser_version_revision => '0',
|
206
|
+
:browser_id => 'opera1000',
|
207
|
+
:browser_full_name => 'Opera 10.00',
|
208
|
+
:can_use_png => true,
|
209
|
+
:is_webkit => false,
|
210
|
+
:is_iphone => false
|
211
|
+
}
|
212
|
+
end
|
213
|
+
def vars; self.class.vars; end
|
214
|
+
|
215
|
+
it_should_behave_like "any browser detection"
|
216
|
+
end
|
217
|
+
|
218
|
+
context "when given IE 5.5 user agent" do
|
219
|
+
def detector
|
220
|
+
BrowserDetector::Detector.new( self.user_agents[:ie55] )
|
221
|
+
end
|
222
|
+
|
223
|
+
def self.vars
|
224
|
+
{
|
225
|
+
:browser_name => 'ie',
|
226
|
+
:browser_version => '5.5',
|
227
|
+
:browser_version_major => '5',
|
228
|
+
:browser_version_minor => '5',
|
229
|
+
:browser_version_build => '0',
|
230
|
+
:browser_version_revision => '0',
|
231
|
+
:browser_id => 'ie55',
|
232
|
+
:browser_full_name => 'Internet Explorer 5.5',
|
233
|
+
:can_use_png => false,
|
234
|
+
:is_webkit => false,
|
235
|
+
:is_iphone => false
|
236
|
+
}
|
237
|
+
end
|
238
|
+
def vars; self.class.vars; end
|
239
|
+
|
240
|
+
it_should_behave_like "any browser detection"
|
241
|
+
end
|
242
|
+
|
243
|
+
context "when given IE 6.0 user agent" do
|
244
|
+
def detector
|
245
|
+
BrowserDetector::Detector.new( self.user_agents[:ie60] )
|
246
|
+
end
|
247
|
+
|
248
|
+
def self.vars
|
249
|
+
{
|
250
|
+
:browser_name => 'ie',
|
251
|
+
:browser_version => '6.0',
|
252
|
+
:browser_version_major => '6',
|
253
|
+
:browser_version_minor => '0',
|
254
|
+
:browser_version_build => '0',
|
255
|
+
:browser_version_revision => '0',
|
256
|
+
:browser_id => 'ie60',
|
257
|
+
:browser_full_name => 'Internet Explorer 6.0',
|
258
|
+
:can_use_png => false,
|
259
|
+
:is_webkit => false,
|
260
|
+
:is_iphone => false
|
261
|
+
}
|
262
|
+
end
|
263
|
+
def vars; self.class.vars; end
|
264
|
+
|
265
|
+
it_should_behave_like "any browser detection"
|
266
|
+
end
|
267
|
+
|
268
|
+
context "when given IE 7.0 user agent" do
|
269
|
+
def detector
|
270
|
+
BrowserDetector::Detector.new( self.user_agents[:ie70] )
|
271
|
+
end
|
272
|
+
|
273
|
+
def self.vars
|
274
|
+
{
|
275
|
+
:browser_name => 'ie',
|
276
|
+
:browser_version => '7.0',
|
277
|
+
:browser_version_major => '7',
|
278
|
+
:browser_version_minor => '0',
|
279
|
+
:browser_version_build => '0',
|
280
|
+
:browser_version_revision => '0',
|
281
|
+
:browser_id => 'ie70',
|
282
|
+
:browser_full_name => 'Internet Explorer 7.0',
|
283
|
+
:can_use_png => true,
|
284
|
+
:is_webkit => false,
|
285
|
+
:is_iphone => false
|
286
|
+
}
|
287
|
+
end
|
288
|
+
def vars; self.class.vars; end
|
289
|
+
|
290
|
+
it_should_behave_like "any browser detection"
|
291
|
+
end
|
292
|
+
|
293
|
+
context "when given IE 8.0 user agent" do
|
294
|
+
def detector
|
295
|
+
BrowserDetector::Detector.new( self.user_agents[:ie80] )
|
296
|
+
end
|
297
|
+
|
298
|
+
def self.vars
|
299
|
+
{
|
300
|
+
:browser_name => 'ie',
|
301
|
+
:browser_version => '8.0',
|
302
|
+
:browser_version_major => '8',
|
303
|
+
:browser_version_minor => '0',
|
304
|
+
:browser_version_build => '0',
|
305
|
+
:browser_version_revision => '0',
|
306
|
+
:browser_id => 'ie80',
|
307
|
+
:browser_full_name => 'Internet Explorer 8.0',
|
308
|
+
:can_use_png => true,
|
309
|
+
:is_webkit => false,
|
310
|
+
:is_iphone => false
|
311
|
+
}
|
312
|
+
end
|
313
|
+
def vars; self.class.vars; end
|
314
|
+
|
315
|
+
it_should_behave_like "any browser detection"
|
316
|
+
end
|
317
|
+
|
318
|
+
context "when given Safari 4.0 user agent" do
|
319
|
+
def detector
|
320
|
+
BrowserDetector::Detector.new( self.user_agents[:safari40] )
|
321
|
+
end
|
322
|
+
|
323
|
+
def self.vars
|
324
|
+
{
|
325
|
+
:browser_name => 'safari',
|
326
|
+
:browser_version => '4.0',
|
327
|
+
:browser_version_major => '4',
|
328
|
+
:browser_version_minor => '0',
|
329
|
+
:browser_version_build => '0',
|
330
|
+
:browser_version_revision => '0',
|
331
|
+
:browser_id => 'safari40',
|
332
|
+
:browser_full_name => 'Safari 4.0',
|
333
|
+
:can_use_png => true,
|
334
|
+
:is_webkit => true,
|
335
|
+
:is_iphone => false
|
336
|
+
}
|
337
|
+
end
|
338
|
+
def vars; self.class.vars; end
|
339
|
+
|
340
|
+
it_should_behave_like "any browser detection"
|
341
|
+
end
|
342
|
+
|
343
|
+
context "when given Safari 5.0.1 user agent" do
|
344
|
+
def detector
|
345
|
+
BrowserDetector::Detector.new( self.user_agents[:safari501] )
|
346
|
+
end
|
347
|
+
|
348
|
+
def self.vars
|
349
|
+
{
|
350
|
+
:browser_name => 'safari',
|
351
|
+
:browser_version => '5.0.1',
|
352
|
+
:browser_version_major => '5',
|
353
|
+
:browser_version_minor => '0',
|
354
|
+
:browser_version_build => '1',
|
355
|
+
:browser_version_revision => '0',
|
356
|
+
:browser_id => 'safari501',
|
357
|
+
:browser_full_name => 'Safari 5.0.1',
|
358
|
+
:can_use_png => true,
|
359
|
+
:is_webkit => true,
|
360
|
+
:is_iphone => false
|
361
|
+
}
|
362
|
+
end
|
363
|
+
def vars; self.class.vars; end
|
364
|
+
|
365
|
+
it_should_behave_like "any browser detection"
|
366
|
+
end
|
367
|
+
|
368
|
+
context "when given Chrome 3.0.195.27 user agent" do
|
369
|
+
def detector
|
370
|
+
BrowserDetector::Detector.new( self.user_agents[:chrome3] )
|
371
|
+
end
|
372
|
+
|
373
|
+
def self.vars
|
374
|
+
{
|
375
|
+
:browser_name => 'chrome',
|
376
|
+
:browser_version => '3.0.195.27',
|
377
|
+
:browser_version_major => '3',
|
378
|
+
:browser_version_minor => '0',
|
379
|
+
:browser_version_build => '195',
|
380
|
+
:browser_version_revision => '27',
|
381
|
+
:browser_id => 'chrome3019527',
|
382
|
+
:browser_full_name => 'Chrome 3.0.195.27',
|
383
|
+
:can_use_png => true,
|
384
|
+
:is_webkit => true,
|
385
|
+
:is_iphone => false
|
386
|
+
}
|
387
|
+
end
|
388
|
+
def vars; self.class.vars; end
|
389
|
+
|
390
|
+
it_should_behave_like "any browser detection"
|
391
|
+
end
|
392
|
+
|
393
|
+
context "when given Chrome 4.0.221.8 user agent" do
|
394
|
+
def detector
|
395
|
+
BrowserDetector::Detector.new( self.user_agents[:chrome4] )
|
396
|
+
end
|
397
|
+
|
398
|
+
def self.vars
|
399
|
+
{
|
400
|
+
:browser_name => 'chrome',
|
401
|
+
:browser_version => '4.0.221.8',
|
402
|
+
:browser_version_major => '4',
|
403
|
+
:browser_version_minor => '0',
|
404
|
+
:browser_version_build => '221',
|
405
|
+
:browser_version_revision => '8',
|
406
|
+
:browser_id => 'chrome402218',
|
407
|
+
:browser_full_name => 'Chrome 4.0.221.8',
|
408
|
+
:can_use_png => true,
|
409
|
+
:is_webkit => true,
|
410
|
+
:is_iphone => false
|
411
|
+
}
|
412
|
+
end
|
413
|
+
def vars; self.class.vars; end
|
414
|
+
|
415
|
+
it_should_behave_like "any browser detection"
|
416
|
+
end
|
417
|
+
|
418
|
+
context "when given Safari Mobile 3.0 user agent" do
|
419
|
+
def detector
|
420
|
+
BrowserDetector::Detector.new( self.user_agents[:safari_mobile3] )
|
421
|
+
end
|
422
|
+
|
423
|
+
def self.vars
|
424
|
+
{
|
425
|
+
:browser_name => 'safari_mobile',
|
426
|
+
:browser_version => '3.0',
|
427
|
+
:browser_version_major => '3',
|
428
|
+
:browser_version_minor => '0',
|
429
|
+
:browser_version_build => '0',
|
430
|
+
:browser_version_revision => '0',
|
431
|
+
:browser_id => 'safari_mobile30',
|
432
|
+
:browser_full_name => 'Safari Mobile 3.0',
|
433
|
+
:can_use_png => true,
|
434
|
+
:is_webkit => true,
|
435
|
+
:is_iphone => true
|
436
|
+
}
|
437
|
+
end
|
438
|
+
def vars; self.class.vars; end
|
439
|
+
|
440
|
+
it_should_behave_like "any browser detection"
|
441
|
+
end
|
442
|
+
|
443
|
+
context "when given Safari Mobile 4.0 user agent" do
|
444
|
+
def detector
|
445
|
+
BrowserDetector::Detector.new( self.user_agents[:safari_mobile4] )
|
446
|
+
end
|
447
|
+
|
448
|
+
def self.vars
|
449
|
+
{
|
450
|
+
:browser_name => 'safari_mobile',
|
451
|
+
:browser_version => '4.0',
|
452
|
+
:browser_version_major => '4',
|
453
|
+
:browser_version_minor => '0',
|
454
|
+
:browser_version_build => '0',
|
455
|
+
:browser_version_revision => '0',
|
456
|
+
:browser_id => 'safari_mobile40',
|
457
|
+
:browser_full_name => 'Safari Mobile 4.0',
|
458
|
+
:can_use_png => true,
|
459
|
+
:is_webkit => true,
|
460
|
+
:is_iphone => true
|
461
|
+
}
|
462
|
+
end
|
463
|
+
def vars; self.class.vars; end
|
464
|
+
|
465
|
+
it_should_behave_like "any browser detection"
|
466
|
+
end
|
467
|
+
|
468
|
+
context "having sample user agents" do
|
469
|
+
user_agents.each do |key, value|
|
470
|
+
it "should have the correct sample user agent for the '#{key}' browser" do
|
471
|
+
@klass.user_agents[key].should == value
|
472
|
+
end
|
473
|
+
end
|
474
|
+
end
|
475
|
+
end
|