tedium 0.0.2 → 0.0.3

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: 40026ddb3d89f0c51494434b3fe167775c509a3f
4
- data.tar.gz: ca15f4b60a8ac79a3d83f6290d900f31509425c3
3
+ metadata.gz: 8766bb089e801c3bef29f442029c3e7c646d5518
4
+ data.tar.gz: 9d1458219ddd62f9fb0070641b5e98d47a2173d6
5
5
  SHA512:
6
- metadata.gz: 909797fff65e5be7cbb1661a81e0891a33d2a49bb0e3d048d31c0ddd30cfd369314c5350d505b67882ed4bd7a5c9e6c0c5f990af01970cff4b15772fed187e8d
7
- data.tar.gz: 84b1b77f8bbcfd590f353c39cf4536eb4991431eb0cbd1d8816be797c3b63a5158cc7849f4b2585e4dffc760b4f17c2c85e9cc4100f5b43a120fdf7a296399a8
6
+ metadata.gz: 3036b24f0627c6c0bf929673e6201d8a0390a5b6da7d1d5250e107c27858e3fda8d519dece3986ab90ce93a45d64ebabe8e858210ec04ae80041d93fbb411fc7
7
+ data.tar.gz: 1903646b66c43c8e92e4fe5e7402ae5d37c9796feefc455989a51dd1f87ce2dea92c5f34a8a44e9967325120d9c0730d1901c16d4f6d8f316941518927a10ccc
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # v0.0.3
2
+
3
+ * Add implicit submission field inferring feature
4
+
1
5
  # v0.0.2
2
6
 
3
7
  * add `datetime_field` DSL method to manage Rails `datetime_select` HTML
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, %w(name email terms_of_service)
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 *dasherization*).
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, %w(name email terms_of_service)
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 the `has_record?(record)` method, 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):
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])
@@ -1,4 +1,4 @@
1
1
  module Tedium
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
4
4
 
@@ -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 'performs the submission' do
32
- page_object.sign_in!('foo@bar.com', 'qux')
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
 
@@ -1,4 +1,4 @@
1
- <form method="get">
1
+ <form method="get" action="submitted_form.html">
2
2
  <div style="margin:0;padding:0;display:inline">
3
3
  <input name="utf8" type="hidden" value="&#x2713;" />
4
4
  </div>
@@ -0,0 +1,2 @@
1
+ <p>Submitted!</p>
2
+
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.2
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-03 00:00:00.000000000 Z
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