tedium 0.0.2 → 0.0.3
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 +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +17 -7
- data/lib/tedium/site_prism/form_dsl.rb +4 -1
- data/lib/tedium/version.rb +1 -1
- data/spec/features/fill_in_form_spec.rb +26 -2
- data/spec/fixtures/form.html +1 -1
- data/spec/fixtures/submitted_form.html +2 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8766bb089e801c3bef29f442029c3e7c646d5518
|
4
|
+
data.tar.gz: 9d1458219ddd62f9fb0070641b5e98d47a2173d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3036b24f0627c6c0bf929673e6201d8a0390a5b6da7d1d5250e107c27858e3fda8d519dece3986ab90ce93a45d64ebabe8e858210ec04ae80041d93fbb411fc7
|
7
|
+
data.tar.gz: 1903646b66c43c8e92e4fe5e7402ae5d37c9796feefc455989a51dd1f87ce2dea92c5f34a8a44e9967325120d9c0730d1901c16d4f6d8f316941518927a10ccc
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -12,7 +12,7 @@ class SignInPage < SitePrism::Page
|
|
12
12
|
fields :name, :email, :terms_of_service
|
13
13
|
submit_button
|
14
14
|
|
15
|
-
submission :sign_in
|
15
|
+
submission :sign_in
|
16
16
|
end
|
17
17
|
|
18
18
|
feature 'New user registration' do
|
@@ -38,8 +38,7 @@ Declares the presence of a field within the page. The selector used to find the
|
|
38
38
|
|
39
39
|
If the underlying attribute name differs from the name you want to give to the page object field, provide the attribute name as the second argument.
|
40
40
|
|
41
|
-
Once a `:foobar` field is declared, the page object will define a `#foobar_field` method, which will return the corresponding Capybara node.
|
42
|
-
element.
|
41
|
+
Once a `:foobar` field is declared, the page object will define a `#foobar_field` method, which will return the corresponding Capybara node element.
|
43
42
|
|
44
43
|
### fields
|
45
44
|
|
@@ -75,7 +74,7 @@ You can access to the specific hour and minute select elements with `.hour_eleme
|
|
75
74
|
submit_button(role = nil)
|
76
75
|
```
|
77
76
|
|
78
|
-
Declares the presence of a submit button within the page. It can be either a `input[type=select]` or a `button`. If you pass an argument to the method (ie. `submit_button :sign_in`), the selector will be augmented with a `[role='sign-in']` filter (please note the automatic *
|
77
|
+
Declares the presence of a submit button within the page. It can be either a `input[type=select]` or a `button`. If you pass an argument to the method (ie. `submit_button :sign_in`), the selector will be augmented with a `[role='sign-in']` filter (please note the automatic conversion in *snake-case*).
|
79
78
|
|
80
79
|
Once the submit button is declared, the page object will define a `#submit!`
|
81
80
|
method which will press the button.
|
@@ -83,7 +82,7 @@ method which will press the button.
|
|
83
82
|
### submission
|
84
83
|
|
85
84
|
```ruby
|
86
|
-
submission(name, fields)
|
85
|
+
submission(name, fields = nil)
|
87
86
|
```
|
88
87
|
|
89
88
|
Declares a submission process.
|
@@ -95,7 +94,7 @@ class SignInPage < SitePrism::Page
|
|
95
94
|
fields :name, :email, :terms_of_service
|
96
95
|
submit_button
|
97
96
|
|
98
|
-
submission :sign_in
|
97
|
+
submission :sign_in
|
99
98
|
end
|
100
99
|
```
|
101
100
|
|
@@ -110,6 +109,17 @@ def sign_in!(name, email, terms_of_service)
|
|
110
109
|
end
|
111
110
|
```
|
112
111
|
|
112
|
+
You can explicitly change the fields used during the submission (or their order) passing an array of field names as second argument:
|
113
|
+
|
114
|
+
```ruby
|
115
|
+
class SignInPage < SitePrism::Page
|
116
|
+
fields :name, :email, :terms_of_service
|
117
|
+
submit_button
|
118
|
+
|
119
|
+
submission :sign_in, %w(email name)
|
120
|
+
end
|
121
|
+
```
|
122
|
+
|
113
123
|
### action
|
114
124
|
|
115
125
|
```ruby
|
@@ -160,7 +170,7 @@ page.find_first('select').set('2')
|
|
160
170
|
|
161
171
|
## has_record?
|
162
172
|
|
163
|
-
Every SitePrism page inherits
|
173
|
+
Every SitePrism page inherits a `:record` SitePrism dynamic element, useful in conjunction with the [Rails `div_for` helper](http://devdocs.io/rails/actionview/helpers/recordtaghelper#method-i-div_for) or [Showcase Record trait](https://github.com/stefanoverna/showcase#showcasetraitsrecord):
|
164
174
|
|
165
175
|
```erb
|
166
176
|
<%= div_for(@person, class: "foo") do %>
|
@@ -5,6 +5,8 @@ module Tedium
|
|
5
5
|
module SitePrism
|
6
6
|
module FormDsl
|
7
7
|
def field(name, attribute_name = name)
|
8
|
+
@fields ||= []
|
9
|
+
@fields << name
|
8
10
|
element "#{name}_field", :input_for_field, attribute_name
|
9
11
|
end
|
10
12
|
|
@@ -32,7 +34,8 @@ module Tedium
|
|
32
34
|
end
|
33
35
|
end
|
34
36
|
|
35
|
-
def submission(name, fields)
|
37
|
+
def submission(name, fields = nil)
|
38
|
+
fields ||= @fields
|
36
39
|
define_method "#{name}!" do |*args|
|
37
40
|
Array(fields).each_with_index do |field, i|
|
38
41
|
send("#{field}_field").set(args[i])
|
data/lib/tedium/version.rb
CHANGED
@@ -9,6 +9,7 @@ describe 'Given a SitePrism page object with some fields and a submission' do
|
|
9
9
|
submit_button :sign_in
|
10
10
|
|
11
11
|
submission :sign_in, %w(email password)
|
12
|
+
submission :implicit_sign_in
|
12
13
|
end
|
13
14
|
end
|
14
15
|
|
@@ -28,8 +29,31 @@ describe 'Given a SitePrism page object with some fields and a submission' do
|
|
28
29
|
expect(page_object.submit_button).to be_present
|
29
30
|
end
|
30
31
|
|
31
|
-
it '
|
32
|
-
page_object.
|
32
|
+
it 'submits the form' do
|
33
|
+
page_object.submit!
|
34
|
+
expect(page).to have_content 'Submitted!'
|
35
|
+
end
|
36
|
+
|
37
|
+
context do
|
38
|
+
before do
|
39
|
+
page_object.stub(:submit!)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'performs the submission' do
|
43
|
+
page_object.sign_in!('foo@bar.com', 'qux')
|
44
|
+
|
45
|
+
expect(page_object.email_field.value).to eq 'foo@bar.com'
|
46
|
+
expect(page_object.password_field.value).to eq 'qux'
|
47
|
+
expect(page_object).to have_received(:submit!)
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'performs the submission inferring the fields to fill in' do
|
51
|
+
page_object.implicit_sign_in!('foo@bar.com', 'qux')
|
52
|
+
|
53
|
+
expect(page_object.email_field.value).to eq 'foo@bar.com'
|
54
|
+
expect(page_object.password_field.value).to eq 'qux'
|
55
|
+
expect(page_object).to have_received(:submit!)
|
56
|
+
end
|
33
57
|
end
|
34
58
|
end
|
35
59
|
|
data/spec/fixtures/form.html
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tedium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefano Verna
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: site_prism
|
@@ -164,6 +164,7 @@ files:
|
|
164
164
|
- spec/fixtures/form.html
|
165
165
|
- spec/fixtures/record.html
|
166
166
|
- spec/fixtures/select.html
|
167
|
+
- spec/fixtures/submitted_form.html
|
167
168
|
- spec/spec_helper.rb
|
168
169
|
- tedium.gemspec
|
169
170
|
homepage: https://github.com/cantierecreativo/tedium
|
@@ -206,4 +207,5 @@ test_files:
|
|
206
207
|
- spec/fixtures/form.html
|
207
208
|
- spec/fixtures/record.html
|
208
209
|
- spec/fixtures/select.html
|
210
|
+
- spec/fixtures/submitted_form.html
|
209
211
|
- spec/spec_helper.rb
|