minimalizer 0.0.1
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +46 -0
- data/Rakefile +9 -0
- data/lib/minimalizer.rb +6 -0
- data/lib/minimalizer/controller_helpers.rb +354 -0
- data/lib/minimalizer/controller_test_helpers.rb +41 -0
- data/lib/minimalizer/engine.rb +12 -0
- data/lib/minimalizer/model_test_helpers.rb +47 -0
- data/lib/minimalizer/version.rb +3 -0
- data/test/minimalizer/controller_helpers_test.rb +11 -0
- data/test/test_helper.rb +6 -0
- metadata +103 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3cd12461b740324f36bb3072f0eeb571bd365622
|
4
|
+
data.tar.gz: 41f079b1df0c15dcdb95df53e3152ae68d504233
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 971c722baef967057363bee256938a458924e83fa36e6fcf3774e8ae291feb2f8f5222585c15580b89a807908ac4626ad70469c021fc3a89fdd085a0d437e7e8
|
7
|
+
data.tar.gz: 6e877f226ad28106c14295a8d98a6dc828c88ecf11b8d7ad6c36011c61b6957e95fb1a482e15a650b522ddd07dfd02abd5672b31b28a77b58719590924c98a60
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2015 Theodore Kimble
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# Write Ruby on Rails applications more easily with Minimalizer
|
2
|
+
|
3
|
+
Minimalizer is a lightweight Ruby on Rails engine that enables you to write more
|
4
|
+
minimal Ruby on Rails applications. Minimalizer convenience methods help you
|
5
|
+
write simpler model and controller tests and declare basic controller behaviors
|
6
|
+
with ease.
|
7
|
+
|
8
|
+
## Model Test Helpers
|
9
|
+
|
10
|
+
Added to `ActiveSupport::TestCase`:
|
11
|
+
|
12
|
+
* `assert_errors`
|
13
|
+
* `refute_errors`
|
14
|
+
* `validation_context`
|
15
|
+
|
16
|
+
See `lib/minimalizer/model_test_helpers.rb` for more detailed documentation.
|
17
|
+
|
18
|
+
## Controller Test Helpers
|
19
|
+
|
20
|
+
Added to `ActionController::TestCase`:
|
21
|
+
|
22
|
+
* `assert_redirect`
|
23
|
+
* `assert_render`
|
24
|
+
* `assert_flash`
|
25
|
+
|
26
|
+
See `lib/minimalizer/controller_test_helpers.rb` for more detailed
|
27
|
+
documentation.
|
28
|
+
|
29
|
+
## Controller Helpers
|
30
|
+
|
31
|
+
Added to `ActionController::Base`:
|
32
|
+
|
33
|
+
* `self.new_actions`
|
34
|
+
* `self.member_actions`
|
35
|
+
* `create_resource`
|
36
|
+
* `update_resource`
|
37
|
+
* `destroy_resource`
|
38
|
+
* `reorder_resources`
|
39
|
+
* `toggle_resource_boolean_on`
|
40
|
+
* `toggle_resource_boolean_off`
|
41
|
+
|
42
|
+
See `lib/minimalizer/controller_helpers.rb` for more detailed documentation.
|
43
|
+
|
44
|
+
## License
|
45
|
+
|
46
|
+
Minimalizer is released under the MIT license. Copyright 2015 Theodore Kimble.
|
data/Rakefile
ADDED
data/lib/minimalizer.rb
ADDED
@@ -0,0 +1,354 @@
|
|
1
|
+
require 'action_controller'
|
2
|
+
require 'active_support/concern'
|
3
|
+
|
4
|
+
module Minimalizer
|
5
|
+
module ControllerHelpers
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
class_methods do
|
9
|
+
# Convenience method for specifying/excluding new actions in a before
|
10
|
+
# filter.
|
11
|
+
#
|
12
|
+
# before_action only: new_actions do
|
13
|
+
# @record = Record.new
|
14
|
+
# end
|
15
|
+
def new_actions
|
16
|
+
%i[new create]
|
17
|
+
end
|
18
|
+
|
19
|
+
# Convenience method for specifying/excluding member actions in a before
|
20
|
+
# filter.
|
21
|
+
#
|
22
|
+
# before_action only: member_actions do
|
23
|
+
# @record = Record.find(params[:id])
|
24
|
+
# end
|
25
|
+
def member_actions
|
26
|
+
%i[show edit update delete destroy]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Create a new resource with the given attributes. If successful, set the
|
31
|
+
# ".notice" flash and redirect to the newly created resource; otherwise,
|
32
|
+
# set the ".alert" flash and render the new template with a 422 HTTP status
|
33
|
+
# reponse.
|
34
|
+
#
|
35
|
+
# def create
|
36
|
+
# create_resource @record, record_params
|
37
|
+
# end
|
38
|
+
#
|
39
|
+
# A resource array can be provided to affect the redirect location. Only
|
40
|
+
# the last resource will be saved.
|
41
|
+
#
|
42
|
+
# def create
|
43
|
+
# create_resource [@parent, @record], record_params
|
44
|
+
# end
|
45
|
+
#
|
46
|
+
# An optional :location argument will override the redirect location.
|
47
|
+
#
|
48
|
+
# def create
|
49
|
+
# create_resource @record, record_params, location: :records
|
50
|
+
# end
|
51
|
+
#
|
52
|
+
# Passing a block will yield true if the model saves successfully, false
|
53
|
+
# otherwise.
|
54
|
+
#
|
55
|
+
# def create
|
56
|
+
# create_resource @record, record_params do |success|
|
57
|
+
# if sucess
|
58
|
+
# # something
|
59
|
+
# else
|
60
|
+
# # something
|
61
|
+
# end
|
62
|
+
# end
|
63
|
+
# end
|
64
|
+
def create_resource(resource, attributes, location: nil)
|
65
|
+
model = resource.is_a?(Array) ? resource.last : resource
|
66
|
+
model.assign_attributes attributes
|
67
|
+
|
68
|
+
if model.save
|
69
|
+
flash.notice = t('.notice')
|
70
|
+
yield true if block_given?
|
71
|
+
redirect_to location || resource
|
72
|
+
else
|
73
|
+
flash.now.alert = t('.alert')
|
74
|
+
response.status = 422
|
75
|
+
yield false if block_given?
|
76
|
+
render :new
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
# Update an existing resource with the given attributes. If successful,
|
82
|
+
# set the ".notice" flash and redirect to the resource; otherwise, set the
|
83
|
+
# ".alert" flash and render the edit template with a 422 HTTP status
|
84
|
+
# response.
|
85
|
+
#
|
86
|
+
# def update
|
87
|
+
# update_resource @record, record_params
|
88
|
+
# end
|
89
|
+
#
|
90
|
+
# A resource array can be provided to affect the redirect location. Only
|
91
|
+
# the last resource will be updated.
|
92
|
+
#
|
93
|
+
# def update
|
94
|
+
# update_resource [@parent, @record], record_params
|
95
|
+
# end
|
96
|
+
#
|
97
|
+
# An optional :location argument will override the redirect location.
|
98
|
+
#
|
99
|
+
# def update
|
100
|
+
# update_resource @record, record_params, location: :records
|
101
|
+
# end
|
102
|
+
#
|
103
|
+
# Passing a block will yield true if the model updates successfully, false
|
104
|
+
# otherwise.
|
105
|
+
#
|
106
|
+
# def update
|
107
|
+
# update_resource @record, record_params do |success|
|
108
|
+
# if sucess
|
109
|
+
# # something
|
110
|
+
# else
|
111
|
+
# # something
|
112
|
+
# end
|
113
|
+
# end
|
114
|
+
# end
|
115
|
+
def update_resource(resource, attributes, location: nil)
|
116
|
+
model = resource.is_a?(Array) ? resource.last : resource
|
117
|
+
|
118
|
+
if model.update(attributes)
|
119
|
+
flash.notice = t('.notice')
|
120
|
+
yield true if block_given?
|
121
|
+
redirect_to location || resource
|
122
|
+
else
|
123
|
+
flash.now.alert = t('.alert')
|
124
|
+
response.status = 422
|
125
|
+
yield false if block_given?
|
126
|
+
render :edit
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
# Delete the given model.
|
131
|
+
#
|
132
|
+
# If the operation succeeds, provide a successful flash notice and
|
133
|
+
# redirect to the provided location (if given) or to the pluralized path
|
134
|
+
# of the original resource.
|
135
|
+
#
|
136
|
+
# If the operation fails, provide a failed flash alert. Then, if the
|
137
|
+
# :delete action exists, render the edit action with an
|
138
|
+
# :unprocessable_entity HTTP status; if the action does not exist,
|
139
|
+
# redirect to the original resource.
|
140
|
+
#
|
141
|
+
#
|
142
|
+
#
|
143
|
+
# Destroy an existing resource. If successful, set the ".notice" flash and
|
144
|
+
# redirect to the symbolized, plural name of the resource; otherwise, set
|
145
|
+
# the ".alert" flash and render the delete template with a 422 HTTP status
|
146
|
+
# response; if the delete action is not defined, instead redirect the
|
147
|
+
# resource.
|
148
|
+
#
|
149
|
+
# def destroy
|
150
|
+
# destroy_resource @record
|
151
|
+
# end
|
152
|
+
#
|
153
|
+
# A resource array can be provided to affect the redirect location. Only
|
154
|
+
# the last resource will be destroyed.
|
155
|
+
#
|
156
|
+
# def destroy
|
157
|
+
# destroy_resource [@parent, @record]
|
158
|
+
# end
|
159
|
+
#
|
160
|
+
# An optional :location argument will override the redirect location.
|
161
|
+
#
|
162
|
+
# def destroy
|
163
|
+
# destroy_resource @record, location: :root
|
164
|
+
# end
|
165
|
+
#
|
166
|
+
# Passing a block will yield true if the model destroys successfully, false
|
167
|
+
# otherwise.
|
168
|
+
#
|
169
|
+
# def destroy
|
170
|
+
# destroy_resource @record do |success|
|
171
|
+
# if sucess
|
172
|
+
# # something
|
173
|
+
# else
|
174
|
+
# # something
|
175
|
+
# end
|
176
|
+
# end
|
177
|
+
# end
|
178
|
+
def destroy_resource(resource, location: nil)
|
179
|
+
model = resource.is_a?(Array) ? resource.last : resource
|
180
|
+
|
181
|
+
if model.destroy
|
182
|
+
if !location
|
183
|
+
location = Array(resource)[0..-2] + [model.model_name.plural.to_sym]
|
184
|
+
end
|
185
|
+
|
186
|
+
flash.notice = t('.notice')
|
187
|
+
yield true if block_given?
|
188
|
+
redirect_to location
|
189
|
+
else
|
190
|
+
if respond_to?(:delete)
|
191
|
+
flash.now.alert = t('.alert')
|
192
|
+
response.status = 422
|
193
|
+
yield false if block_given?
|
194
|
+
render :delete
|
195
|
+
else
|
196
|
+
flash.alert = t('.alert')
|
197
|
+
yield false if block_given?
|
198
|
+
redirect_to resource
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
# Reorder the given models on the order attribute by the given attributes.
|
204
|
+
#
|
205
|
+
# If all operations succeed, provide a successful flash notice and
|
206
|
+
# redirect to the provided location (if given) or to the pluralized path
|
207
|
+
# of the first original resource.
|
208
|
+
#
|
209
|
+
# If any operation fails, provide a failed flash alert and render the
|
210
|
+
# :edit action with an :unprocessable_entity HTTP status.
|
211
|
+
#
|
212
|
+
# def update
|
213
|
+
# reorder_resources @records, record_params
|
214
|
+
# end
|
215
|
+
#
|
216
|
+
# An optional :attribute argument will override the default reording
|
217
|
+
# attribute (:position).
|
218
|
+
#
|
219
|
+
# def update
|
220
|
+
# reorder_resources @records, record_params, attribute: :ranking
|
221
|
+
# end
|
222
|
+
#
|
223
|
+
# An optional :location argument will override the redirect location.
|
224
|
+
#
|
225
|
+
# def update
|
226
|
+
# reorder_resources @records, record_params, location: :root
|
227
|
+
# end
|
228
|
+
#
|
229
|
+
# Passing a block will yield true if all models are reordered successfully,
|
230
|
+
# false otherwise.
|
231
|
+
#
|
232
|
+
# def update
|
233
|
+
# reorder_resources @records, record_params do |success|
|
234
|
+
# if sucess
|
235
|
+
# # something
|
236
|
+
# else
|
237
|
+
# # something
|
238
|
+
# end
|
239
|
+
# end
|
240
|
+
# end
|
241
|
+
def reorder_resources(resources, attributes, attribute: :position, location: nil)
|
242
|
+
models = resources.is_a?(Array) && (resources.last.is_a?(Array) || resources.last.is_a?(ActiveRecord::Relation)) ? resources.last : resources
|
243
|
+
|
244
|
+
models.each do |model|
|
245
|
+
model.update(attribute => attributes[model.id.to_s].to_i)
|
246
|
+
end
|
247
|
+
|
248
|
+
if models.all? { |model| model.errors.empty? }
|
249
|
+
if !location
|
250
|
+
if models.any?
|
251
|
+
location = Array(resources)[0..-2] + [models.first.model_name.plural.to_sym]
|
252
|
+
else
|
253
|
+
raise ArgumentError, 'Must provide one or more resources or the :location argument'
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
flash.notice = t('.notice')
|
258
|
+
yield true if block_given?
|
259
|
+
redirect_to location
|
260
|
+
else
|
261
|
+
flash.now.alert = t('.alert')
|
262
|
+
response.status = 422
|
263
|
+
yield false if block_given?
|
264
|
+
render :edit
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
268
|
+
# Toggle the given model attribute on.
|
269
|
+
#
|
270
|
+
# If the operation succeeds, provide a successful flash notice; otherwise,
|
271
|
+
# provide a failed flash alert. Redirect to the provided location (if
|
272
|
+
# given) or to the initial resource.
|
273
|
+
#
|
274
|
+
# def update
|
275
|
+
# toggle_resource_boolen_on @record, :active
|
276
|
+
# end
|
277
|
+
#
|
278
|
+
# An optional :location argument will override the redirect location.
|
279
|
+
#
|
280
|
+
# def update
|
281
|
+
# toggle_resource_boolen_on @record, :active, location: :records
|
282
|
+
# end
|
283
|
+
#
|
284
|
+
# Passing a block will yield true if the model is updated successfully,
|
285
|
+
# false otherwise.
|
286
|
+
#
|
287
|
+
# def update
|
288
|
+
# toggle_resource_boolen_on @record, :active do |success|
|
289
|
+
# if success
|
290
|
+
# # something
|
291
|
+
# else
|
292
|
+
# # something
|
293
|
+
# end
|
294
|
+
# end
|
295
|
+
# end
|
296
|
+
def toggle_resource_boolean_on(resource, attribute, location: nil)
|
297
|
+
model = resource.is_a?(Array) ? resource.last : resource
|
298
|
+
|
299
|
+
if model.update(attribute => true)
|
300
|
+
flash.notice = t('.notice')
|
301
|
+
yield true if block_given?
|
302
|
+
redirect_to location || resource
|
303
|
+
else
|
304
|
+
flash.alert = t('.alert')
|
305
|
+
yield false if block_given?
|
306
|
+
redirect_to location || resource
|
307
|
+
end
|
308
|
+
end
|
309
|
+
|
310
|
+
# Toggle the given model attribute off.
|
311
|
+
#
|
312
|
+
# If the operation succeeds, provide a successful flash notice; otherwise,
|
313
|
+
# provide a failed flash alert. Redirect to the provided location (if
|
314
|
+
# given) or to the initial resource.
|
315
|
+
#
|
316
|
+
# def update
|
317
|
+
# toggle_resource_boolen_off @record, :active
|
318
|
+
# end
|
319
|
+
#
|
320
|
+
# An optional :location argument will override the redirect location.
|
321
|
+
#
|
322
|
+
# def update
|
323
|
+
# toggle_resource_boolen_off @record, :active, location: :records
|
324
|
+
# end
|
325
|
+
#
|
326
|
+
# Passing a block will yield true if the model is updated successfully,
|
327
|
+
# false otherwise.
|
328
|
+
#
|
329
|
+
# def update
|
330
|
+
# toggle_resource_boolen_off @record, :active do |success|
|
331
|
+
# if success
|
332
|
+
# # something
|
333
|
+
# else
|
334
|
+
# # something
|
335
|
+
# end
|
336
|
+
# end
|
337
|
+
# end
|
338
|
+
def toggle_resource_boolean_off(resource, attribute, location: nil)
|
339
|
+
model = resource.is_a?(Array) ? resource.last : resource
|
340
|
+
|
341
|
+
if model.update(attribute => false)
|
342
|
+
flash.notice = t('.notice')
|
343
|
+
yield true if block_given?
|
344
|
+
redirect_to location || resource
|
345
|
+
else
|
346
|
+
flash.alert = t('.alert')
|
347
|
+
yield false if block_given?
|
348
|
+
redirect_to location || resource
|
349
|
+
end
|
350
|
+
end
|
351
|
+
end
|
352
|
+
end
|
353
|
+
|
354
|
+
ActionController::Base.send :include, Minimalizer::ControllerHelpers
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'action_controller'
|
2
|
+
require 'active_support/concern'
|
3
|
+
|
4
|
+
module Minimalizer
|
5
|
+
module ControllerTestHelpers
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
# Assert the correct redirect location is given; optionally test the
|
11
|
+
# response status and flash messages.
|
12
|
+
def assert_redirect(location, status: 302, alert: nil, notice: nil)
|
13
|
+
assert_redirected_to location
|
14
|
+
assert_response status
|
15
|
+
assert_flash :alert, alert if alert
|
16
|
+
assert_flash :notice, notice if notice
|
17
|
+
end
|
18
|
+
|
19
|
+
# Assert the correct template is rendered; optionally test the response
|
20
|
+
# status and flash messages.
|
21
|
+
def assert_render(template, status: 200, alert: nil, notice: nil)
|
22
|
+
assert_template template
|
23
|
+
assert_response status
|
24
|
+
assert_flash :alert, alert if alert
|
25
|
+
assert_flash :notice, notice if notice
|
26
|
+
end
|
27
|
+
|
28
|
+
# Assert that the flash variant (e.g. :notice) is equal to the local
|
29
|
+
# translation for the given key.
|
30
|
+
def assert_flash(variant, key)
|
31
|
+
assert_equal I18n.t(key, scope: local_translation_scope), flash[variant]
|
32
|
+
end
|
33
|
+
|
34
|
+
# Local translation scope for the current controller and action.
|
35
|
+
def local_translation_scope
|
36
|
+
[@controller.controller_path.split('/'), @controller.action_name].flatten.compact.join('.')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
ActionController::TestCase.send :include, Minimalizer::ControllerTestHelpers
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'active_model'
|
2
|
+
require 'active_model/errors_details'
|
3
|
+
require 'active_support/concern'
|
4
|
+
|
5
|
+
module Minimalizer
|
6
|
+
module ModelTestHelpers
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
# Assert that the given model‘s attribute contains errors. If error details
|
12
|
+
# are provided, assert that each provided set of details is found on the
|
13
|
+
# model’s attribute.
|
14
|
+
def assert_errors(attribute, model, *error_details)
|
15
|
+
model.valid?(@_validation_context)
|
16
|
+
assert_not_empty model.errors[attribute]
|
17
|
+
|
18
|
+
if error_details.any?
|
19
|
+
model_error_details = model.errors.details[attribute]
|
20
|
+
model_errors = model_error_details.map { |d| d[:error] }
|
21
|
+
|
22
|
+
error_details.each do |details|
|
23
|
+
if details.keys == [:error]
|
24
|
+
assert_includes model_errors, details[:error], "Expected error details to include error #{details[:error]}; found #{model_errors}."
|
25
|
+
else
|
26
|
+
assert_includes model_error_details, details, "Expected error details to include #{details}: Found #{model_error_details}."
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Refute that the given model‘s attribute contains any errors.
|
33
|
+
def refute_errors(attribute, model)
|
34
|
+
model.valid?(@_validation_context)
|
35
|
+
assert_empty model.errors[attribute]
|
36
|
+
end
|
37
|
+
|
38
|
+
# Set the validation context used during model error assertions.
|
39
|
+
def validation_context(context)
|
40
|
+
@_validation_context = context
|
41
|
+
yield
|
42
|
+
@_validation_context = nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
ActiveSupport::TestCase.send :include, Minimalizer::ModelTestHelpers
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class Minimalizer::ControllerHelpersTest < Minitest::Test
|
4
|
+
def test_new_actions
|
5
|
+
assert_equal %i[new create], ActionController::Base.new_actions
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_member_actions
|
9
|
+
assert_equal %i[show edit update delete destroy], ActionController::Base.member_actions
|
10
|
+
end
|
11
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: minimalizer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Theodore Kimble
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-02-07 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rack-test
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rails
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4.2'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: active_model-errors_details
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.1'
|
55
|
+
description: |2
|
56
|
+
Minimalizer is a lightweight Ruby on Rails engine that enables you to write
|
57
|
+
more minimal Ruby on Rails applications. Minimalizer convenience methods
|
58
|
+
help you write simpler model and controller tests and declare basic
|
59
|
+
controller behaviors with ease.
|
60
|
+
email:
|
61
|
+
- mail@theodorekimble.com
|
62
|
+
executables: []
|
63
|
+
extensions: []
|
64
|
+
extra_rdoc_files: []
|
65
|
+
files:
|
66
|
+
- MIT-LICENSE
|
67
|
+
- README.md
|
68
|
+
- Rakefile
|
69
|
+
- lib/minimalizer.rb
|
70
|
+
- lib/minimalizer/controller_helpers.rb
|
71
|
+
- lib/minimalizer/controller_test_helpers.rb
|
72
|
+
- lib/minimalizer/engine.rb
|
73
|
+
- lib/minimalizer/model_test_helpers.rb
|
74
|
+
- lib/minimalizer/version.rb
|
75
|
+
- test/minimalizer/controller_helpers_test.rb
|
76
|
+
- test/test_helper.rb
|
77
|
+
homepage: https://github.com/theodorekimble/minimalizer
|
78
|
+
licenses:
|
79
|
+
- MIT
|
80
|
+
metadata: {}
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options: []
|
83
|
+
require_paths:
|
84
|
+
- lib
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
requirements: []
|
96
|
+
rubyforge_project:
|
97
|
+
rubygems_version: 2.4.5
|
98
|
+
signing_key:
|
99
|
+
specification_version: 4
|
100
|
+
summary: Write Ruby on Rails applications more easily with Minimalizer
|
101
|
+
test_files:
|
102
|
+
- test/minimalizer/controller_helpers_test.rb
|
103
|
+
- test/test_helper.rb
|