page_magic 1.2.8 → 1.2.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 54342b32a9fb2d649e4cada494b95c5be2fafd72
4
- data.tar.gz: d2bd77b31ef141f7905859acc4713eb16957fe17
3
+ metadata.gz: cdfe7b7eb4aa09e8eab7a961a1b03156f4650af8
4
+ data.tar.gz: faaf84a4ff0c42dffa54b405bfbcb31812a3be6e
5
5
  SHA512:
6
- metadata.gz: f0a0a3d5e51de8e34df2518ad3bebf2c1b87fdaca9f4e2ab1d35a1317f83ae7e8d096bc014481b276d326019201ff9537b3ef38a884b27d938cd5c63241237c3
7
- data.tar.gz: 90a9469dde8f3f435a7bea31e9dbddb7a98cfd46b5cd62f43f62ed9b28c5334fb13542219abb5e4313fa12d7acf95add7ee050d1cbfc07230f164e2d12457081
6
+ metadata.gz: 352cdaa5d434b979ec5061193e9864f7fcb1b2d3418a4de064be94fef99ce71288da4421c4cfaceb1079fc0349e4b7c1ab4852c91c0f626bc9c7922f20f80b55
7
+ data.tar.gz: 1b22dfc283761f9ded938a899d115b7ffb3b07c96e58736879f33161621b6ccfb1510d0f1886bec75e30a95d1d5c4656613fc9671c9cc79a23e2d0d5f21cca69
@@ -4,6 +4,8 @@ Metrics/LineLength:
4
4
  AllCops:
5
5
  TargetRubyVersion: 2.1
6
6
  Exclude:
7
+ - 'lib/active_support/**/*'
8
+ - 'spec/lib/active_support/**/*'
7
9
  - 'pkg/**/*'
8
10
  - 'vendor/**/*'
9
11
  - 'coverage/**/*'
@@ -17,4 +19,18 @@ Metrics/MethodLength:
17
19
  Max: 11
18
20
 
19
21
  Style/MethodMissing:
20
- Enabled: false
22
+ Enabled: false
23
+
24
+ Metrics/BlockLength:
25
+ Enabled: true
26
+ Exclude:
27
+ - 'spec/**/*'
28
+
29
+ Style/PercentLiteralDelimiters:
30
+ PreferredDelimiters:
31
+ default: ()
32
+ '%i': '[]'
33
+ '%I': '[]'
34
+ '%r': '{}'
35
+ '%w': '[]'
36
+ '%W': '[]'
data/.simplecov CHANGED
@@ -1,8 +1,8 @@
1
1
  require 'pullreview/coverage'
2
- require "codeclimate-test-reporter"
3
2
 
4
- SimpleCov.formatters = [SimpleCov::Formatter::HTMLFormatter,PullReview::Coverage::Formatter,CodeClimate::TestReporter::Formatter]
3
+ SimpleCov.formatters = [SimpleCov::Formatter::HTMLFormatter,PullReview::Coverage::Formatter]
5
4
 
6
5
  SimpleCov.start do
7
6
  add_filter '/spec/'
7
+ add_filter '/lib/active_support/core_ext/object/to_query.rb'
8
8
  end
data/Gemfile CHANGED
@@ -1,24 +1,24 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ gem 'activesupport-inflector'
3
4
  gem 'capybara', '>= 2.5'
4
- gem 'activesupport', '~> 4'
5
5
 
6
6
  group :test do
7
- gem 'watir-webdriver'
8
- gem 'sinatra'
9
- gem 'rspec', require: 'rspec/core/rake_task'
10
- gem 'simplecov', require: false
11
- gem 'poltergeist'
7
+ gem 'arbre'
12
8
  gem 'codeclimate-test-reporter', group: :test, require: nil
9
+ gem 'poltergeist'
13
10
  gem 'pullreview-coverage', require: false
14
11
  gem 'reek'
15
- gem 'arbre'
12
+ gem 'rspec', require: 'rspec/core/rake_task'
13
+ gem 'simplecov', require: false
14
+ gem 'sinatra'
15
+ gem 'watir-webdriver'
16
16
  end
17
17
 
18
18
  group :development do
19
+ gem 'github-markup', '~> 1.4'
19
20
  gem 'jeweler', '~> 2.0'
21
+ gem 'redcarpet', '~> 3.3'
20
22
  gem 'rubocop', '~> 0.34', require: 'rubocop/rake_task'
21
23
  gem 'yard', '~> 0.8'
22
- gem 'redcarpet', '~> 3.3'
23
- gem 'github-markup', '~> 1.4'
24
24
  end
@@ -1,14 +1,13 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- activesupport (4.2.7)
4
+ activesupport (4.2.10)
5
5
  i18n (~> 0.7)
6
- json (~> 1.7, >= 1.7.7)
7
6
  minitest (~> 5.1)
8
7
  thread_safe (~> 0.3, >= 0.3.4)
9
8
  tzinfo (~> 1.1)
10
- addressable (2.5.2)
11
- public_suffix (>= 2.0.2, < 4.0)
9
+ activesupport-inflector (0.1.0)
10
+ addressable (2.4.0)
12
11
  arbre (1.1.1)
13
12
  activesupport (>= 3.0.0)
14
13
  ast (2.3.0)
@@ -17,159 +16,157 @@ GEM
17
16
  ice_nine (~> 0.11.0)
18
17
  thread_safe (~> 0.3, >= 0.3.1)
19
18
  builder (3.2.3)
20
- capybara (2.7.1)
19
+ capybara (2.15.2)
21
20
  addressable
22
- mime-types (>= 1.16)
21
+ mini_mime (>= 0.1.3)
23
22
  nokogiri (>= 1.3.3)
24
23
  rack (>= 1.0.0)
25
24
  rack-test (>= 0.5.4)
26
25
  xpath (~> 2.0)
27
- certifi (2016.08.02)
28
- childprocess (0.5.9)
26
+ certifi (2017.07.27)
27
+ childprocess (0.8.0)
29
28
  ffi (~> 1.0, >= 1.0.11)
30
29
  cliver (0.3.2)
31
- codeclimate-engine-rb (0.3.1)
30
+ codeclimate-engine-rb (0.4.0)
32
31
  virtus (~> 1.0)
33
- codeclimate-test-reporter (0.6.0)
34
- simplecov (>= 0.7.1, < 1.0.0)
32
+ codeclimate-test-reporter (1.0.8)
33
+ simplecov (<= 0.13)
35
34
  coercible (1.0.0)
36
35
  descendants_tracker (~> 0.0.1)
37
36
  descendants_tracker (0.0.4)
38
37
  thread_safe (~> 0.3, >= 0.3.1)
39
- diff-lcs (1.2.5)
38
+ diff-lcs (1.3)
40
39
  docile (1.1.5)
41
40
  equalizer (0.0.11)
42
41
  faraday (0.9.2)
43
42
  multipart-post (>= 1.2, < 3)
44
- ffi (1.9.14)
43
+ ffi (1.9.18)
45
44
  git (1.3.0)
46
- github-markup (1.4.0)
47
- github_api (0.11.3)
48
- addressable (~> 2.3)
49
- descendants_tracker (~> 0.0.1)
45
+ github-markup (1.6.1)
46
+ github_api (0.16.0)
47
+ addressable (~> 2.4.0)
48
+ descendants_tracker (~> 0.0.4)
50
49
  faraday (~> 0.8, < 0.10)
51
- hashie (>= 1.2)
52
- multi_json (>= 1.7.5, < 2.0)
53
- nokogiri (~> 1.6.0)
54
- oauth2
50
+ hashie (>= 3.4)
51
+ mime-types (>= 1.16, < 3.0)
52
+ oauth2 (~> 1.0)
55
53
  hashie (3.5.6)
56
54
  highline (1.7.8)
57
- i18n (0.7.0)
55
+ i18n (0.8.6)
58
56
  ice_nine (0.11.2)
59
- jeweler (2.3.5)
57
+ jeweler (2.3.7)
60
58
  builder
61
- bundler (>= 1.0)
59
+ bundler (>= 1)
62
60
  git (>= 1.2.5)
63
- github_api (~> 0.11.0)
61
+ github_api (~> 0.16.0)
64
62
  highline (>= 1.6.15)
65
63
  nokogiri (>= 1.5.10)
66
64
  psych (~> 2.2)
67
65
  rake
68
66
  rdoc
69
67
  semver2
70
- json (1.8.6)
68
+ json (2.1.0)
71
69
  jwt (1.5.6)
72
- mime-types (3.1)
73
- mime-types-data (~> 3.2015)
74
- mime-types-data (3.2016.0521)
75
- mini_portile2 (2.1.0)
76
- minitest (5.9.0)
70
+ mime-types (2.99.3)
71
+ mini_mime (0.1.4)
72
+ mini_portile2 (2.3.0)
73
+ minitest (5.10.3)
77
74
  multi_json (1.12.2)
78
75
  multi_xml (0.6.0)
79
76
  multipart-post (2.0.0)
80
- nokogiri (1.6.8.1)
81
- mini_portile2 (~> 2.1.0)
77
+ nokogiri (1.8.1)
78
+ mini_portile2 (~> 2.3.0)
82
79
  oauth2 (1.4.0)
83
80
  faraday (>= 0.8, < 0.13)
84
81
  jwt (~> 1.0)
85
82
  multi_json (~> 1.3)
86
83
  multi_xml (~> 0.5)
87
84
  rack (>= 1.2, < 3)
88
- parser (2.3.1.2)
85
+ parallel (1.12.0)
86
+ parser (2.4.0.0)
89
87
  ast (~> 2.2)
90
- poltergeist (1.10.0)
88
+ poltergeist (1.16.0)
91
89
  capybara (~> 2.1)
92
90
  cliver (~> 0.3.1)
93
91
  websocket-driver (>= 0.2.0)
94
92
  powerpack (0.1.1)
95
93
  psych (2.2.4)
96
- public_suffix (3.0.0)
97
94
  pullreview-coverage (0.0.5)
98
95
  certifi
99
96
  simplecov (>= 0.7.1, < 1.0.0)
100
97
  rack (1.6.8)
101
98
  rack-protection (1.5.3)
102
99
  rack
103
- rack-test (0.6.3)
104
- rack (>= 1.0)
105
- rainbow (2.1.0)
100
+ rack-test (0.7.0)
101
+ rack (>= 1.0, < 3)
102
+ rainbow (2.2.2)
103
+ rake
106
104
  rake (12.1.0)
107
105
  rdoc (5.1.0)
108
- redcarpet (3.3.4)
109
- reek (4.2.3)
110
- codeclimate-engine-rb (~> 0.3.1)
111
- parser (~> 2.3.1, >= 2.3.1.2)
106
+ redcarpet (3.4.0)
107
+ reek (4.7.2)
108
+ codeclimate-engine-rb (~> 0.4.0)
109
+ parser (>= 2.4.0.0, < 2.5)
112
110
  rainbow (~> 2.0)
113
- rspec (3.5.0)
114
- rspec-core (~> 3.5.0)
115
- rspec-expectations (~> 3.5.0)
116
- rspec-mocks (~> 3.5.0)
117
- rspec-core (3.5.2)
118
- rspec-support (~> 3.5.0)
119
- rspec-expectations (3.5.0)
111
+ rspec (3.6.0)
112
+ rspec-core (~> 3.6.0)
113
+ rspec-expectations (~> 3.6.0)
114
+ rspec-mocks (~> 3.6.0)
115
+ rspec-core (3.6.0)
116
+ rspec-support (~> 3.6.0)
117
+ rspec-expectations (3.6.0)
120
118
  diff-lcs (>= 1.2.0, < 2.0)
121
- rspec-support (~> 3.5.0)
122
- rspec-mocks (3.5.0)
119
+ rspec-support (~> 3.6.0)
120
+ rspec-mocks (3.6.0)
123
121
  diff-lcs (>= 1.2.0, < 2.0)
124
- rspec-support (~> 3.5.0)
125
- rspec-support (3.5.0)
126
- rubocop (0.42.0)
127
- parser (>= 2.3.1.1, < 3.0)
122
+ rspec-support (~> 3.6.0)
123
+ rspec-support (3.6.0)
124
+ rubocop (0.50.0)
125
+ parallel (~> 1.10)
126
+ parser (>= 2.3.3.1, < 3.0)
128
127
  powerpack (~> 0.1)
129
- rainbow (>= 1.99.1, < 3.0)
128
+ rainbow (>= 2.2.2, < 3.0)
130
129
  ruby-progressbar (~> 1.7)
131
130
  unicode-display_width (~> 1.0, >= 1.0.1)
132
- ruby-progressbar (1.8.1)
133
- rubyzip (1.2.0)
134
- selenium-webdriver (2.53.4)
131
+ ruby-progressbar (1.9.0)
132
+ rubyzip (1.2.1)
133
+ selenium-webdriver (3.6.0)
135
134
  childprocess (~> 0.5)
136
135
  rubyzip (~> 1.0)
137
- websocket (~> 1.0)
138
136
  semver2 (3.4.2)
139
- simplecov (0.12.0)
137
+ simplecov (0.13.0)
140
138
  docile (~> 1.1.0)
141
139
  json (>= 1.8, < 3)
142
140
  simplecov-html (~> 0.10.0)
143
- simplecov-html (0.10.0)
144
- sinatra (1.4.7)
141
+ simplecov-html (0.10.2)
142
+ sinatra (1.4.8)
145
143
  rack (~> 1.5)
146
144
  rack-protection (~> 1.4)
147
145
  tilt (>= 1.3, < 3)
148
146
  thread_safe (0.3.6)
149
- tilt (2.0.5)
150
- tzinfo (1.2.2)
147
+ tilt (2.0.8)
148
+ tzinfo (1.2.3)
151
149
  thread_safe (~> 0.1)
152
- unicode-display_width (1.1.0)
150
+ unicode-display_width (1.3.0)
153
151
  virtus (1.0.5)
154
152
  axiom-types (~> 0.1)
155
153
  coercible (~> 1.0)
156
154
  descendants_tracker (~> 0.0, >= 0.0.3)
157
155
  equalizer (~> 0.0, >= 0.0.9)
158
- watir-webdriver (0.9.3)
156
+ watir-webdriver (0.9.9)
159
157
  selenium-webdriver (>= 2.46.2)
160
- websocket (1.2.3)
161
- websocket-driver (0.6.4)
158
+ websocket-driver (0.7.0)
162
159
  websocket-extensions (>= 0.1.0)
163
160
  websocket-extensions (0.1.2)
164
- xpath (2.0.0)
161
+ xpath (2.1.0)
165
162
  nokogiri (~> 1.3)
166
- yard (0.9.5)
163
+ yard (0.9.9)
167
164
 
168
165
  PLATFORMS
169
166
  ruby
170
167
 
171
168
  DEPENDENCIES
172
- activesupport (~> 4)
169
+ activesupport-inflector
173
170
  arbre
174
171
  capybara (>= 2.5)
175
172
  codeclimate-test-reporter
data/Rakefile CHANGED
@@ -19,4 +19,12 @@ end
19
19
 
20
20
  Jeweler::RubygemsDotOrgTasks.new
21
21
 
22
- task default: [:spec, 'rubocop:auto_correct']
22
+ require 'rake/testtask'
23
+ Rake::TestTask.new do |t|
24
+ t.libs << 'spec'
25
+ t.pattern = 'spec/**/*_test.rb'
26
+ t.warning = true
27
+ t.verbose = true
28
+ end
29
+
30
+ task default: [:spec, :test, 'rubocop:auto_correct']
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.8
1
+ 1.2.9
data/circle.yml CHANGED
@@ -3,4 +3,6 @@ machine:
3
3
  version: '2.2'
4
4
  test:
5
5
  override:
6
- - bundle exec rake
6
+ - bundle exec rake
7
+ post:
8
+ - CODECLIMATE_REPO_TOKEN=$CODECLIMATE_REPO_TOKEN bundle exec codeclimate-test-reporter
@@ -0,0 +1,84 @@
1
+ require 'cgi'
2
+
3
+ class Object
4
+ # Alias of <tt>to_s</tt>.
5
+ def to_param
6
+ to_s
7
+ end
8
+
9
+ # Converts an object into a string suitable for use as a URL query string,
10
+ # using the given <tt>key</tt> as the param name.
11
+ def to_query(key)
12
+ "#{CGI.escape(key.to_param)}=#{CGI.escape(to_param.to_s)}"
13
+ end
14
+ end
15
+
16
+ class NilClass
17
+ # Returns +self+.
18
+ def to_param
19
+ self
20
+ end
21
+ end
22
+
23
+ class TrueClass
24
+ # Returns +self+.
25
+ def to_param
26
+ self
27
+ end
28
+ end
29
+
30
+ class FalseClass
31
+ # Returns +self+.
32
+ def to_param
33
+ self
34
+ end
35
+ end
36
+
37
+ class Array
38
+ # Calls <tt>to_param</tt> on all its elements and joins the result with
39
+ # slashes. This is used by <tt>url_for</tt> in Action Pack.
40
+ def to_param
41
+ collect(&:to_param).join '/'
42
+ end
43
+
44
+ # Converts an array into a string suitable for use as a URL query string,
45
+ # using the given +key+ as the param name.
46
+ #
47
+ # ['Rails', 'coding'].to_query('hobbies') # => "hobbies%5B%5D=Rails&hobbies%5B%5D=coding"
48
+ def to_query(key)
49
+ prefix = "#{key}[]"
50
+
51
+ if empty?
52
+ nil.to_query(prefix)
53
+ else
54
+ collect { |value| value.to_query(prefix) }.join '&'
55
+ end
56
+ end
57
+ end
58
+
59
+ class Hash
60
+ # Returns a string representation of the receiver suitable for use as a URL
61
+ # query string:
62
+ #
63
+ # {name: 'David', nationality: 'Danish'}.to_query
64
+ # # => "name=David&nationality=Danish"
65
+ #
66
+ # An optional namespace can be passed to enclose key names:
67
+ #
68
+ # {name: 'David', nationality: 'Danish'}.to_query('user')
69
+ # # => "user%5Bname%5D=David&user%5Bnationality%5D=Danish"
70
+ #
71
+ # The string pairs "key=value" that conform the query string
72
+ # are sorted lexicographically in ascending order.
73
+ #
74
+ # This method is also aliased as +to_param+.
75
+ def to_query(namespace = nil)
76
+ collect do |key, value|
77
+ unless (value.is_a?(Hash) || value.is_a?(Array)) && value.empty?
78
+ value.to_query(namespace ? "#{namespace}[#{key}]" : key)
79
+ end
80
+ end.compact.sort! * '&'
81
+ end
82
+
83
+ alias to_param to_query
84
+ end
@@ -31,7 +31,8 @@ module PageMagic
31
31
  def included(clazz)
32
32
  clazz.class_eval do
33
33
  include(InstanceMethods)
34
- extend(Elements, ClassMethods)
34
+ extend ClassMethods
35
+ extend Elements
35
36
  end
36
37
  end
37
38
 
@@ -1,4 +1,5 @@
1
1
  require 'page_magic/driver'
2
+ require 'page_magic/utils/string'
2
3
  module PageMagic
3
4
  # class Drivers - creates an object that can be used to hold driver definitions
4
5
  # These PageMagic gets the user's chosen driver from this object.
@@ -16,12 +17,10 @@ module PageMagic
16
17
  # Loads drivers defined in files at the given path
17
18
  # @param [String] path where the drivers are located
18
19
  def load(path = "#{__dir__}/drivers")
19
- require 'active_support/inflector'
20
-
21
20
  Dir["#{path}/*.rb"].each do |driver_file|
22
21
  require driver_file
23
22
  driver_name = File.basename(driver_file)[/(.*)\.rb$/, 1]
24
- register self.class.const_get(driver_name.classify)
23
+ register self.class.const_get(Utils::String.classify(driver_name))
25
24
  end
26
25
  end
27
26
 
@@ -6,12 +6,18 @@ require 'page_magic/element/query_builder'
6
6
  module PageMagic
7
7
  # class Element - represents an element in a html page.
8
8
  class Element
9
- EVENT_TYPES = [:set, :select, :select_option, :unselect_option, :click].freeze
9
+ EVENT_TYPES = %i[set select select_option unselect_option click].freeze
10
10
  DEFAULT_HOOK = proc {}.freeze
11
11
  EVENT_NOT_SUPPORTED_MSG = '%s event not supported'.freeze
12
12
 
13
- include SelectorMethods, Watchers, SessionMethods, WaitMethods, Locators
14
- extend Elements, SelectorMethods, Forwardable
13
+ include Locators
14
+ include WaitMethods
15
+ include SessionMethods
16
+ include Watchers
17
+ include SelectorMethods
18
+ extend Forwardable
19
+ extend SelectorMethods
20
+ extend Elements
15
21
 
16
22
  attr_reader :type, :name, :parent_element, :browser_element, :before_events, :after_events
17
23
 
@@ -24,7 +30,7 @@ module PageMagic
24
30
  # @!method before_events
25
31
  # If a block is passed in, it adds it to be run before an event is triggered on an element.
26
32
  # @see .after_events
27
- %i(after_events before_events).each do |method|
33
+ %i[after_events before_events].each do |method|
28
34
  define_method method do |&block|
29
35
  instance_variable_name = "@#{method}".to_sym
30
36
  instance_variable_value = instance_variable_get(instance_variable_name) || [DEFAULT_HOOK]
@@ -14,7 +14,7 @@ module PageMagic
14
14
 
15
15
  INVALID_METHOD_NAME_MSG = 'a method already exists with this method name'.freeze
16
16
 
17
- TYPES = [:text_field, :button, :link, :checkbox, :select_list, :radio, :textarea].collect do |type|
17
+ TYPES = %i[text_field button link checkbox select_list radio textarea].collect do |type|
18
18
  [type, :"#{type}s"]
19
19
  end.flatten.freeze
20
20
 
@@ -3,7 +3,10 @@ module PageMagic
3
3
  module InstanceMethods
4
4
  attr_reader :browser, :session, :browser_element
5
5
 
6
- include Watchers, SessionMethods, WaitMethods, Element::Locators
6
+ include Element::Locators
7
+ include WaitMethods
8
+ include SessionMethods
9
+ include Watchers
7
10
 
8
11
  # Creates a new instance
9
12
  # @param [Session] session session that provides gateway to the browser throw the users chosen browser
@@ -44,7 +44,7 @@ module PageMagic
44
44
  # @param [Matcher] other
45
45
  # @return [Fixnum] -1 = smaller, 0 = equal to, 1 = greater than
46
46
  def <=>(other)
47
- results = [:path, :parameters, :fragment].collect do |component|
47
+ results = %i[path parameters fragment].collect do |component|
48
48
  compare(send(component), other.send(component))
49
49
  end
50
50
  results.find { |result| !result.zero? } || 0
@@ -113,7 +113,7 @@ module PageMagic
113
113
 
114
114
  def query_string_valid?(string)
115
115
  return true unless parameters
116
- !parameters.any? do |key, value|
116
+ parameters.none? do |key, value|
117
117
  !compatible?(parameters_hash(string)[key.downcase.to_s], value)
118
118
  end
119
119
  end
@@ -0,0 +1,12 @@
1
+ module PageMagic
2
+ module Utils
3
+ # module String - contains methods for manipulating strings
4
+ module String
5
+ class << self
6
+ def classify(string_or_symbol)
7
+ string_or_symbol.to_s.split('_').collect(&:capitalize).reduce(:+)
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -2,11 +2,11 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: page_magic 1.2.8 ruby lib
5
+ # stub: page_magic 1.2.9 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "page_magic"
9
- s.version = "1.2.8"
9
+ s.version = "1.2.9"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
30
30
  "Rakefile",
31
31
  "VERSION",
32
32
  "circle.yml",
33
+ "lib/active_support/core_ext/object/to_query.rb",
33
34
  "lib/page_magic.rb",
34
35
  "lib/page_magic/class_methods.rb",
35
36
  "lib/page_magic/driver.rb",
@@ -51,11 +52,13 @@ Gem::Specification.new do |s|
51
52
  "lib/page_magic/matcher.rb",
52
53
  "lib/page_magic/session.rb",
53
54
  "lib/page_magic/session_methods.rb",
55
+ "lib/page_magic/utils/string.rb",
54
56
  "lib/page_magic/wait_methods.rb",
55
57
  "lib/page_magic/watcher.rb",
56
58
  "lib/page_magic/watchers.rb",
57
59
  "page_magic.gemspec",
58
60
  "spec/element_spec.rb",
61
+ "spec/lib/active_support/core_ext/object/to_query_test.rb",
59
62
  "spec/page_magic/class_methods_spec.rb",
60
63
  "spec/page_magic/driver_spec.rb",
61
64
  "spec/page_magic/drivers/poltergeist_spec.rb",
@@ -73,6 +76,7 @@ Gem::Specification.new do |s|
73
76
  "spec/page_magic/matcher_spec.rb",
74
77
  "spec/page_magic/session_methods_spec.rb",
75
78
  "spec/page_magic/session_spec.rb",
79
+ "spec/page_magic/utils/string_spec.rb",
76
80
  "spec/page_magic/wait_methods_spec.rb",
77
81
  "spec/page_magic/watchers_spec.rb",
78
82
  "spec/page_magic_spec.rb",
@@ -95,30 +99,30 @@ Gem::Specification.new do |s|
95
99
  s.specification_version = 4
96
100
 
97
101
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
102
+ s.add_runtime_dependency(%q<activesupport-inflector>, [">= 0"])
98
103
  s.add_runtime_dependency(%q<capybara>, [">= 2.5"])
99
- s.add_runtime_dependency(%q<activesupport>, ["~> 4"])
104
+ s.add_development_dependency(%q<github-markup>, ["~> 1.4"])
100
105
  s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
106
+ s.add_development_dependency(%q<redcarpet>, ["~> 3.3"])
101
107
  s.add_development_dependency(%q<rubocop>, ["~> 0.34"])
102
108
  s.add_development_dependency(%q<yard>, ["~> 0.8"])
103
- s.add_development_dependency(%q<redcarpet>, ["~> 3.3"])
104
- s.add_development_dependency(%q<github-markup>, ["~> 1.4"])
105
109
  else
110
+ s.add_dependency(%q<activesupport-inflector>, [">= 0"])
106
111
  s.add_dependency(%q<capybara>, [">= 2.5"])
107
- s.add_dependency(%q<activesupport>, ["~> 4"])
112
+ s.add_dependency(%q<github-markup>, ["~> 1.4"])
108
113
  s.add_dependency(%q<jeweler>, ["~> 2.0"])
114
+ s.add_dependency(%q<redcarpet>, ["~> 3.3"])
109
115
  s.add_dependency(%q<rubocop>, ["~> 0.34"])
110
116
  s.add_dependency(%q<yard>, ["~> 0.8"])
111
- s.add_dependency(%q<redcarpet>, ["~> 3.3"])
112
- s.add_dependency(%q<github-markup>, ["~> 1.4"])
113
117
  end
114
118
  else
119
+ s.add_dependency(%q<activesupport-inflector>, [">= 0"])
115
120
  s.add_dependency(%q<capybara>, [">= 2.5"])
116
- s.add_dependency(%q<activesupport>, ["~> 4"])
121
+ s.add_dependency(%q<github-markup>, ["~> 1.4"])
117
122
  s.add_dependency(%q<jeweler>, ["~> 2.0"])
123
+ s.add_dependency(%q<redcarpet>, ["~> 3.3"])
118
124
  s.add_dependency(%q<rubocop>, ["~> 0.34"])
119
125
  s.add_dependency(%q<yard>, ["~> 0.8"])
120
- s.add_dependency(%q<redcarpet>, ["~> 3.3"])
121
- s.add_dependency(%q<github-markup>, ["~> 1.4"])
122
126
  end
123
127
  end
124
128
 
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest'
4
+ Minitest.autorun
5
+ require 'active_support/core_ext/object/to_query'
6
+
7
+ class ToQueryTest < ::Minitest::Test
8
+ def test_simple_conversion
9
+ assert_query_equal 'a=10', a: 10
10
+ end
11
+
12
+ def test_cgi_escaping
13
+ assert_query_equal 'a%3Ab=c+d', 'a:b' => 'c d'
14
+ end
15
+
16
+ def test_nil_parameter_value
17
+ empty = Object.new
18
+ def empty.to_param
19
+ nil
20
+ end
21
+ assert_query_equal 'a=', 'a' => empty
22
+ end
23
+
24
+ def test_nested_conversion
25
+ assert_query_equal 'person%5Blogin%5D=seckar&person%5Bname%5D=Nicholas',
26
+ person: Hash[:login, 'seckar', :name, 'Nicholas']
27
+ end
28
+
29
+ def test_multiple_nested
30
+ assert_query_equal 'account%5Bperson%5D%5Bid%5D=20&person%5Bid%5D=10',
31
+ Hash[:account, { person: { id: 20 } }, :person, { id: 10 }]
32
+ end
33
+
34
+ def test_array_values
35
+ assert_query_equal 'person%5Bid%5D%5B%5D=10&person%5Bid%5D%5B%5D=20',
36
+ person: { id: [10, 20] }
37
+ end
38
+
39
+ def test_array_values_are_not_sorted
40
+ assert_query_equal 'person%5Bid%5D%5B%5D=20&person%5Bid%5D%5B%5D=10',
41
+ person: { id: [20, 10] }
42
+ end
43
+
44
+ def test_empty_array
45
+ assert_equal 'person%5B%5D=', [].to_query('person')
46
+ end
47
+
48
+ def test_nested_empty_hash
49
+ assert_equal '',
50
+ {}.to_query
51
+ assert_query_equal 'a=1&b%5Bc%5D=3',
52
+ a: 1, b: { c: 3, d: {} }
53
+ assert_query_equal '',
54
+ a: { b: { c: {} } }
55
+ assert_query_equal 'b%5Bc%5D=false&b%5Be%5D=&b%5Bf%5D=&p=12',
56
+ p: 12, b: { c: false, e: nil, f: '' }
57
+ assert_query_equal 'b%5Bc%5D=3&b%5Bf%5D=',
58
+ b: { c: 3, k: {}, f: '' }
59
+ assert_query_equal 'b=3',
60
+ a: [], b: 3
61
+ end
62
+
63
+ def test_hash_with_namespace
64
+ hash = { name: 'Nakshay', nationality: 'Indian' }
65
+ assert_equal 'user%5Bname%5D=Nakshay&user%5Bnationality%5D=Indian', hash.to_query('user')
66
+ end
67
+
68
+ def test_hash_sorted_lexicographically
69
+ hash = { type: 'human', name: 'Nakshay' }
70
+ assert_equal 'name=Nakshay&type=human', hash.to_query
71
+ end
72
+
73
+ private
74
+
75
+ def assert_query_equal(expected, actual)
76
+ assert_equal expected.split('&'), actual.to_query.split('&')
77
+ end
78
+ end
@@ -18,7 +18,7 @@ module PageMagic
18
18
  end
19
19
 
20
20
  it 'raises an error' do
21
- expected_message = 'Unable to find css "wrong"'
21
+ expected_message = 'Unable to find visible css "wrong"'
22
22
  expect { subject.execute(page.browser) }.to raise_exception(ElementMissingException, expected_message)
23
23
  end
24
24
  end
@@ -29,7 +29,7 @@ module PageMagic
29
29
  end
30
30
 
31
31
  it 'raises an error' do
32
- expected_message = 'Ambiguous match, found 2 elements matching css "a"'
32
+ expected_message = 'Ambiguous match, found 2 elements matching visible css "a"'
33
33
  expect { subject.execute(page.browser) }.to raise_error AmbiguousQueryException, expected_message
34
34
  end
35
35
  end
@@ -33,7 +33,7 @@ module PageMagic
33
33
  described_class.new(supports_type: true)
34
34
  end
35
35
  it 'includes the element type in the result' do
36
- expect(subject.build(:field, :locator)).to eq([:field, :locator])
36
+ expect(subject.build(:field, :locator)).to eq(%i[field locator])
37
37
  end
38
38
  end
39
39
 
@@ -54,7 +54,7 @@ module PageMagic
54
54
  end
55
55
 
56
56
  it 'is added to the result' do
57
- expect(subject.build(:field, :locator)).to eq([:css, :locator])
57
+ expect(subject.build(:field, :locator)).to eq(%i[css locator])
58
58
  end
59
59
  end
60
60
  end
@@ -113,8 +113,7 @@ module PageMagic
113
113
  subject.class_eval do
114
114
  link(:hello, text: 'world')
115
115
 
116
- def hello
117
- end
116
+ def hello; end
118
117
  end
119
118
  end.to raise_error(InvalidMethodNameException)
120
119
  end
@@ -122,8 +121,7 @@ module PageMagic
122
121
  it 'should not allow element names that match method names' do
123
122
  expect do
124
123
  subject.class_eval do
125
- def hello
126
- end
124
+ def hello; end
127
125
 
128
126
  link(:hello, text: 'world')
129
127
  end
@@ -124,7 +124,7 @@ module PageMagic
124
124
  context 'more than one match on path' do
125
125
  it 'orders the results by specificity ' do
126
126
  subject.define_page_mappings %r{/page} => :mapped_page_using_regex, '/page' => :mapped_page_using_string
127
- expected_result = [:mapped_page_using_string, :mapped_page_using_regex]
127
+ expected_result = %i[mapped_page_using_string mapped_page_using_regex]
128
128
  expect(subject.instance_eval { matches('/page') }).to eq(expected_result)
129
129
  end
130
130
  end
@@ -155,8 +155,7 @@ module PageMagic
155
155
 
156
156
  it 'checks the current page' do
157
157
  page.class_eval do
158
- def my_method
159
- end
158
+ def my_method; end
160
159
  end
161
160
  expect(subject.respond_to?(:my_method)).to eq(true)
162
161
  end
@@ -0,0 +1,34 @@
1
+ require 'page_magic/utils/string'
2
+ module PageMagic
3
+ module Utils
4
+ describe String do
5
+ describe '.classify' do
6
+ context 'parameter is symbol' do
7
+ it 'returns a string' do
8
+ expect(described_class.classify(:Symbol)).to eq('Symbol')
9
+ end
10
+ end
11
+
12
+ context 'parameter is string' do
13
+ it 'returns a string' do
14
+ expect(described_class.classify(:String)).to eq('String')
15
+ end
16
+ end
17
+
18
+ context 'single word' do
19
+ context 'first letter is lower case' do
20
+ it 'converts the first letter to uppercase' do
21
+ expect(described_class.classify(:symbol)).to eq('Symbol')
22
+ end
23
+ end
24
+ end
25
+
26
+ context 'snakecase' do
27
+ it 'removes underscores and capitalises each word' do
28
+ expect(described_class.classify(:snake_case)).to eq('SnakeCase')
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: page_magic
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.8
4
+ version: 1.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leon Davis
@@ -11,103 +11,103 @@ cert_chain: []
11
11
  date: 2017-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: capybara
14
+ name: activesupport-inflector
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.5'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '2.5'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: activesupport
28
+ name: capybara
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '4'
33
+ version: '2.5'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '4'
40
+ version: '2.5'
41
41
  - !ruby/object:Gem::Dependency
42
- name: jeweler
42
+ name: github-markup
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '2.0'
47
+ version: '1.4'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '2.0'
54
+ version: '1.4'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rubocop
56
+ name: jeweler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.34'
61
+ version: '2.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.34'
68
+ version: '2.0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: yard
70
+ name: redcarpet
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0.8'
75
+ version: '3.3'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0.8'
82
+ version: '3.3'
83
83
  - !ruby/object:Gem::Dependency
84
- name: redcarpet
84
+ name: rubocop
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '3.3'
89
+ version: '0.34'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '3.3'
96
+ version: '0.34'
97
97
  - !ruby/object:Gem::Dependency
98
- name: github-markup
98
+ name: yard
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.4'
103
+ version: '0.8'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '1.4'
110
+ version: '0.8'
111
111
  description: Framework for modeling and interacting with webpages which wraps capybara
112
112
  email: info@lad-tech.com
113
113
  executables: []
@@ -127,6 +127,7 @@ files:
127
127
  - Rakefile
128
128
  - VERSION
129
129
  - circle.yml
130
+ - lib/active_support/core_ext/object/to_query.rb
130
131
  - lib/page_magic.rb
131
132
  - lib/page_magic/class_methods.rb
132
133
  - lib/page_magic/driver.rb
@@ -148,11 +149,13 @@ files:
148
149
  - lib/page_magic/matcher.rb
149
150
  - lib/page_magic/session.rb
150
151
  - lib/page_magic/session_methods.rb
152
+ - lib/page_magic/utils/string.rb
151
153
  - lib/page_magic/wait_methods.rb
152
154
  - lib/page_magic/watcher.rb
153
155
  - lib/page_magic/watchers.rb
154
156
  - page_magic.gemspec
155
157
  - spec/element_spec.rb
158
+ - spec/lib/active_support/core_ext/object/to_query_test.rb
156
159
  - spec/page_magic/class_methods_spec.rb
157
160
  - spec/page_magic/driver_spec.rb
158
161
  - spec/page_magic/drivers/poltergeist_spec.rb
@@ -170,6 +173,7 @@ files:
170
173
  - spec/page_magic/matcher_spec.rb
171
174
  - spec/page_magic/session_methods_spec.rb
172
175
  - spec/page_magic/session_spec.rb
176
+ - spec/page_magic/utils/string_spec.rb
173
177
  - spec/page_magic/wait_methods_spec.rb
174
178
  - spec/page_magic/watchers_spec.rb
175
179
  - spec/page_magic_spec.rb