chop 0.23.8 → 0.26.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +4 -1
- data/README.md +3 -3
- data/lib/chop/create.rb +18 -2
- data/lib/chop/diff.rb +5 -1
- data/lib/chop/dsl.rb +8 -2
- data/lib/chop/form.rb +16 -1
- data/lib/chop/version.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: bee1ec352644193eeff10aabf667030259daaef55aaf4e0e7adcbfe3af6f53f1
|
4
|
+
data.tar.gz: a07d1ce3c87efb2be5a59c5ad7be173ee8b92f0f869b2764d9dabb92e0840eac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b74cb6aafd7b59f8c705220afd644e2295a5355d4f98cd05aff588455dcc9a818406650f4de5f9063802df172cb817c3b7d4994d45e6cc26b9050cae88207e4
|
7
|
+
data.tar.gz: 3b2752804004fc1676c10881f67a9178fdcb42e2d19fd0e8efcf8dbf73686b55cb652026633c9732452347211f8b15f5d7349e5fd0cfe8084eb3e2b7bb738b33
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -18,7 +18,7 @@ end
|
|
18
18
|
Chop monkeypatches Cucumber tables with three new methods:
|
19
19
|
|
20
20
|
* `#create!`: Creates entities. Built-in support for ActiveRecord (default) and FactoryGirl, at present.
|
21
|
-
* `#diff!`: Enhances existing method to also accept a CSS selector. Currently supports diffing `<table>`, `<dl>`, `<ul>`, and even `<form>`!.
|
21
|
+
* `#diff!`: Enhances existing method to also accept a capybara element, or a CSS selector pointing to one. Currently supports diffing `<table>`, `<dl>`, `<ul>`, and even `<form>`!.
|
22
22
|
* `#fill_in!`: Fills in a form on the current page.
|
23
23
|
|
24
24
|
All these methods accept blocks for customization.
|
@@ -33,8 +33,8 @@ Transform the attributes hash derived from the table before passing to `ActiveRe
|
|
33
33
|
|
34
34
|
High-level declarative transformations:
|
35
35
|
|
36
|
-
* `#file`: Replaces a file path with a file handle. Looks in `features/support/fixtures` by default.
|
37
|
-
* `#files`: Replaces a space-delimited list of file paths with an array of file handles. Looks in `features/support/fixtures` by default.
|
36
|
+
* `#file`: Replaces a file path with a file handle. Looks in `features/support/fixtures` by default. Set `upload: true` to wrap file in `Rack::Test::UploadedFile`.
|
37
|
+
* `#files`: Replaces a space-delimited list of file paths with an array of file handles. Looks in `features/support/fixtures` by default. Set `upload: true` to wrap file in `Rack::Test::UploadedFile`.
|
38
38
|
* `#has_one/#belongs_to`: Replaces an entity name with that entity. Uses `.find_by_name` by default.
|
39
39
|
* `#has_many`: Replaces a comma-delimited list of entity names with an array of those entities. Uses `.find_by_name` by default.
|
40
40
|
* `#underscore_keys`: Converts all hash keys to underscored versions.
|
data/lib/chop/create.rb
CHANGED
@@ -117,12 +117,20 @@ module Chop
|
|
117
117
|
def file *keys
|
118
118
|
options = extract_options!(keys)
|
119
119
|
path = options.fetch(:path, "features/support/fixtures")
|
120
|
+
upload = options.fetch(:upload, false)
|
120
121
|
|
121
122
|
handle_renames! keys
|
122
123
|
|
123
124
|
keys.each do |key|
|
124
125
|
field key do |file|
|
125
|
-
|
126
|
+
if file.present?
|
127
|
+
file_path = File.join(path, file)
|
128
|
+
if upload
|
129
|
+
Rack::Test::UploadedFile.new(file_path)
|
130
|
+
else
|
131
|
+
File.open(file_path)
|
132
|
+
end
|
133
|
+
end
|
126
134
|
end
|
127
135
|
end
|
128
136
|
end
|
@@ -130,6 +138,7 @@ module Chop
|
|
130
138
|
def files *keys
|
131
139
|
options = extract_options!(keys)
|
132
140
|
path = options.fetch(:path, "features/support/fixtures")
|
141
|
+
upload = options.fetch(:upload, false)
|
133
142
|
delimiter = options.fetch(:delimiter, " ")
|
134
143
|
|
135
144
|
handle_renames! keys
|
@@ -137,13 +146,19 @@ module Chop
|
|
137
146
|
keys.each do |key|
|
138
147
|
field key do |paths|
|
139
148
|
paths.split(delimiter).map do |file|
|
140
|
-
File.
|
149
|
+
file_path = File.join(path, file)
|
150
|
+
if upload
|
151
|
+
Rack::Test::UploadedFile.new(file_path)
|
152
|
+
else
|
153
|
+
File.open(file_path)
|
154
|
+
end
|
141
155
|
end
|
142
156
|
end
|
143
157
|
end
|
144
158
|
end
|
145
159
|
|
146
160
|
def has_many key, klass=nil, delimiter: ", ", name_field: :name
|
161
|
+
klass ||= key.to_s.classify.constantize
|
147
162
|
field key do |names|
|
148
163
|
names.split(delimiter).map do |name|
|
149
164
|
klass.find_by!(name_field => name)
|
@@ -152,6 +167,7 @@ module Chop
|
|
152
167
|
end
|
153
168
|
|
154
169
|
def has_one key, klass=nil, name_field: :name
|
170
|
+
klass ||= key.to_s.classify.constantize
|
155
171
|
field key do |name|
|
156
172
|
klass.find_by!(name_field => name) if name.present?
|
157
173
|
end
|
data/lib/chop/diff.rb
CHANGED
@@ -157,7 +157,11 @@ module Chop
|
|
157
157
|
|
158
158
|
def root
|
159
159
|
@root ||= begin
|
160
|
-
|
160
|
+
if selector.is_a?(Capybara::Node::Element)
|
161
|
+
selector
|
162
|
+
else
|
163
|
+
session.find(selector)
|
164
|
+
end
|
161
165
|
rescue Capybara::ElementNotFound
|
162
166
|
raise unless @allow_not_found
|
163
167
|
Node("")
|
data/lib/chop/dsl.rb
CHANGED
@@ -7,7 +7,13 @@ module Chop
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def diff! selector, table, session: Capybara.current_session, as: nil, &block
|
10
|
-
class_name =
|
10
|
+
class_name = if as
|
11
|
+
as.to_s
|
12
|
+
elsif selector.respond_to?(:tag_name)
|
13
|
+
selector.tag_name
|
14
|
+
else
|
15
|
+
session.find(selector).tag_name
|
16
|
+
end.camelize
|
11
17
|
klass = const_get("Chop::#{class_name}")
|
12
18
|
klass.diff! selector, table, session: session, &block
|
13
19
|
end
|
@@ -25,7 +31,7 @@ if defined?(Cucumber::MultilineArgument::DataTable)
|
|
25
31
|
end
|
26
32
|
|
27
33
|
def diff! other_table="table", options={}, &block
|
28
|
-
if other_table.is_a?(String) && !other_table.include?("|")
|
34
|
+
if other_table.respond_to?(:tag_name) || (other_table.is_a?(String) && !other_table.include?("|"))
|
29
35
|
Chop.diff! other_table, self, options, &block
|
30
36
|
else
|
31
37
|
super
|
data/lib/chop/form.rb
CHANGED
@@ -8,7 +8,18 @@ module Chop
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.diff! selector, table, session: Capybara.current_session, &block
|
11
|
-
|
11
|
+
root = begin
|
12
|
+
if selector.is_a?(Capybara::Node::Element)
|
13
|
+
selector
|
14
|
+
else
|
15
|
+
session.find(selector)
|
16
|
+
end
|
17
|
+
rescue Capybara::ElementNotFound
|
18
|
+
raise unless @allow_not_found
|
19
|
+
Node("")
|
20
|
+
end
|
21
|
+
|
22
|
+
all_fields = root.all("input, textarea, select")
|
12
23
|
relevant_fields = all_fields.inject([]) do |fields, field|
|
13
24
|
next fields if field[:name].blank?
|
14
25
|
next fields if field[:type] == "submit"
|
@@ -102,6 +113,10 @@ module Chop
|
|
102
113
|
end
|
103
114
|
end
|
104
115
|
|
116
|
+
def get_value
|
117
|
+
checkboxes.select(&:checked?).map(&:value).join(", ")
|
118
|
+
end
|
119
|
+
|
105
120
|
private
|
106
121
|
|
107
122
|
def checkboxes
|
data/lib/chop/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.26.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Micah Geisel
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -141,8 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
141
141
|
- !ruby/object:Gem::Version
|
142
142
|
version: '0'
|
143
143
|
requirements: []
|
144
|
-
|
145
|
-
rubygems_version: 2.6.14
|
144
|
+
rubygems_version: 3.0.3
|
146
145
|
signing_key:
|
147
146
|
specification_version: 4
|
148
147
|
summary: Slice and dice your cucumber tables with ease!
|