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.
- data/Gemfile +3 -3
- data/README.md +3 -3
- data/brauser.gemspec +1 -1
- data/doc/Brauser.html +6 -5
- data/doc/Brauser/Browser.html +553 -541
- data/doc/Brauser/BrowserMethods.html +1 -1
- data/doc/Brauser/BrowserMethods/Attributes.html +21 -21
- data/doc/Brauser/BrowserMethods/General.html +1 -1
- data/doc/Brauser/BrowserMethods/General/ClassMethods.html +29 -29
- data/doc/Brauser/BrowserMethods/Parsing.html +15 -15
- data/doc/Brauser/BrowserMethods/PartialQuerying.html +45 -55
- data/doc/Brauser/BrowserMethods/Querying.html +21 -21
- data/doc/Brauser/BrowserMethods/Register.html +1 -1
- data/doc/Brauser/BrowserMethods/Register/ClassMethods.html +116 -425
- data/doc/Brauser/Hooks.html +1 -1
- data/doc/Brauser/Hooks/RubyOnRails.html +2 -2
- data/doc/Brauser/Query.html +45 -1267
- data/doc/Brauser/Version.html +4 -4
- data/doc/_index.html +33 -4
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +4 -4
- data/doc/index.html +4 -4
- data/doc/method_list.html +89 -65
- data/doc/top-level-namespace.html +1 -1
- data/lib/brauser.rb +1 -0
- data/lib/brauser/browser.rb +163 -234
- data/lib/brauser/definition.rb +54 -0
- data/lib/brauser/hooks.rb +1 -1
- data/lib/brauser/query.rb +68 -59
- data/lib/brauser/version.rb +3 -3
- data/spec/brauser/browser_spec.rb +222 -292
- data/spec/brauser/definition_spec.rb +39 -0
- data/spec/brauser/hooks_spec.rb +2 -3
- data/spec/brauser/query_spec.rb +29 -33
- metadata +8 -5
@@ -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
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
|
-
#
|
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 =
|
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
|
57
|
+
# This version returns a boolean and it is equal to append a call to `#result` to the method `#is`.
|
51
58
|
#
|
52
|
-
# @see #
|
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
|
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
|
-
#
|
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
|
-
#
|
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
|
-
#
|
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
|
data/lib/brauser/version.rb
CHANGED
@@ -10,13 +10,13 @@ module Brauser
|
|
10
10
|
# @see http://semver.org
|
11
11
|
module Version
|
12
12
|
# The major version.
|
13
|
-
MAJOR =
|
13
|
+
MAJOR = 3
|
14
14
|
|
15
15
|
# The minor version.
|
16
|
-
MINOR =
|
16
|
+
MINOR = 0
|
17
17
|
|
18
18
|
# The patch version.
|
19
|
-
PATCH =
|
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 ".
|
23
|
-
it "should
|
24
|
-
Brauser::Browser.
|
25
|
-
|
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.
|
54
|
+
expect(::Brauser::Browser.add_default_browsers).to be_true
|
30
55
|
|
31
|
-
Brauser::Browser.stub(:
|
32
|
-
expect(Brauser::Browser.
|
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 ".
|
37
|
-
it "should call .
|
38
|
-
Brauser::Browser.should_receive(:
|
39
|
-
Brauser::Browser.
|
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.
|
68
|
+
expect(::Brauser::Browser.add_default_platforms).to be_true
|
44
69
|
|
45
|
-
Brauser::Browser.stub(:
|
46
|
-
expect(Brauser::Browser.
|
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 ".
|
51
|
-
it "should call .
|
52
|
-
Brauser::Browser.should_receive(:
|
53
|
-
Brauser::Browser.
|
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.
|
82
|
+
expect(::Brauser::Browser.add_default_languages).to be_true
|
58
83
|
|
59
|
-
Brauser::Browser.stub(:
|
60
|
-
expect(Brauser::Browser.
|
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.
|
91
|
+
::Brauser::Browser.add_default_browsers
|
67
92
|
|
68
|
-
expect(Brauser::Browser.browsers).to be_a(Hash)
|
69
|
-
expect(Brauser::Browser.browsers[:chrome]).to
|
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.
|
101
|
+
::Brauser::Browser.add_default_platforms
|
76
102
|
|
77
|
-
expect(Brauser::Browser.platforms).to be_a(Hash)
|
78
|
-
expect(Brauser::Browser.platforms[:osx]).to
|
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.
|
111
|
+
::Brauser::Browser.add_default_languages
|
86
112
|
|
87
|
-
expect(Brauser::Browser.languages).to be_a(Hash)
|
88
|
-
expect(Brauser::Browser.languages["it"]).to
|
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 ".
|
93
|
-
|
94
|
-
Brauser::Browser.
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
expect(Brauser::Browser.
|
99
|
-
Brauser::Browser.
|
100
|
-
|
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
|
-
|
104
|
-
|
105
|
-
|
165
|
+
describe "#readable_name" do
|
166
|
+
before(:each) do
|
167
|
+
::Brauser::Browser.add_default_browsers
|
106
168
|
end
|
107
169
|
|
108
|
-
it "should
|
109
|
-
|
110
|
-
expect(
|
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
|
-
|
114
|
-
expect(
|
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
|
119
|
-
|
120
|
-
|
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 "
|
184
|
+
describe "#platform_name" do
|
130
185
|
before(:each) do
|
131
|
-
Brauser::Browser.
|
186
|
+
::Brauser::Browser.add_default_platforms
|
132
187
|
end
|
133
188
|
|
134
|
-
it "should
|
135
|
-
|
136
|
-
|
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
|
-
|
151
|
-
expect(
|
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
|
156
|
-
|
157
|
-
|
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 "
|
203
|
+
describe "#classes" do
|
167
204
|
before(:each) do
|
168
|
-
|
205
|
+
browser.name = :chrome
|
206
|
+
browser.version = "1.2.A.4"
|
207
|
+
browser.platform = :osx
|
169
208
|
end
|
170
209
|
|
171
|
-
it "should
|
172
|
-
expect(
|
173
|
-
|
174
|
-
expect(
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
expect(
|
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
|
188
|
-
expect(
|
189
|
-
expect(
|
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
|
193
|
-
|
194
|
-
|
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
|
-
|
204
|
-
|
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
|
-
#
|
372
|
-
browser.class.
|
373
|
-
browser.class.
|
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.
|
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.
|
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.
|
388
|
+
browser.name = :ipad
|
442
389
|
expect(browser.is([:tablet, :blackberry])).to be_true_query
|
443
390
|
|
444
|
-
browser.
|
445
|
-
browser.
|
391
|
+
browser.name = :msie
|
392
|
+
browser.version = "7.0"
|
446
393
|
expect(browser.is(:capable)).to be_false_query
|
447
|
-
browser.
|
394
|
+
browser.version = "9.0"
|
448
395
|
expect(browser.is(:capable)).to be_true_query
|
449
396
|
|
450
|
-
browser.should_receive(:v?).exactly(2).
|
451
|
-
browser.should_receive(:on?).
|
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.
|
454
|
-
|
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.
|
408
|
+
browser.name = :msie
|
461
409
|
|
462
|
-
browser.should_receive("is").exactly(2).
|
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
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
468
|
+
browser.platform = :windows
|
528
469
|
|
529
|
-
browser.should_receive("on").exactly(2).
|
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
|
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.
|
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
|
545
|
-
browser.
|
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.
|
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.
|
504
|
+
browser.languages = ["it"]
|
565
505
|
|
566
|
-
browser.should_receive("accepts").exactly(2).
|
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
|
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", {}, []).
|
577
|
-
browser.should_receive(:v?).with("< 3").
|
578
|
-
browser.should_receive(:on?).with("windows").
|
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.
|
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.
|
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.
|
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).
|
555
|
+
browser.should_receive(:is?).with("opera_mobile", {}, []).at_least(1).and_call_original
|
593
556
|
|
594
|
-
browser.should_receive(:v?).with("<= 3").
|
595
|
-
expect(browser.
|
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").
|
598
|
-
expect(browser.
|
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").
|
601
|
-
expect(browser.
|
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 &&").
|
604
|
-
expect(browser.
|
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.
|
570
|
+
expect(browser.is_opera_mobile_v_gt_2?).to be_true
|
608
571
|
|
609
|
-
browser.should_receive(:v?).with("== 3.4.5alpha
|
610
|
-
expect(browser.
|
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.
|
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.
|
625
|
-
expect{ browser.
|
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
|
|