brauser 2.1.4 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,54 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This file is part of the brauser gem. Copyright (C) 2013 and above Shogun <shogun_panda@me.com>.
4
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
5
+ #
6
+
7
+ module Brauser
8
+ # A class which hold a definition of a browser, a platform or a language
9
+ # This class represents a detection of the current user browser.
10
+ #
11
+ # @attribute tag
12
+ # @return [String|Symbol] An identifier for this definition.
13
+ # @attribute label
14
+ # @return [String] A human readable label for this definition.
15
+ # @attribute primary
16
+ # @return [String|Symbol|Proc] The primary matcher of this definition.
17
+ # @attribute secondary
18
+ # @return [String|Symbol|Proc] The secondary matcher of this definition.
19
+ class Definition
20
+ attr_accessor :tag, :label, :primary, :secondary
21
+
22
+ # Creates a new definition.
23
+ #
24
+ # @param tag [String|Symbol] An identifier for this definition.
25
+ # @param label [String] A human readable label for this definition.
26
+ # @param primary [String|Symbol|Proc] The primary matcher of this definition.
27
+ # @param secondary [String|Symbol|Proc] The secondary matcher of this definition.
28
+ def initialize(tag = nil, label = nil, primary = nil, secondary = nil)
29
+ self.tag = tag if tag
30
+ self.label = label if label
31
+ self.primary = primary if primary
32
+ self.secondary = secondary if secondary
33
+ end
34
+
35
+ # Performs a match of this definition.
36
+ #
37
+ # @param type [Symbol] The matcher to perform. Can be `:primary` (default) or `:secondary`.
38
+ # @param args [Array] Arguments to pass to the matcher. The first is the definition itself.
39
+ # @return [Object|NilClass] A match if matcher succeeded, `nil` otherwise.
40
+ def match(type, *args)
41
+ matcher = self.send(type || :primary) rescue nil
42
+
43
+ if matcher.is_a?(::Regexp) then
44
+ matcher.match(args[1])
45
+ elsif matcher.respond_to?(:call) then
46
+ matcher.call(*args)
47
+ elsif matcher
48
+ args[1] == matcher ? args[1] : nil
49
+ else
50
+ nil
51
+ end
52
+ end
53
+ end
54
+ end
data/lib/brauser/hooks.rb CHANGED
@@ -13,7 +13,7 @@ module Brauser
13
13
  #
14
14
  # @param base [Class] The base controller class.
15
15
  def self.included(base)
16
- base.send :helper_method, :browser
16
+ base.send(:helper_method, :browser)
17
17
  end
18
18
 
19
19
  # Detects the current browser.
data/lib/brauser/query.rb CHANGED
@@ -6,31 +6,8 @@
6
6
 
7
7
  # A framework agnostic browser detection and querying helper.
8
8
  module Brauser
9
- # A query to a browser. This class enables concatenation, like:
10
- #
11
- # ```ruby
12
- # Brauser::Browser.new.is(:msie).v(">= 7").on?(:windows)
13
- # ```
14
- #
15
- # To end concatenation, use the `?` form of the queries or call `.result`.
16
- #
17
- # @attribute target
18
- # @return [Browser] The current browser.
19
- # @attribute result
20
- # @return [Boolean] The current result.
21
- class Query
22
- attr_accessor :target
23
- attr_accessor :result
24
-
25
- # Creates a new query.
26
- #
27
- # @param target [Browser] The current browser.
28
- # @param result [Boolean] The current result.
29
- def initialize(target, result = true)
30
- @target = target
31
- @result = result
32
- end
33
-
9
+ # Methods to chain queries.
10
+ module Chainers
34
11
  # Checks if the browser is a specific name and optionally of a specific version and platform.
35
12
  #
36
13
  # @see #version?
@@ -41,19 +18,49 @@ module Brauser
41
18
  # @param platforms [Symbol|Array] A list of specific platform to match. Valid values are all those possible for the platform attribute.
42
19
  # @return [Query] The query itself.
43
20
  def is(names = [], versions = {}, platforms = [])
44
- @result = self.is?(names, versions, platforms)
21
+ @result = is?(names, versions, platforms)
22
+ self
23
+ end
24
+
25
+ # Checks if the browser is a specific version.
26
+ #
27
+ # @param versions [String|Hash] A string in the form `operator version && ...` (example: `>= 7 && < 4`) or an hash with specific version to match against, in form `{:operator => version}`, where operator is one of `:lt, :lte, :eq, :gt, :gte`.
28
+ # @return [Query] The query itself.
29
+ def v(versions = {})
30
+ @result = v?(versions)
31
+ self
32
+ end
33
+
34
+ # Check if the browser is on a specific platform.
35
+ #
36
+ # @param platforms [Symbol|Array] A list of specific platform to match.
37
+ # @return [Query] The query itself.
38
+ def on(platforms = [])
39
+ @result = on?(platforms)
45
40
  self
46
41
  end
47
42
 
43
+ # Check if the browser accepts the specified languages.
44
+ #
45
+ # @param langs [String|Array] A list of languages to match against.
46
+ # @return [Query] The query itself.
47
+ def accepts(langs = [])
48
+ @result = accepts?(langs)
49
+ self
50
+ end
51
+ end
52
+
53
+ # Methods to make queries.
54
+ module Queries
48
55
  # Checks if the browser is a specific name and optionally of a specific version and platform.
49
56
  #
50
- # This version returns a boolean and it is equal to append a call to {#result} to the method {#is}.
57
+ # This version returns a boolean and it is equal to append a call to `#result` to the method `#is`.
51
58
  #
52
- # @see #version?
59
+ # @see #v?
53
60
  # @see #on?
54
61
  #
55
62
  # @param names [Symbol|Array] A list of specific names to match. Also, this meta-names are supported: `:capable` and `:tablet`.
56
- # @param versions [Hash] An hash with specific version to match against. Need to be in any form that {#v} understands.
63
+ # @param versions [Hash] An hash with specific version to match against. Need to be in any form that `#v` understands.
57
64
  # @param platforms [Symbol|Array] A list of specific platform to match. Valid values are all those possible for the platform attribute.
58
65
  # @return [Boolean] `true` if current browser matches, `false` otherwise.
59
66
  def is?(names = [], versions = {}, platforms = [])
@@ -62,16 +69,7 @@ module Brauser
62
69
 
63
70
  # Checks if the browser is a specific version.
64
71
  #
65
- # @param versions [String|Hash] A string in the form `operator version && ...` (example: `>= 7 && < 4`) or an hash with specific version to match against, in form `{:operator => version}`, where operator is one of `:lt, :lte, :eq, :gt, :gte`.
66
- # @return [Query] The query itself.
67
- def v(versions = {})
68
- @result = self.v?(versions)
69
- self
70
- end
71
-
72
- # Checks if the browser is a specific version.
73
- #
74
- # This version returns a boolean and it is equal to append a call to {#result} to the method {#v}.
72
+ # This version returns a boolean and it is equal to append a call to `#result` to the method `#v`.
75
73
  #
76
74
  # @param versions [String|Hash] A string in the form `operator version && ...` (example: `>= 7 && < 4`) or an hash with specific version to match against, in form `{:operator => version}`, where operator is one of `:lt, :lte, :eq, :gt, :gte`.
77
75
  # @return [Boolean] `true` if current browser matches, `false` otherwise.
@@ -81,16 +79,7 @@ module Brauser
81
79
 
82
80
  # Check if the browser is on a specific platform.
83
81
  #
84
- # @param platforms [Symbol|Array] A list of specific platform to match.
85
- # @return [Query] The query itself.
86
- def on(platforms = [])
87
- @result = self.on?(platforms)
88
- self
89
- end
90
-
91
- # Check if the browser is on a specific platform.
92
- #
93
- # This version returns a boolean and it is equal to append a call to {#result} to the method {#on}.
82
+ # This version returns a boolean and it is equal to append a call to `#result` to the method `#on.
94
83
  #
95
84
  # @param platforms [Symbol|Array] A list of specific platform to match.
96
85
  # @return [Boolean] `true` if current browser matches, `false` otherwise.
@@ -100,16 +89,7 @@ module Brauser
100
89
 
101
90
  # Check if the browser accepts the specified languages.
102
91
  #
103
- # @param langs [String|Array] A list of languages to match against.
104
- # @return [Query] The query itself.
105
- def accepts(langs = [])
106
- @result = self.accepts?(langs)
107
- self
108
- end
109
-
110
- # Check if the browser accepts the specified languages.
111
- #
112
- # This version returns a boolean and it is equal to append a call to {#result} to the method {#accepts}.
92
+ # This version returns a boolean and it is equal to append a call to `#result` to the method `#accepts.
113
93
  #
114
94
  # @param langs [String|Array] A list of languages to match against.
115
95
  # @return [Boolean] `true` if current browser matches, `false` otherwise.
@@ -117,4 +97,33 @@ module Brauser
117
97
  @result ? @target.accepts?(langs) : @result
118
98
  end
119
99
  end
100
+
101
+ # A query to a browser. This class enables concatenation, like:
102
+ #
103
+ # ```ruby
104
+ # Brauser::Browser.new.is(:msie).v(">= 7").on?(:windows)
105
+ # ```
106
+ #
107
+ # To end concatenation, use the `?` form of the queries or call `.result`.
108
+ #
109
+ # @attribute target
110
+ # @return [Browser] The current browser.
111
+ # @attribute result
112
+ # @return [Boolean] The current result.
113
+ class Query
114
+ attr_accessor :target
115
+ attr_accessor :result
116
+
117
+ include Brauser::Chainers
118
+ include Brauser::Queries
119
+
120
+ # Creates a new query.
121
+ #
122
+ # @param target [Browser] The current browser.
123
+ # @param result [Boolean] The current result.
124
+ def initialize(target, result = true)
125
+ @target = target
126
+ @result = result
127
+ end
128
+ end
120
129
  end
@@ -10,13 +10,13 @@ module Brauser
10
10
  # @see http://semver.org
11
11
  module Version
12
12
  # The major version.
13
- MAJOR = 2
13
+ MAJOR = 3
14
14
 
15
15
  # The minor version.
16
- MINOR = 1
16
+ MINOR = 0
17
17
 
18
18
  # The patch version.
19
- PATCH = 4
19
+ PATCH = 0
20
20
 
21
21
  # The current version of brauser.
22
22
  STRING = [MAJOR, MINOR, PATCH].compact.join(".")
@@ -17,232 +17,218 @@ describe Brauser::Browser do
17
17
  end
18
18
  end
19
19
 
20
- let(:browser){Brauser::Browser.new}
20
+ let(:browser){::Brauser::Browser.new}
21
21
 
22
- describe ".register_default_browsers" do
23
- it "should call .register_browser many times" do
24
- Brauser::Browser.should_receive(:register_browser).at_least(1)
25
- Brauser::Browser.register_default_browsers
22
+ describe ".add" do
23
+ it "should return false and not add any value when the type is invalid" do
24
+ definitions = ::Brauser::Browser.instance_variable_get("@definitions")
25
+
26
+ expect(::Brauser::Browser.add(:none, nil)).to be_false
27
+ expect(definitions).to be_nil
28
+ end
29
+
30
+ it "add the definition to the right hash" do
31
+ ::Brauser::Browser.instance_variable_set("@definitions", nil)
32
+ definition = ::Brauser::Definition.new(:tag)
33
+
34
+ expect(::Brauser::Browser.add(:platforms, definition)).to be_true
35
+ definitions = ::Brauser::Browser.instance_variable_get("@definitions")
36
+ expect(definitions[:platforms][:tag]).to be(definition)
37
+ end
38
+
39
+ it "support adding more definitions in one call" do
40
+ ::Brauser::Browser.instance_variable_set("@definitions", nil)
41
+ expect(::Brauser::Browser.add(:platforms, [::Brauser::Definition.new(:tag1), ::Brauser::Definition.new(:tag2)])).to be_true
42
+ definitions = ::Brauser::Browser.instance_variable_get("@definitions")
43
+ expect(definitions[:platforms].length).to eq(2)
44
+ end
45
+ end
46
+
47
+ describe ".add_default_browsers" do
48
+ it "should call .add many times" do
49
+ ::Brauser::Browser.should_receive(:add).with(:browsers, an_instance_of(Array)).exactly(4).and_call_original
50
+ ::Brauser::Browser.add_default_browsers
26
51
  end
27
52
 
28
53
  it "should return a good return code" do
29
- expect(Brauser::Browser.register_default_browsers).to be_true
54
+ expect(::Brauser::Browser.add_default_browsers).to be_true
30
55
 
31
- Brauser::Browser.stub(:register_browser).and_return(true)
32
- expect(Brauser::Browser.register_default_browsers).to be_false
56
+ ::Brauser::Browser.stub(:add).and_return(false)
57
+ expect(::Brauser::Browser.add_default_browsers).to be_false
33
58
  end
34
59
  end
35
60
 
36
- describe ".register_default_platforms" do
37
- it "should call .register_platform many times" do
38
- Brauser::Browser.should_receive(:register_platform).at_least(1)
39
- Brauser::Browser.register_default_platforms
61
+ describe ".add_default_platforms" do
62
+ it "should call .add" do
63
+ ::Brauser::Browser.should_receive(:add).with(:platforms, an_instance_of(Array))
64
+ ::Brauser::Browser.add_default_platforms
40
65
  end
41
66
 
42
67
  it "should return a good return code" do
43
- expect(Brauser::Browser.register_default_platforms).to be_true
68
+ expect(::Brauser::Browser.add_default_platforms).to be_true
44
69
 
45
- Brauser::Browser.stub(:register_platform).and_return(true)
46
- expect(Brauser::Browser.register_default_platforms).to be_false
70
+ ::Brauser::Browser.stub(:add).and_return(false)
71
+ expect(::Brauser::Browser.add_default_platforms).to be_false
47
72
  end
48
73
  end
49
74
 
50
- describe ".register_default_languages" do
51
- it "should call .register_language many times" do
52
- Brauser::Browser.should_receive(:register_language).at_least(1)
53
- Brauser::Browser.register_default_languages
75
+ describe ".add_default_languages" do
76
+ it "should call .add" do
77
+ ::Brauser::Browser.should_receive(:add).with(:languages, an_instance_of(Array))
78
+ ::Brauser::Browser.add_default_languages
54
79
  end
55
80
 
56
81
  it "should return a good return code" do
57
- expect(Brauser::Browser.register_default_languages).to be_true
82
+ expect(::Brauser::Browser.add_default_languages).to be_true
58
83
 
59
- Brauser::Browser.stub(:register_language).and_return(true)
60
- expect(Brauser::Browser.register_default_languages).to be_false
84
+ ::Brauser::Browser.stub(:add).and_return(false)
85
+ expect(::Brauser::Browser.add_default_languages).to be_false
61
86
  end
62
87
  end
63
88
 
64
89
  describe ".browsers" do
65
90
  it "should return the list of browsers" do
66
- Brauser::Browser.register_default_browsers
91
+ ::Brauser::Browser.add_default_browsers
67
92
 
68
- expect(Brauser::Browser.browsers).to be_a(Hash)
69
- expect(Brauser::Browser.browsers[:chrome]).to eq([/((chrome)|(chromium))/i, /(.+Chrom[a-z]+\/)([a-z0-9.]+)/i, "Google Chrome"])
93
+ expect(::Brauser::Browser.browsers).to be_a(Hash)
94
+ expect(::Brauser::Browser.browsers[:chrome]).to be_a(::Brauser::Definition)
95
+ expect(::Brauser::Browser.browsers[:chrome].label).to eq("Google Chrome")
70
96
  end
71
97
  end
72
98
 
73
99
  describe ".platforms" do
74
100
  it "should return the list of platforms" do
75
- Brauser::Browser.register_default_platforms
101
+ ::Brauser::Browser.add_default_platforms
76
102
 
77
- expect(Brauser::Browser.platforms).to be_a(Hash)
78
- expect(Brauser::Browser.platforms[:osx]).to eq([/mac|macintosh|mac os x/i, "Apple MacOS X"])
103
+ expect(::Brauser::Browser.platforms).to be_a(Hash)
104
+ expect(::Brauser::Browser.platforms[:osx]).to be_a(::Brauser::Definition)
105
+ expect(::Brauser::Browser.platforms[:osx].label).to eq("Apple MacOS X")
79
106
  end
80
-
81
107
  end
82
108
 
83
109
  describe ".languages" do
84
110
  it "should return the list of languages" do
85
- Brauser::Browser.register_default_languages
111
+ ::Brauser::Browser.add_default_languages
86
112
 
87
- expect(Brauser::Browser.languages).to be_a(Hash)
88
- expect(Brauser::Browser.languages["it"]).to eq("Italian")
113
+ expect(::Brauser::Browser.languages).to be_a(Hash)
114
+ expect(::Brauser::Browser.languages["it"]).to be_a(::Brauser::Definition)
115
+ expect(::Brauser::Browser.languages["it"].label).to eq("Italian")
89
116
  end
90
117
  end
91
118
 
92
- describe ".register_browser" do
93
- before(:each) do
94
- Brauser::Browser.instance_variable_set("@browsers", nil)
95
- end
96
-
97
- it "should initialize data" do
98
- expect(Brauser::Browser.instance_variable_get("@browsers")).to be_nil
99
- Brauser::Browser.register_browser([])
100
- expect(Brauser::Browser.instance_variable_get("@browsers")).to be_a(Array)
119
+ describe ".compare_versions" do
120
+ it "should correctly compare versions" do
121
+ expect(::Brauser::Browser.compare_versions(nil, :eq, nil)).to be_false
122
+
123
+ expect(::Brauser::Browser.compare_versions("3", :eq, nil)).to be_false
124
+ expect(::Brauser::Browser.compare_versions("3", :eq, "7")).to be_false
125
+ expect(::Brauser::Browser.compare_versions("7.1", :eq, "7")).to be_false
126
+ expect(::Brauser::Browser.compare_versions("7.1.2", :eq, "7.1.2")).to be_true
127
+
128
+ expect(::Brauser::Browser.compare_versions("3", :lt, "3")).to be_false
129
+ expect(::Brauser::Browser.compare_versions("3", :lt, "3.4")).to be_true
130
+ expect(::Brauser::Browser.compare_versions("3.4.5", :lt, "3.4.5")).to be_false
131
+ expect(::Brauser::Browser.compare_versions("3.4.5", :lt, "3.2")).to be_false
132
+ expect(::Brauser::Browser.compare_versions("3.4.5", :lt, "3.4.6")).to be_true
133
+ expect(::Brauser::Browser.compare_versions("3.4.beta", :lt, "3.4")).to be_true
134
+ expect(::Brauser::Browser.compare_versions("3.4.alpha", :lt, "3.4beta")).to be_true
135
+
136
+ expect(::Brauser::Browser.compare_versions("3", :lte, "3")).to be_true
137
+ expect(::Brauser::Browser.compare_versions("3", :lte, "3.4")).to be_true
138
+ expect(::Brauser::Browser.compare_versions("4", :lte, "3.4")).to be_false
139
+ expect(::Brauser::Browser.compare_versions("4.1", :lte, "3.4")).to be_false
140
+ expect(::Brauser::Browser.compare_versions("3.4.5", :lte, "3.4.5")).to be_true
141
+ expect(::Brauser::Browser.compare_versions("3.4.5", :lte, "3.4.4")).to be_false
142
+ expect(::Brauser::Browser.compare_versions("3.4.5", :lt, "3.2")).to be_false
143
+ expect(::Brauser::Browser.compare_versions("3.4.beta", :lte, "3.4")).to be_true
144
+
145
+ expect(::Brauser::Browser.compare_versions("3", :gt, "3")).to be_false
146
+ expect(::Brauser::Browser.compare_versions("3", :gt, "3.4")).to be_false
147
+ expect(::Brauser::Browser.compare_versions("3.4.5", :gt, "3.4.3")).to be_true
148
+ expect(::Brauser::Browser.compare_versions("3.4.5", :gt, "3.4.5")).to be_false
149
+ expect(::Brauser::Browser.compare_versions("3.4.5", :gt, "3.4.6")).to be_false
150
+ expect(::Brauser::Browser.compare_versions("3.5", :gt, "3")).to be_true
151
+ expect(::Brauser::Browser.compare_versions("3.4.beta", :gt, "3.4")).to be_false
152
+ expect(::Brauser::Browser.compare_versions("3.4.alpha", :gt, "3.4beta")).to be_false
153
+
154
+ expect(::Brauser::Browser.compare_versions("3", :gte, "3")).to be_true
155
+ expect(::Brauser::Browser.compare_versions("3", :gte, "3.4")).to be_false
156
+ expect(::Brauser::Browser.compare_versions("4", :gte, "3.4")).to be_true
157
+ expect(::Brauser::Browser.compare_versions("4.1", :gte, "3.4")).to be_true
158
+ expect(::Brauser::Browser.compare_versions("3.4.5", :gte, "3.4.5")).to be_true
159
+ expect(::Brauser::Browser.compare_versions("3.4.5", :gte, "3.4.4")).to be_true
160
+ expect(::Brauser::Browser.compare_versions("3.4.beta", :gte, "3.4")).to be_false
161
+ expect(::Brauser::Browser.compare_versions("3.5", :gt, "3")).to be_true
101
162
  end
163
+ end
102
164
 
103
- it "should return good return values" do
104
- expect(Brauser::Browser.register_browser([])).to be_false
105
- expect(Brauser::Browser.register_browser("NAME", //i, //i, "LABEL")).to be_true
165
+ describe "#readable_name" do
166
+ before(:each) do
167
+ ::Brauser::Browser.add_default_browsers
106
168
  end
107
169
 
108
- it "should work with a single entry" do
109
- expect(Brauser::Browser.register_browser("NAME", //i, //i, "LABEL")).to be_true
110
- expect(Brauser::Browser.instance_variable_get("@browsers")).to eq([[:NAME, //i, //i, "LABEL"]])
111
- end
170
+ it "should return the correct name" do
171
+ browser.name = :msie
172
+ expect(browser.readable_name).to eq("Microsoft Internet Explorer")
112
173
 
113
- it "should work with multiple entries" do
114
- expect(Brauser::Browser.register_browser([["NAME 1", //i, //i, "LABEL 1"], ["NAME 2", //i, //i, "LABEL 2"]])).to be_true
115
- expect(Brauser::Browser.instance_variable_get("@browsers")).to eq([[:"NAME 1", //i, //i, "LABEL 1"], [:"NAME 2", //i, //i, "LABEL 2"]])
174
+ browser.name = :chrome
175
+ expect(browser.readable_name).to eq("Google Chrome")
116
176
  end
117
177
 
118
- it "should update existing entries" do
119
- Brauser::Browser.register_browser("NAME 1", //i, //i, "LABEL 1")
120
- Brauser::Browser.register_browser("NAME 2", //i, //i, "LABEL 2")
121
- Brauser::Browser.register_browser("NAME 3", //i, //i, "LABEL 3")
122
-
123
- expect(Brauser::Browser.register_browser("NAME 2", //i, //i, "LABEL 4")).to be_false
124
- expect(Brauser::Browser.instance_variable_get("@browsers").length).to eq(3)
125
- expect(Brauser::Browser.instance_variable_get("@browsers")[1].last).to eq("LABEL 4")
178
+ it "should return a default name" do
179
+ browser.name = :none
180
+ expect(browser.readable_name).to eq("Unknown Browser")
126
181
  end
127
182
  end
128
183
 
129
- describe ".register_platform" do
184
+ describe "#platform_name" do
130
185
  before(:each) do
131
- Brauser::Browser.instance_variable_set("@platforms", nil)
186
+ ::Brauser::Browser.add_default_platforms
132
187
  end
133
188
 
134
- it "should initialize data" do
135
- expect(Brauser::Browser.instance_variable_get("@platforms")).to be_nil
136
- Brauser::Browser.register_platform([])
137
- expect(Brauser::Browser.instance_variable_get("@platforms")).to be_a(Array)
138
- end
139
-
140
- it "should return good return values" do
141
- expect(Brauser::Browser.register_platform([])).to be_false
142
- expect(Brauser::Browser.register_platform("NAME", //i, "LABEL")).to be_true
143
- end
144
-
145
- it "should work with a single entry" do
146
- expect(Brauser::Browser.register_platform("NAME", //i, "LABEL")).to be_true
147
- expect(Brauser::Browser.instance_variable_get("@platforms")).to eq([[:"NAME", //i, "LABEL"]])
148
- end
189
+ it "should return the correct name" do
190
+ browser.platform = :windows
191
+ expect(browser.platform_name).to eq("Microsoft Windows")
149
192
 
150
- it "should work with multiple entries" do
151
- expect(Brauser::Browser.register_platform([["NAME 1", //i, "LABEL 1"], ["NAME 2", //i, "LABEL 2"]])).to be_true
152
- expect(Brauser::Browser.instance_variable_get("@platforms")).to eq([[:"NAME 1", //i, "LABEL 1"], [:"NAME 2", //i, "LABEL 2"]])
193
+ browser.platform = :ios
194
+ expect(browser.platform_name).to eq("Apple iOS")
153
195
  end
154
196
 
155
- it "should update existing entries" do
156
- Brauser::Browser.register_platform("NAME 1", //i, "LABEL 1")
157
- Brauser::Browser.register_platform("NAME 2", //i, "LABEL 2")
158
- Brauser::Browser.register_platform("NAME 3", //i, "LABEL 3")
159
-
160
- expect(Brauser::Browser.register_platform("NAME 2", //i, "LABEL 4")).to be_false
161
- expect(Brauser::Browser.instance_variable_get("@platforms").length).to eq(3)
162
- expect(Brauser::Browser.instance_variable_get("@platforms")[1].last).to eq("LABEL 4")
197
+ it "should return a default name" do
198
+ browser.platform = :none
199
+ expect(browser.platform_name).to eq("Unknown Platform")
163
200
  end
164
201
  end
165
202
 
166
- describe ".register_language" do
203
+ describe "#classes" do
167
204
  before(:each) do
168
- Brauser::Browser.instance_variable_set("@languages", nil)
205
+ browser.name = :chrome
206
+ browser.version = "1.2.A.4"
207
+ browser.platform = :osx
169
208
  end
170
209
 
171
- it "should initialize data" do
172
- expect(Brauser::Browser.instance_variable_get("@languages")).to be_nil
173
- Brauser::Browser.register_language([])
174
- expect(Brauser::Browser.instance_variable_get("@languages")).to be_a(Hash)
175
- end
176
-
177
- it "should return good return values" do
178
- expect(Brauser::Browser.register_language([])).to be_false
179
- expect(Brauser::Browser.register_language("cc", "LABEL")).to be_true
180
- end
181
-
182
- it "should work with a single entry" do
183
- expect(Brauser::Browser.register_language("cc", "LABEL")).to be_true
184
- expect(Brauser::Browser.instance_variable_get("@languages")).to eq({"cc" => "LABEL"})
210
+ it "should return requested classes" do
211
+ expect(browser.classes(false)).to eq(["chrome", "version-1", "version-1_2", "version-1_2_A", "version-1_2_A_4", "platform-osx"])
212
+ expect(browser.classes(false, "name-")).to eq(["name-chrome", "version-1", "version-1_2", "version-1_2_A", "version-1_2_A_4", "platform-osx"])
213
+ expect(browser.classes(false, true, "v-")).to eq(["chrome", "v-1", "v-1_2", "v-1_2_A", "v-1_2_A_4", "platform-osx"])
214
+ expect(browser.classes(false, true, true, "p-")).to eq(["chrome", "version-1", "version-1_2", "version-1_2_A", "version-1_2_A_4", "p-osx"])
215
+ expect(browser.classes(false, false)).to eq(["version-1", "version-1_2", "version-1_2_A", "version-1_2_A_4", "platform-osx"])
216
+ expect(browser.classes(false, true, false)).to eq(["chrome", "platform-osx"])
217
+ expect(browser.classes(false, true, true, false)).to eq(["chrome", "version-1", "version-1_2", "version-1_2_A", "version-1_2_A_4"])
185
218
  end
186
219
 
187
- it "should work with multiple entries" do
188
- expect(Brauser::Browser.register_language({"c1" => "LABEL 1", "c2" => "LABEL 2"})).to be_true
189
- expect(Brauser::Browser.instance_variable_get("@languages")).to eq({"c1" => "LABEL 1", "c2" => "LABEL 2"})
220
+ it "should return as a string" do
221
+ expect(browser.classes).to eq("chrome version-1 version-1_2 version-1_2_A version-1_2_A_4 platform-osx")
222
+ expect(browser.classes("@")).to eq("chrome@version-1@version-1_2@version-1_2_A@version-1_2_A_4@platform-osx")
190
223
  end
191
224
 
192
- it "should update existing entries" do
193
- Brauser::Browser.register_language("c1", "LABEL 1")
194
- Brauser::Browser.register_language("c2", "LABEL 2")
195
- Brauser::Browser.register_language("c3", "LABEL 3")
196
-
197
- expect(Brauser::Browser.register_language("c2", "LABEL 4")).to be_true
198
- expect(Brauser::Browser.instance_variable_get("@languages").length).to eq(3)
199
- expect(Brauser::Browser.instance_variable_get("@languages")["c2"]).to eq("LABEL 4")
225
+ it "should handle msie compatibility" do
226
+ browser.name = :msie_compatibility
227
+ expect(browser.classes(false, true, false, false)).to eq(["msie_compatibility", "msie"])
200
228
  end
201
- end
202
229
 
203
- describe ".compare_versions" do
204
- it "should correctly compare versions" do
205
- expect(Brauser::Browser.compare_versions(nil, :eq, nil)).to be_false
206
-
207
- expect(Brauser::Browser.compare_versions("3", :eq, nil)).to be_false
208
- expect(Brauser::Browser.compare_versions("3", :eq, "7")).to be_false
209
- expect(Brauser::Browser.compare_versions("7.1", :eq, "7")).to be_false
210
- expect(Brauser::Browser.compare_versions("7.1.2", :eq, "7.1.2")).to be_true
211
-
212
- expect(Brauser::Browser.compare_versions("3", :lt, "3")).to be_false
213
- expect(Brauser::Browser.compare_versions("3", :lt, "3.4")).to be_true
214
- expect(Brauser::Browser.compare_versions("3.4.5", :lt, "3.4.5")).to be_false
215
- expect(Brauser::Browser.compare_versions("3.4.5", :lt, "3.2")).to be_false
216
- expect(Brauser::Browser.compare_versions("3.4.5", :lt, "3.4.6")).to be_true
217
- expect(Brauser::Browser.compare_versions("3.4.beta", :lt, "3.4")).to be_true
218
- expect(Brauser::Browser.compare_versions("3.4.alpha", :lt, "3.4beta")).to be_true
219
-
220
- expect(Brauser::Browser.compare_versions("3", :lte, "3")).to be_true
221
- expect(Brauser::Browser.compare_versions("3", :lte, "3.4")).to be_true
222
- expect(Brauser::Browser.compare_versions("4", :lte, "3.4")).to be_false
223
- expect(Brauser::Browser.compare_versions("4.1", :lte, "3.4")).to be_false
224
- expect(Brauser::Browser.compare_versions("3.4.5", :lte, "3.4.5")).to be_true
225
- expect(Brauser::Browser.compare_versions("3.4.5", :lte, "3.4.4")).to be_false
226
- expect(Brauser::Browser.compare_versions("3.4.5", :lt, "3.2")).to be_false
227
- expect(Brauser::Browser.compare_versions("3.4.beta", :lte, "3.4")).to be_true
228
-
229
- expect(Brauser::Browser.compare_versions("3", :gt, "3")).to be_false
230
- expect(Brauser::Browser.compare_versions("3", :gt, "3.4")).to be_false
231
- expect(Brauser::Browser.compare_versions("3.4.5", :gt, "3.4.3")).to be_true
232
- expect(Brauser::Browser.compare_versions("3.4.5", :gt, "3.4.5")).to be_false
233
- expect(Brauser::Browser.compare_versions("3.4.5", :gt, "3.4.6")).to be_false
234
- expect(Brauser::Browser.compare_versions("3.5", :gt, "3")).to be_true
235
- expect(Brauser::Browser.compare_versions("3.4.beta", :gt, "3.4")).to be_false
236
- expect(Brauser::Browser.compare_versions("3.4.alpha", :gt, "3.4beta")).to be_false
237
-
238
- expect(Brauser::Browser.compare_versions("3", :gte, "3")).to be_true
239
- expect(Brauser::Browser.compare_versions("3", :gte, "3.4")).to be_false
240
- expect(Brauser::Browser.compare_versions("4", :gte, "3.4")).to be_true
241
- expect(Brauser::Browser.compare_versions("4.1", :gte, "3.4")).to be_true
242
- expect(Brauser::Browser.compare_versions("3.4.5", :gte, "3.4.5")).to be_true
243
- expect(Brauser::Browser.compare_versions("3.4.5", :gte, "3.4.4")).to be_true
244
- expect(Brauser::Browser.compare_versions("3.4.beta", :gte, "3.4")).to be_false
245
- expect(Brauser::Browser.compare_versions("3.5", :gt, "3")).to be_true
230
+ it "should transform name" do
231
+ expect(browser.classes(" ", true, false, false) { |name, *| name.to_s.upcase }).to eq("CHROME")
246
232
  end
247
233
  end
248
234
 
@@ -368,9 +354,9 @@ describe Brauser::Browser do
368
354
  expect(recognize("Apple iPhone v1.1.1 CoreMedia v1.0.0.3A110a")).to eq([:coremedia, "1.0.0.3A110a", :ios])
369
355
  expect(recognize("Apple Mac OS X v10.6.6 CoreMedia v1.0.0.10J567")).to eq([:coremedia, "1.0.0.10J567", :osx])
370
356
 
371
- # GENERICS
372
- browser.class.register_browser(:generic, "NAME", "NAME", "NONE")
373
- browser.class.register_platform(:generic, "NAME", "NONE")
357
+ # Generic
358
+ browser.class.add(:browsers, ::Brauser::Definition.new(:generic, "NAME", "NAME", "NAME"))
359
+ browser.class.add(:platforms, ::Brauser::Definition.new(:generic, "NAME", "NAME"))
374
360
  expect(recognize("NAME")).to eq([:generic, "NAME", :generic])
375
361
  end
376
362
  end
@@ -386,99 +372,59 @@ describe Brauser::Browser do
386
372
  end
387
373
  end
388
374
 
389
- describe "#readable_name" do
390
- before(:each) do
391
- Brauser::Browser.register_default_browsers
392
- end
393
-
394
- it "should return the correct name" do
395
- browser.instance_variable_set("@name", :msie)
396
- expect(browser.readable_name).to eq("Microsoft Internet Explorer")
397
-
398
- browser.instance_variable_set("@name", :chrome)
399
- expect(browser.readable_name).to eq("Google Chrome")
400
- end
401
-
402
- it "should return a default name" do
403
- browser.instance_variable_set("@name", :none)
404
- expect(browser.readable_name).to eq("Unknown Browser")
405
- end
406
- end
407
-
408
- describe "#platform_name" do
409
- before(:each) do
410
- Brauser::Browser.register_default_platforms
411
- end
412
-
413
- it "should return the correct name" do
414
- browser.instance_variable_set("@platform", :windows)
415
- expect(browser.platform_name).to eq("Microsoft Windows")
416
-
417
- browser.instance_variable_set("@platform", :ios)
418
- expect(browser.platform_name).to eq("Apple iOS")
419
- end
420
-
421
- it "should return a default name" do
422
- browser.instance_variable_set("@platform", :none)
423
- expect(browser.platform_name).to eq("Unknown Platform")
424
- end
425
- end
426
-
427
375
  describe "#is" do
428
376
  it "should at first call #parse_agent" do
429
- browser.instance_variable_set("@name", nil)
377
+ browser.name = nil
430
378
  browser.should_receive(:parse_agent)
431
379
  browser.is
432
380
  end
433
381
 
434
382
  it "should recognized names" do
435
- browser.instance_variable_set("@name", :chrome)
383
+ browser.name = :chrome
436
384
  expect(browser.is).to be_true_query
437
- expect(browser.is(nil)).to be_true_query
438
385
  expect(browser.is(:chrome)).to be_true_query
439
386
  expect(browser.is(:capable)).to be_true_query
440
387
 
441
- browser.instance_variable_set("@name", :ipad)
388
+ browser.name = :ipad
442
389
  expect(browser.is([:tablet, :blackberry])).to be_true_query
443
390
 
444
- browser.instance_variable_set("@name", :msie)
445
- browser.instance_variable_set("@version", "7.0")
391
+ browser.name = :msie
392
+ browser.version = "7.0"
446
393
  expect(browser.is(:capable)).to be_false_query
447
- browser.instance_variable_set("@version", "9.0")
394
+ browser.version = "9.0"
448
395
  expect(browser.is(:capable)).to be_true_query
449
396
 
450
- browser.should_receive(:v?).exactly(2).and_return(true)
451
- browser.should_receive(:on?).and_return(false)
397
+ browser.should_receive(:v?).exactly(2).and_call_original
398
+ browser.should_receive(:on?).and_call_original
452
399
  expect(browser.is(:capable, {:gte => 8})).to be_true_query
453
- browser.instance_variable_set("@platform", :windows)
454
- expect(browser.is(:capable, {:gt => 10}, [:windows])).to be_false_query
400
+ browser.platform = :windows
401
+
402
+ expect(browser.is(:capable, {:gt => 7}, [:windows])).to be_true_query
455
403
  end
456
404
  end
457
405
 
458
406
  describe "#is?" do
459
407
  it "should call the query and then fetch the result" do
460
- browser.instance_variable_set("@name", :msie)
408
+ browser.name = :msie
461
409
 
462
- browser.should_receive("is").exactly(2).and_return(Brauser::Query.new(browser, true))
463
- ::Brauser::Query.any_instance.should_receive(:result).exactly(2).and_return(true)
410
+ browser.should_receive("is").exactly(2).and_call_original
464
411
 
465
- expect(browser.is?(:chrome)).to be_true
412
+ expect(browser.is?(:chrome)).to be_false
466
413
  expect(browser.is?(:msie)).to be_true
467
414
  end
468
415
  end
469
416
 
470
417
  describe "#v" do
471
418
  it "should at first call #parse_agent" do
472
- browser.instance_variable_set("@version", nil)
419
+ browser.version = nil
473
420
  browser.should_receive(:parse_agent)
474
421
  browser.v
475
422
  end
476
423
 
477
424
  it "should compare browser versions" do
478
- browser.instance_variable_set("@version", "3.4.5")
425
+ browser.version = "3.4.5"
479
426
 
480
427
  expect(browser.v).to be_true_query
481
- expect(browser.v(nil)).to be_true_query
482
428
  expect(browser.v(:lt => 7)).to be_true_query
483
429
  expect(browser.v(:lte => 3)).to be_false_query
484
430
  expect(browser.v(:eq => 3)).to be_false_query
@@ -496,26 +442,21 @@ describe Brauser::Browser do
496
442
 
497
443
  describe "#v?" do
498
444
  it "should call the query and then fetch the result" do
499
- browser.instance_variable_set("@version", "7.0")
500
-
501
- browser.should_receive("v").exactly(2).and_return(Brauser::Query.new(browser, true))
502
- ::Brauser::Query.any_instance.should_receive(:result).exactly(2).and_return(true)
503
-
504
- expect(browser.v?(">= 8")).to be_true
445
+ browser.version = "7.0"
446
+ expect(browser.v?(">= 8")).to be_false
505
447
  expect(browser.v?(">= 7")).to be_true
506
448
  end
507
-
508
449
  end
509
450
 
510
451
  describe "#on" do
511
452
  it "should at first call #parse_agent" do
512
- browser.instance_variable_set("@platform", nil)
453
+ browser.platform = nil
513
454
  browser.should_receive(:parse_agent)
514
455
  browser.on
515
456
  end
516
457
 
517
458
  it "should detect platforms" do
518
- browser.instance_variable_set("@platform", :windows)
459
+ browser.platform = :windows
519
460
  expect(browser.on).to be_true_query
520
461
  expect(browser.on(:windows)).to be_true_query
521
462
  expect(browser.on([:osx, :linux])).to be_false_query
@@ -524,30 +465,29 @@ describe Brauser::Browser do
524
465
 
525
466
  describe "#on?" do
526
467
  it "should call the query and then fetch the result" do
527
- browser.instance_variable_set("@platform", :windows)
468
+ browser.platform = :windows
528
469
 
529
- browser.should_receive("on").exactly(2).and_return(Brauser::Query.new(browser, true))
530
- ::Brauser::Query.any_instance.should_receive(:result).exactly(2).and_return(true)
470
+ browser.should_receive("on").exactly(2).and_call_original
531
471
 
532
- expect(browser.on?(:osx)).to be_true
472
+ expect(browser.on?(:osx)).to be_false
533
473
  expect(browser.on?(:windows)).to be_true
534
474
  end
535
475
  end
536
476
 
537
477
  describe "#accepts" do
538
478
  it "should at first call #parse_accept_language" do
539
- browser.instance_variable_set("@languages", nil)
479
+ browser.languages = nil
540
480
  browser.should_receive(:parse_accept_language)
541
481
  browser.accepts
542
482
  end
543
483
 
544
- it "should detect platforms" do
545
- browser.instance_variable_set("@languages", [])
484
+ it "should detect languages" do
485
+ browser.languages = []
546
486
  expect(browser.accepts).to be_false_query
547
487
  expect(browser.accepts("it")).to be_false_query
548
488
  expect(browser.accepts(["it", "en"])).to be_false_query
549
489
 
550
- browser.instance_variable_set("@languages", ["it", "en"])
490
+ browser.languages = ["it", "en"]
551
491
  expect(browser.accepts(nil)).to be_false_query
552
492
  expect(browser.accepts([])).to be_false_query
553
493
  expect(browser.accepts("it")).to be_true_query
@@ -561,53 +501,76 @@ describe Brauser::Browser do
561
501
 
562
502
  describe "#accepts?" do
563
503
  it "should call the query and then fetch the result" do
564
- browser.instance_variable_set("@language", ["it"])
504
+ browser.languages = ["it"]
565
505
 
566
- browser.should_receive("accepts").exactly(2).and_return(Brauser::Query.new(browser, true))
567
- ::Brauser::Query.any_instance.should_receive(:result).exactly(2).and_return(true)
506
+ browser.should_receive("accepts").exactly(2).and_call_original
568
507
 
569
508
  expect(browser.accepts?("it")).to be_true
570
- expect(browser.accepts?("en")).to be_true
509
+ expect(browser.accepts?("en")).to be_false
510
+ end
511
+ end
512
+
513
+ describe "#initalize" do
514
+ it "initialized definitions" do
515
+ ::Brauser::Browser.should_receive(:add_default_browsers)
516
+ ::Brauser::Browser.should_receive(:add_default_platforms)
517
+ ::Brauser::Browser.should_receive(:add_default_languages)
518
+ ::Brauser::Browser.new
519
+ end
520
+
521
+ it "should initialize attributes and parse them" do
522
+ ::Brauser::Browser.any_instance.should_receive(:parse_agent).with("A")
523
+ ::Brauser::Browser.any_instance.should_receive(:parse_accept_language).with("B")
524
+
525
+ other = ::Brauser::Browser.new("A", "B")
526
+ expect(other.agent).to eq("A")
527
+ expect(other.accept_language).to eq("B")
571
528
  end
572
529
  end
573
530
 
574
531
  describe "accepts dynamic finders by" do
532
+ before(:each) do
533
+ browser.name = :opera_mobile
534
+ browser.version = "2.0.0"
535
+ browser.platform = :windows
536
+ end
537
+
575
538
  it "calling the right method" do
576
- browser.should_receive(:is?).with("opera_mobile", {}, []).and_return(true)
577
- browser.should_receive(:v?).with("< 3").and_return(true)
578
- browser.should_receive(:on?).with("windows").and_return(true)
539
+ browser.should_receive(:is?).with("opera_mobile", {}, []).and_call_original
540
+ browser.should_receive(:v?).with("< 3").and_call_original
541
+ browser.should_receive(:on?).with("windows").and_call_original
579
542
 
580
- expect(browser.is_opera_mobile__v_lt_3__on_windows?).to be_true
543
+ expect(browser.is_opera_mobile_v_lt_3_on_windows?).to be_true
581
544
  end
582
545
 
583
546
  it "returning as query" do
584
- expect(browser.is_opera_mobile__v_lt_3__on_windows).to be_a(Brauser::Query)
547
+ expect(browser.is_opera_mobile_v_lt_3_on_windows).to be_a(::Brauser::Query)
585
548
  end
586
549
 
587
550
  it "returning as boolean" do
588
- expect(browser.is_opera_mobile__v_lt_3__on_windows?).to be_false
551
+ expect(browser.is_opera_mobile_v_gt_3_on_windows?).to be_false
589
552
  end
590
553
 
591
554
  it "correctly analyzing version" do
592
- browser.should_receive(:is?).with("opera_mobile", {}, []).at_least(1).and_return(true)
555
+ browser.should_receive(:is?).with("opera_mobile", {}, []).at_least(1).and_call_original
593
556
 
594
- browser.should_receive(:v?).with("<= 3").and_return(true)
595
- expect(browser.is_opera_mobile__v_lte_3).to be_true
557
+ browser.should_receive(:v?).with("<= 3").and_call_original
558
+ expect(browser.is_opera_mobile_v_lte_3).to be_true
596
559
 
597
- browser.should_receive(:v?).with("< 3 && >= 3").and_return(false)
598
- expect(browser.is_opera_mobile__v_lt_3_and_gte_3?).to be_false
560
+ browser.should_receive(:v?).with("< 3 && >= 3").and_call_original
561
+ expect(browser.is_opera_mobile_v_lt_3_and_gte_3?).to be_false
599
562
 
600
- browser.should_receive(:v?).with("&& >= 3").and_return(false)
601
- expect(browser.is_opera_mobile__v_and_gte_3?).to be_false
563
+ browser.should_receive(:v?).with("&& >= 3").and_call_original
564
+ expect(browser.is_opera_mobile_v_and_gte_3?).to be_false
602
565
 
603
- browser.should_receive(:v?).with("< 3 &&").and_return(false)
604
- expect(browser.is_opera_mobile__v_lt_3_and?).to be_false
566
+ browser.should_receive(:v?).with("< 3 &&").and_call_original
567
+ expect(browser.is_opera_mobile_v_lt_3_and?).to be_true
605
568
 
606
569
  browser.should_receive(:v?).with("> 2").and_return(true)
607
- expect(browser.is_opera_mobile__v_gt_2?).to be_true
570
+ expect(browser.is_opera_mobile_v_gt_2?).to be_true
608
571
 
609
- browser.should_receive(:v?).with("== 3.4.5alpha.is.3").and_return(false)
610
- expect(browser.is_opera_mobile__v_eq_3_4_5alpha_is_3?).to be_false
572
+ browser.should_receive(:v?).with("== 3.4.5alpha").and_return(false)
573
+ expect(browser.is_opera_mobile_v_eq_3_4_5alpha_is_3?).to be_false
611
574
  end
612
575
 
613
576
  it "immediately invalidate a query if one of the methods is invalid" do
@@ -615,46 +578,13 @@ describe Brauser::Browser do
615
578
  browser.should_not_receive(:v)
616
579
  browser.should_not_receive(:on)
617
580
 
618
- expect{ browser.is_opera_mobile__vv_lt_3__on_windows? }.to raise_error(NoMethodError)
581
+ expect{ browser.is_opera_mobile_vv_lt_3_on_windows? }.to raise_error(NoMethodError)
619
582
  end
620
583
 
621
584
  it "raising an exception for invalid finder" do
622
- expect{ browser._is__a? }.to raise_error(NoMethodError)
623
585
  expect{ browser.aa? }.to raise_error(NoMethodError)
624
- expect{ browser.isa_opera_mobile__vv_lt_3__on_windows? }.to raise_error(NoMethodError)
625
- expect{ browser.is_opera_mobile__vv_lt_3__on_windows? }.to raise_error(NoMethodError)
626
- end
627
- end
628
-
629
- describe "#classes" do
630
- before(:each) do
631
- browser.instance_variable_set("@name", :chrome)
632
- browser.instance_variable_set("@version", "1.2.A.4")
633
- browser.instance_variable_set("@platform", :osx)
634
- end
635
-
636
- it "should return requested classes" do
637
- expect(browser.classes(false)).to eq(["chrome", "version-1", "version-1_2", "version-1_2_A", "version-1_2_A_4", "platform-osx"])
638
- expect(browser.classes(false, "name-")).to eq(["name-chrome", "version-1", "version-1_2", "version-1_2_A", "version-1_2_A_4", "platform-osx"])
639
- expect(browser.classes(false, true, "v-")).to eq(["chrome", "v-1", "v-1_2", "v-1_2_A", "v-1_2_A_4", "platform-osx"])
640
- expect(browser.classes(false, true, true, "p-")).to eq(["chrome", "version-1", "version-1_2", "version-1_2_A", "version-1_2_A_4", "p-osx"])
641
- expect(browser.classes(false, false)).to eq(["version-1", "version-1_2", "version-1_2_A", "version-1_2_A_4", "platform-osx"])
642
- expect(browser.classes(false, true, false)).to eq(["chrome", "platform-osx"])
643
- expect(browser.classes(false, true, true, false)).to eq(["chrome", "version-1", "version-1_2", "version-1_2_A", "version-1_2_A_4"])
644
- end
645
-
646
- it "should return as a string" do
647
- expect(browser.classes).to eq("chrome version-1 version-1_2 version-1_2_A version-1_2_A_4 platform-osx")
648
- expect(browser.classes("@")).to eq("chrome@version-1@version-1_2@version-1_2_A@version-1_2_A_4@platform-osx")
649
- end
650
-
651
- it "should handle msie compatibility" do
652
- browser.instance_variable_set("@name", :msie_compatibility)
653
- expect(browser.classes(false, true, false, false)).to eq(["msie_compatibility", "msie"])
654
- end
655
-
656
- it "should transform name" do
657
- expect(browser.classes(" ", true, false, false) { |name, *| name.to_s.upcase }).to eq("CHROME")
586
+ expect{ browser.isa_opera_mobile_vv_lt_3_on_windows? }.to raise_error(NoMethodError)
587
+ expect{ browser.is_opera_mobile_v_lt_3_ona_windows? }.to raise_error(NoMethodError)
658
588
  end
659
589
  end
660
590