watir_pump 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: bf5d5c4150c2c096e77e82ccf8d4ddca9394903a
4
+ data.tar.gz: 0fe97e37e0235fd3f68be61126c38cc35d2730e0
5
+ SHA512:
6
+ metadata.gz: a0e8136f06a040cc6df823d1d33bd42c186c826cea3dd551f116497932125c68db02f5043cb13f4ee44a2405f7c711dfa6e5b57fffc5f9911e13a385347c0760
7
+ data.tar.gz: 7da06cbcee65e874545af20c0e2c64a31d9c8bf3f7261640f67535a75c9d2d725d86a997bea9d333ba0581be39f1564a0c47c9665ece38eb8e1aa84c842e536d
@@ -0,0 +1,44 @@
1
+ module WatirPump
2
+ class Component
3
+ attr_reader :browser
4
+ attr_reader :parent
5
+
6
+ class << self
7
+ %w[text_field button span div link image].each do |watir_method|
8
+ define_method watir_method do |name, *args, **keyword_args|
9
+ define_method(name) do
10
+ root.send(watir_method, *args, **keyword_args)
11
+ end
12
+ end
13
+ end
14
+
15
+ def component(name, klass, rel_method = nil, *rel_args)
16
+ define_method(name) do
17
+ root_node = rel_method.nil? ? root : root.send(rel_method, *rel_args)
18
+ klass.new(browser, self, root_node)
19
+ end
20
+ end
21
+
22
+ def components(name, klass, rel_method = nil, *rel_args)
23
+ define_method(name) do
24
+ root.send(rel_method, *rel_args).map do |node|
25
+ klass.new(browser, self, node)
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+ def initialize(browser, parent = nil, root_node = nil)
32
+ @browser = browser
33
+ @parent = parent
34
+ @root_node = root_node
35
+ end
36
+
37
+ def root
38
+ return @root_node if @root_node
39
+ return browser.body if parent.nil?
40
+ ret = parent.root
41
+ ret.class.name.include?('Collection') ? ret.first : ret
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,37 @@
1
+ require 'addressable/template'
2
+ require_relative 'component'
3
+
4
+ module WatirPump
5
+ class Page < Component
6
+ class << self
7
+ def uri(uri = nil)
8
+ @uri = uri unless uri.nil?
9
+ @uri
10
+ end
11
+
12
+ def open(params = {}, &blk)
13
+ url_template = WatirPump.config.base_url + uri
14
+ url = Addressable::Template.new(url_template).expand(params).to_s
15
+ instance.browser.goto url
16
+ use(&blk) if block_given?
17
+ end
18
+
19
+ def browser
20
+ instance.browser
21
+ end
22
+
23
+ def use
24
+ yield instance, instance.browser
25
+ end
26
+ alias act use
27
+
28
+ def instance
29
+ @instance ||= new(WatirPump.config.browser)
30
+ end
31
+ end # << self
32
+
33
+ def uri
34
+ self.class.uri
35
+ end
36
+ end
37
+ end
data/lib/watir_pump.rb ADDED
@@ -0,0 +1,8 @@
1
+ require 'active_support/configurable'
2
+ require 'watir'
3
+
4
+ require_relative 'watir_pump/page'
5
+
6
+ module WatirPump
7
+ include ActiveSupport::Configurable
8
+ end
metadata ADDED
@@ -0,0 +1,144 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: watir_pump
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Bartek Wilczek
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-01-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: addressable
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.5'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: watir
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '6.10'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '6.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.11'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.11'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.7'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.7'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.52'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.52'
97
+ - !ruby/object:Gem::Dependency
98
+ name: sinatra
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '2.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '2.0'
111
+ description:
112
+ email: bwilczek@gmail.com
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files: []
116
+ files:
117
+ - lib/watir_pump.rb
118
+ - lib/watir_pump/component.rb
119
+ - lib/watir_pump/page.rb
120
+ homepage: https://github.com/bwilczek/watir_pump
121
+ licenses:
122
+ - MIT
123
+ metadata: {}
124
+ post_install_message:
125
+ rdoc_options: []
126
+ require_paths:
127
+ - lib
128
+ required_ruby_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: '2.2'
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ requirements: []
139
+ rubyforge_project:
140
+ rubygems_version: 2.6.13
141
+ signing_key:
142
+ specification_version: 4
143
+ summary: Page Objects for Watir
144
+ test_files: []