watir_pump 0.0.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2b43d865d216cb89a0021ec97a0e0d9dc47732b5
4
- data.tar.gz: d225472e316f49be403ce6a1c7c1adbd87a8535c
3
+ metadata.gz: 0444ad7afb7e39ef4c6b90b840fff6314b218560
4
+ data.tar.gz: 6514f75a50b8cce7f1511224e9bbe8479be64ba6
5
5
  SHA512:
6
- metadata.gz: 3825e375c66c430c3ae772ac5935f393c6c1a905f904f1f9e28b183e7fdb53ce8cfea0c4c4f5c702b9c19de49a8735fbced6f662f64dc412006f152dd778603e
7
- data.tar.gz: 837952750b60feb3bffca0c5eb0d75147328cceb70b3482f29f1c2fd0b9dfda80d83aeee954235a879c9bbc8cd83664d72de352c5acf92cdc0e9bdf4f7ef8534
6
+ metadata.gz: 700b00f4eeeabcc0314295a252461edea24801fd8d053f30fab7665648be4954725321ea6c4bbd3a4c5d3e2bd5c2011df944d82f3acca59aeecdac67e02b8aaa
7
+ data.tar.gz: 3c23071c446f307c0d4c9f603bb9ea03ac702751c8d2e1081396c2574129a73af4ddab00d390bd828b14caff32cf63dc6e3896a7079f898ab307a51d07446b16
@@ -1,12 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'component_collection'
4
+ require_relative 'decorated_element'
5
+ require_relative 'constants'
4
6
  require 'forwardable'
5
7
 
6
8
  module WatirPump
7
9
  class Component
8
10
  extend Forwardable
9
11
 
12
+ include Constants
13
+
10
14
  delegate %i[visible? present?] => :root
11
15
 
12
16
  attr_reader :browser
@@ -30,7 +34,7 @@ module WatirPump
30
34
  # span_reader, :title, id: asd
31
35
  # will create methods :title and :title_element
32
36
  # where :title is a shortcut for :title_element.text
33
- %i[span div].each do |watir_method|
37
+ Constants::READABLES.each do |watir_method|
34
38
  define_method "#{watir_method}_reader" do |name, *args|
35
39
  send(watir_method, "#{name}_element", *args)
36
40
  define_method(name) do
@@ -40,7 +44,7 @@ module WatirPump
40
44
  end
41
45
 
42
46
  # Methods for element content writers
43
- %i[text_field].each do |watir_method|
47
+ Constants::WRITABLES.each do |watir_method|
44
48
  define_method "#{watir_method}_writer" do |name, *args|
45
49
  send(watir_method, "#{name}_element", *args)
46
50
  define_method("#{name}=") do |value|
@@ -50,7 +54,7 @@ module WatirPump
50
54
  end
51
55
 
52
56
  # Methods for element clickers
53
- %i[button link].each do |watir_method|
57
+ Constants::CLICKABLES.each do |watir_method|
54
58
  define_method "#{watir_method}_clicker" do |name, *args|
55
59
  send(watir_method, "#{name}_element", *args)
56
60
  define_method(name) do
@@ -92,10 +96,13 @@ module WatirPump
92
96
  end
93
97
  end
94
98
 
95
- def decorate(method, klass)
96
- alias_method "#{method}_original".to_sym, method
97
- define_method method do |*args|
98
- klass.new(send("#{method}_original", *args))
99
+ def decorate(method, *klasses)
100
+ klasses.each do |klass|
101
+ original_name = "#{method}_before_#{klass}".to_sym
102
+ alias_method original_name, method
103
+ define_method method do |*args|
104
+ klass.new(send(original_name, *args))
105
+ end
99
106
  end
100
107
  end
101
108
  end
@@ -16,7 +16,7 @@ module WatirPump
16
16
  %i[present? visible?].each do |method_name|
17
17
  define_method method_name do
18
18
  return false if empty?
19
- find { |component| component.node.send(method_name) }
19
+ find { |component| component.root.send(method_name) }
20
20
  end
21
21
  end
22
22
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WatirPump
4
+ module Constants
5
+ CLICKABLES = %i[
6
+ button
7
+ link
8
+ ].freeze
9
+
10
+ WRITABLES = %i[
11
+ text_field
12
+ text_area
13
+ ].freeze
14
+
15
+ READABLES = %i[
16
+ div
17
+ span
18
+ p
19
+ ].freeze
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WatirPump
4
+ class DecoratedElement
5
+ def initialize(element)
6
+ @element = element
7
+ end
8
+
9
+ def method_missing(name, *args, &blk)
10
+ return @element.send(name, *args, &blk) if @element.respond_to?(name)
11
+ super
12
+ end
13
+
14
+ def respond_to_missing?(name, include_private = false)
15
+ @element.respond_to?(name) || super
16
+ end
17
+ end
18
+ end
@@ -84,6 +84,7 @@ module WatirPump
84
84
  Watir::Wait.until(message: "Timeout waiting for #{self} to load") do
85
85
  loaded?
86
86
  end
87
+ self
87
88
  end
88
89
 
89
90
  def loaded?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: watir_pump
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bartek Wilczek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-11 00:00:00.000000000 Z
11
+ date: 2018-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.11'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '12.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '12.0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rspec
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -117,6 +131,8 @@ files:
117
131
  - lib/watir_pump.rb
118
132
  - lib/watir_pump/component.rb
119
133
  - lib/watir_pump/component_collection.rb
134
+ - lib/watir_pump/constants.rb
135
+ - lib/watir_pump/decorated_element.rb
120
136
  - lib/watir_pump/page.rb
121
137
  homepage: https://github.com/bwilczek/watir_pump
122
138
  licenses:
@@ -141,5 +157,5 @@ rubyforge_project:
141
157
  rubygems_version: 2.6.13
142
158
  signing_key:
143
159
  specification_version: 4
144
- summary: Page Objects for Watir
160
+ summary: Page Object pattern for Watir. Hacker friendly and enterprise ready.
145
161
  test_files: []