watir_pump 0.0.3 → 0.1.0

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: 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: []