chop 0.12.0 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +22 -2
- data/lib/chop/builder.rb +20 -2
- data/lib/chop/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1135604264c973b4b42e5e47dba49d6887482a6d
|
4
|
+
data.tar.gz: 6fd23a8bc90f756d2e85be83f06791b7fea04384
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac643b6fdd779b76c2b240661eb6dd899d7540a6ce4f8645effc721eb0d2988f44ed993c4b4ab79b3df9a1ae90bcd520a1129526604a393e91d36286d5a23483
|
7
|
+
data.tar.gz: 332ebe3878804ffba6f134036b7f048415fe4d1416c617c2a31360fe21124a3db0749aed3a4058d0d030b210bb95e6a6b6f29e6348916793135189a763731763
|
data/README.md
CHANGED
@@ -14,12 +14,13 @@ end
|
|
14
14
|
|
15
15
|
## Usage
|
16
16
|
|
17
|
-
Chop monkeypatches Cucumber tables with
|
17
|
+
Chop monkeypatches Cucumber tables with three new methods:
|
18
18
|
|
19
19
|
* `#build!`: Creates ActiveRecord instances. Also supports FactoryGirl.
|
20
20
|
* `#diff!`: Enhances existing method to also accept a CSS selector. Currently supports diffing `<table>`, `<dl>`, and `<ul>`.
|
21
|
+
* `#fill_in!`: Fills in a form on the current page.
|
21
22
|
|
22
|
-
|
23
|
+
All these methods accept blocks for customization.
|
23
24
|
|
24
25
|
### Block methods for `#build!`:
|
25
26
|
|
@@ -42,6 +43,10 @@ All these methods are implemented in terms of the following low-level methods, u
|
|
42
43
|
|
43
44
|
TODO: Pending API overhaul.
|
44
45
|
|
46
|
+
### Block methods for `#fill_in!`:
|
47
|
+
|
48
|
+
TODO: Does this make sense?
|
49
|
+
|
45
50
|
### Example
|
46
51
|
|
47
52
|
```gherkin
|
@@ -58,6 +63,12 @@ Given the following stories exist:
|
|
58
63
|
| Example industry | example.jpg | Another headline |
|
59
64
|
|
60
65
|
Given I am on the home page
|
66
|
+
|
67
|
+
When I fill in the following form:
|
68
|
+
| Name | NEW industry |
|
69
|
+
| Wall background | NEW_wall.jpg |
|
70
|
+
| Table background | NEW_table.jpg |
|
71
|
+
|
61
72
|
Then I should see the following industries:
|
62
73
|
| ANOTHER INDUSTRY |
|
63
74
|
| EXAMPLE INDUSTRY |
|
@@ -83,11 +94,19 @@ end
|
|
83
94
|
Given "the following stories exist:" do |table|
|
84
95
|
table.create! factory_girl: "conversation_table/story" do
|
85
96
|
belongs_to :industry, ConversationTable::Industry
|
97
|
+
|
86
98
|
rename :image => :image_file
|
87
99
|
file :image_file
|
100
|
+
|
101
|
+
# The previous two lines can also be expressed as:
|
102
|
+
file :image => :image_file
|
88
103
|
end
|
89
104
|
end
|
90
105
|
|
106
|
+
When "I fill in the following form:" do |table|
|
107
|
+
table.fill_in!
|
108
|
+
end
|
109
|
+
|
91
110
|
Then "I should see the following industries:" do |table|
|
92
111
|
table.diff! "dl"
|
93
112
|
end
|
@@ -106,6 +125,7 @@ Load `chop` before `cucumber` in your Gemfile, and call the two methods directly
|
|
106
125
|
```ruby
|
107
126
|
Chop.build! table, Users
|
108
127
|
Chop.diff! table, "table"
|
128
|
+
Chop.fill_in! table
|
109
129
|
```
|
110
130
|
|
111
131
|
## Development
|
data/lib/chop/builder.rb
CHANGED
@@ -44,6 +44,10 @@ module Chop
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def field attribute, default: ""
|
47
|
+
if attribute.is_a?(Hash)
|
48
|
+
rename attribute
|
49
|
+
attribute = attribute.values.first
|
50
|
+
end
|
47
51
|
transformation do |attributes|
|
48
52
|
attributes[attribute.to_s] = yield(attributes.fetch(attribute.to_s, default))
|
49
53
|
end
|
@@ -58,7 +62,13 @@ module Chop
|
|
58
62
|
end
|
59
63
|
end
|
60
64
|
|
61
|
-
def file *keys
|
65
|
+
def file *keys
|
66
|
+
if keys.last.is_a?(Hash) && keys.length > 1
|
67
|
+
options = keys.pop
|
68
|
+
path = options[:path]
|
69
|
+
end
|
70
|
+
path ||= "features/support/fixtures"
|
71
|
+
|
62
72
|
keys.each do |key|
|
63
73
|
field key do |file|
|
64
74
|
File.open(File.join(path, file)) if file.present?
|
@@ -66,7 +76,15 @@ module Chop
|
|
66
76
|
end
|
67
77
|
end
|
68
78
|
|
69
|
-
def files *keys
|
79
|
+
def files *keys
|
80
|
+
if keys.last.is_a?(Hash) && keys.length > 1
|
81
|
+
options = keys.pop
|
82
|
+
path = options[:path]
|
83
|
+
delimiter = options[:delimiter]
|
84
|
+
end
|
85
|
+
path ||= "features/support/fixtures"
|
86
|
+
delimiter ||= " "
|
87
|
+
|
70
88
|
keys.each do |key|
|
71
89
|
field key do |paths|
|
72
90
|
paths.split(delimiter).map do |file|
|
data/lib/chop/version.rb
CHANGED