chop 0.23.8 → 0.26.0
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 +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!
|