much-rails 0.2.6 → 0.2.7
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 +4 -4
- data/lib/much-rails/action.rb +8 -7
- data/lib/much-rails/action/base_router.rb +19 -1
- data/lib/much-rails/action/controller.rb +1 -1
- data/lib/much-rails/action/router.rb +6 -2
- data/lib/much-rails/version.rb +1 -1
- data/test/support/actions/show.rb +2 -0
- data/test/unit/action/base_router_tests.rb +24 -0
- data/test/unit/action/controller_tests.rb +5 -2
- data/test/unit/action/router_tests.rb +12 -6
- data/test/unit/action_tests.rb +17 -5
- data/test/unit/change_action_tests.rb +7 -7
- data/test/unit/destroy_action_tests.rb +1 -1
- data/test/unit/save_action_tests.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a66a39e5898e5491c562aed8a32fb4036382a3d62485e71d45d8c946d18f622
|
4
|
+
data.tar.gz: ff4307e38c7d7d8115823189bd5d39d7799b3f4bcedc0fd5f3e39320215dfffe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40877d371bdefb9fb77e370c5847a61becc905658ccaf2504066ed2092a4e0f3343e9fcf37e6e334e90155c14a6f13cea4bf1e0faaf7f893554e9b333f235ff7
|
7
|
+
data.tar.gz: 804743827c52ec702454bc5fed1999883ffaa8d7a0434c8266323f23d1fb231ed73bf2bec93b710d84797297c4cd58566209e0ba1fba09f7eb3a8cb9997a9417
|
data/lib/much-rails/action.rb
CHANGED
@@ -31,7 +31,7 @@ module MuchRails::Action
|
|
31
31
|
|
32
32
|
add_config :much_rails_action
|
33
33
|
|
34
|
-
attr_reader :params, :
|
34
|
+
attr_reader :params, :current_session, :request, :errors
|
35
35
|
end
|
36
36
|
|
37
37
|
mixin_class_methods do
|
@@ -107,17 +107,14 @@ module MuchRails::Action
|
|
107
107
|
|
108
108
|
def default_action_template_name
|
109
109
|
@default_action_template_name ||=
|
110
|
-
to_s
|
111
|
-
.remove(/\A#{MuchRails.config.action.namespace}/)
|
112
|
-
.tableize
|
113
|
-
.singularize
|
110
|
+
to_s.remove(/\A#{MuchRails.config.action.namespace}/).underscore
|
114
111
|
end
|
115
112
|
end
|
116
113
|
|
117
114
|
mixin_instance_methods do
|
118
|
-
def initialize(params: nil,
|
115
|
+
def initialize(params: nil, current_session: nil, request: nil)
|
119
116
|
@params = params.to_h.with_indifferent_access
|
120
|
-
@
|
117
|
+
@current_session = current_session
|
121
118
|
@request = request
|
122
119
|
@errors = Hash.new{ |hash, key| hash[key] = [] }
|
123
120
|
end
|
@@ -257,6 +254,10 @@ module MuchRails::Action
|
|
257
254
|
template: template || default_action_template_name,
|
258
255
|
}.merge(**kargs)
|
259
256
|
|
257
|
+
if view_model&.respond_to?(:much_rails_action=)
|
258
|
+
view_model.much_rails_action = self
|
259
|
+
end
|
260
|
+
|
260
261
|
@much_rails_action_result =
|
261
262
|
MuchRails::Action::RenderResult.new(view_model, *args, **result_kargs)
|
262
263
|
halt
|
@@ -149,7 +149,7 @@ class MuchRails::Action::BaseRouter
|
|
149
149
|
# get "/new", "Root::New"
|
150
150
|
# post "/", "Root::Create"
|
151
151
|
# get "/edit", "Root::Edit"
|
152
|
-
# put "/", "Root::
|
152
|
+
# put "/", "Root::Upsert"
|
153
153
|
# patch "/", "Root::Update"
|
154
154
|
# get "/remove", "Root::Remove"
|
155
155
|
# delete "/", "Root::Destroy"
|
@@ -301,6 +301,14 @@ class MuchRails::Action::BaseRouter
|
|
301
301
|
def constraints_lambda
|
302
302
|
request_type.constraints_lambda
|
303
303
|
end
|
304
|
+
|
305
|
+
def class_constant
|
306
|
+
@class_constant ||= class_name.constantize
|
307
|
+
end
|
308
|
+
|
309
|
+
def format
|
310
|
+
class_constant.format
|
311
|
+
end
|
304
312
|
end
|
305
313
|
|
306
314
|
class URLSet
|
@@ -460,6 +468,16 @@ class MuchRails::Action::BaseRouter
|
|
460
468
|
!@default_action_class_name.nil?
|
461
469
|
end
|
462
470
|
|
471
|
+
def default_action_class_constant
|
472
|
+
return unless has_default_action_class_name?
|
473
|
+
|
474
|
+
@default_action_class_constant ||= default_action_class_name.constantize
|
475
|
+
end
|
476
|
+
|
477
|
+
def default_action_format
|
478
|
+
default_action_class_constant&.format
|
479
|
+
end
|
480
|
+
|
463
481
|
def ==(other)
|
464
482
|
return super unless other.is_a?(self.class)
|
465
483
|
|
@@ -32,7 +32,7 @@ module MuchRails::Action::Controller
|
|
32
32
|
result =
|
33
33
|
much_rails_action_class.call(
|
34
34
|
params: much_rails_action_params,
|
35
|
-
|
35
|
+
current_session: current_session,
|
36
36
|
request: request,
|
37
37
|
)
|
38
38
|
instance_exec(result, &result.execute_block)
|
@@ -52,16 +52,19 @@ class MuchRails::Action::Router < MuchRails::Action::BaseRouter
|
|
52
52
|
draw_url_to = "#{controller_name}##{CONTROLLER_NOT_FOUND_METHOD_NAME}"
|
53
53
|
draw_route_to = "#{controller_name}##{CONTROLLER_CALL_ACTION_METHOD_NAME}"
|
54
54
|
|
55
|
+
definition_names = Set.new
|
56
|
+
|
55
57
|
definitions.each do |definition|
|
56
58
|
definition.request_type_actions.each do |request_type_action|
|
57
59
|
application_routes_draw_scope.public_send(
|
58
60
|
definition.http_method,
|
59
61
|
definition.path,
|
60
62
|
to: draw_route_to,
|
61
|
-
as: definition.name,
|
63
|
+
as: (definition.name if definition_names.add?(definition.name)),
|
62
64
|
defaults:
|
63
65
|
definition.default_params.merge({
|
64
66
|
ACTION_CLASS_PARAM_NAME => request_type_action.class_name,
|
67
|
+
"format" => request_type_action.format,
|
65
68
|
}),
|
66
69
|
constraints: request_type_action.constraints_lambda,
|
67
70
|
)
|
@@ -73,10 +76,11 @@ class MuchRails::Action::Router < MuchRails::Action::BaseRouter
|
|
73
76
|
definition.http_method,
|
74
77
|
definition.path,
|
75
78
|
to: draw_route_to,
|
76
|
-
as: definition.name,
|
79
|
+
as: (definition.name if definition_names.add?(definition.name)),
|
77
80
|
defaults:
|
78
81
|
definition.default_params.merge({
|
79
82
|
ACTION_CLASS_PARAM_NAME => definition.default_action_class_name,
|
83
|
+
"format" => definition.default_action_format,
|
80
84
|
}),
|
81
85
|
)
|
82
86
|
end
|
data/lib/much-rails/version.rb
CHANGED
@@ -296,20 +296,30 @@ class MuchRails::Action::BaseRouter
|
|
296
296
|
desc "when init"
|
297
297
|
subject{ request_type_action_class.new(request_type1, action_class_name1) }
|
298
298
|
|
299
|
+
setup do
|
300
|
+
Assert.stub(action_class_name1, :constantize){ action_class1 }
|
301
|
+
end
|
302
|
+
|
299
303
|
let(:name1){ Factory.symbol }
|
300
304
|
let(:constraints_lambda1){ ->(request){} }
|
301
305
|
let(:request_type1) do
|
302
306
|
unit_class::RequestType.new(name1, constraints_lambda1)
|
303
307
|
end
|
304
308
|
let(:action_class_name1){ Factory.string }
|
309
|
+
let(:action_class1) do
|
310
|
+
Struct.new(:format).new([:html, :any].sample)
|
311
|
+
end
|
305
312
|
|
306
313
|
should have_imeths :request_type, :class_name, :constraints_lambda
|
314
|
+
should have_imeths :class_constant, :format
|
307
315
|
|
308
316
|
should "know its attributes" do
|
309
317
|
assert_that(subject.request_type).equals(request_type1)
|
310
318
|
assert_that(subject.class_name).equals(action_class_name1)
|
311
319
|
assert_that(subject.constraints_lambda)
|
312
320
|
.equals(request_type1.constraints_lambda)
|
321
|
+
assert_that(subject.class_constant).equals(action_class1)
|
322
|
+
assert_that(subject.format).equals(subject.class_constant.format)
|
313
323
|
end
|
314
324
|
end
|
315
325
|
|
@@ -506,6 +516,15 @@ class MuchRails::Action::BaseRouter
|
|
506
516
|
)
|
507
517
|
end
|
508
518
|
|
519
|
+
setup do
|
520
|
+
Assert.stub(default_action_class_name1, :constantize) do
|
521
|
+
default_action_class1
|
522
|
+
end
|
523
|
+
end
|
524
|
+
|
525
|
+
let(:default_action_class1) do
|
526
|
+
Struct.new(:format).new([:html, :any].sample)
|
527
|
+
end
|
509
528
|
let(:default_params1) do
|
510
529
|
{ Factory.string => Factory.string }
|
511
530
|
end
|
@@ -514,6 +533,7 @@ class MuchRails::Action::BaseRouter
|
|
514
533
|
should have_readers :default_action_class_name, :request_type_actions
|
515
534
|
should have_readers :called_from
|
516
535
|
should have_imeths :path, :name, :has_default_action_class_name?
|
536
|
+
should have_imeths :default_action_class_constant, :default_action_format
|
517
537
|
|
518
538
|
should "know its attributes" do
|
519
539
|
assert_that(subject.http_method).equals(http_method1)
|
@@ -525,6 +545,10 @@ class MuchRails::Action::BaseRouter
|
|
525
545
|
assert_that(subject.called_from).equals(caller1)
|
526
546
|
assert_that(subject.path).equals(url_path1)
|
527
547
|
assert_that(subject.name).equals(url_name1)
|
548
|
+
assert_that(subject.default_action_class_constant)
|
549
|
+
.equals(default_action_class1)
|
550
|
+
assert_that(subject.default_action_format)
|
551
|
+
.equals(subject.default_action_class_constant.format)
|
528
552
|
end
|
529
553
|
end
|
530
554
|
end
|
@@ -35,6 +35,10 @@ module MuchRails::Action::Controller
|
|
35
35
|
desc "when init"
|
36
36
|
subject{ receiver_class.new(params1) }
|
37
37
|
|
38
|
+
setup do
|
39
|
+
Assert.stub(::Actions::Show, :format){ nil }
|
40
|
+
end
|
41
|
+
|
38
42
|
let(:params1) do
|
39
43
|
{
|
40
44
|
MuchRails::Action::Router::ACTION_CLASS_PARAM_NAME => "Actions::Show",
|
@@ -75,10 +79,9 @@ module MuchRails::Action::Controller
|
|
75
79
|
|
76
80
|
assert_that(subject.much_rails_action_class).equals(Actions::Show)
|
77
81
|
|
78
|
-
Actions::Show
|
82
|
+
Assert.stub(::Actions::Show, :format){ :html }
|
79
83
|
receiver = receiver_class.new(params1)
|
80
84
|
assert_that(receiver.much_rails_action_class_format).equals(:html)
|
81
|
-
Actions::Show.format(nil)
|
82
85
|
end
|
83
86
|
end
|
84
87
|
|
@@ -104,7 +104,10 @@ class MuchRails::Action::Router
|
|
104
104
|
"#{subject.controller_name}"\
|
105
105
|
"##{unit_class::CONTROLLER_CALL_ACTION_METHOD_NAME}"
|
106
106
|
expected_default_defaults =
|
107
|
-
{
|
107
|
+
{
|
108
|
+
unit_class::ACTION_CLASS_PARAM_NAME => default_class_name,
|
109
|
+
"format" => :html,
|
110
|
+
}
|
108
111
|
|
109
112
|
assert_that(application_routes.get_calls.size).equals(3)
|
110
113
|
assert_that(application_routes.get_calls[0].pargs).equals([url_path])
|
@@ -113,14 +116,17 @@ class MuchRails::Action::Router
|
|
113
116
|
to: expected_draw_route_to,
|
114
117
|
as: url_name,
|
115
118
|
defaults:
|
116
|
-
{
|
119
|
+
{
|
120
|
+
unit_class::ACTION_CLASS_PARAM_NAME => request_type_class_name,
|
121
|
+
"format" => :html,
|
122
|
+
},
|
117
123
|
constraints: request_type_proc,
|
118
124
|
)
|
119
125
|
assert_that(application_routes.get_calls[1].pargs).equals([url_path])
|
120
126
|
assert_that(application_routes.get_calls[1].kargs)
|
121
127
|
.equals(
|
122
128
|
to: expected_draw_route_to,
|
123
|
-
as:
|
129
|
+
as: nil,
|
124
130
|
defaults: expected_default_defaults,
|
125
131
|
)
|
126
132
|
assert_that(application_routes.get_calls[2].pargs).equals([url2_path])
|
@@ -135,7 +141,7 @@ class MuchRails::Action::Router
|
|
135
141
|
assert_that(application_routes.post_calls.last.kargs)
|
136
142
|
.equals(
|
137
143
|
to: expected_draw_route_to,
|
138
|
-
as:
|
144
|
+
as: nil,
|
139
145
|
defaults: expected_default_defaults,
|
140
146
|
)
|
141
147
|
|
@@ -153,7 +159,7 @@ class MuchRails::Action::Router
|
|
153
159
|
assert_that(application_routes.patch_calls.last.kargs)
|
154
160
|
.equals(
|
155
161
|
to: expected_draw_route_to,
|
156
|
-
as:
|
162
|
+
as: nil,
|
157
163
|
defaults: expected_default_defaults,
|
158
164
|
)
|
159
165
|
|
@@ -162,7 +168,7 @@ class MuchRails::Action::Router
|
|
162
168
|
assert_that(application_routes.delete_calls.last.kargs)
|
163
169
|
.equals(
|
164
170
|
to: expected_draw_route_to,
|
165
|
-
as:
|
171
|
+
as: nil,
|
166
172
|
defaults: expected_default_defaults,
|
167
173
|
)
|
168
174
|
end
|
data/test/unit/action_tests.rb
CHANGED
@@ -167,7 +167,7 @@ module MuchRails::Action
|
|
167
167
|
assert_that(subject.default_action_template_name)
|
168
168
|
.equals(
|
169
169
|
"some/namespace/for/"\
|
170
|
-
"#{MuchRails.config.action.namespace.
|
170
|
+
"#{MuchRails.config.action.namespace.underscore}"\
|
171
171
|
"thing/show",
|
172
172
|
)
|
173
173
|
end
|
@@ -178,7 +178,7 @@ module MuchRails::Action
|
|
178
178
|
subject do
|
179
179
|
receiver_class.new(
|
180
180
|
params: params1,
|
181
|
-
|
181
|
+
current_session: current_session1,
|
182
182
|
request: request1,
|
183
183
|
)
|
184
184
|
end
|
@@ -234,15 +234,15 @@ module MuchRails::Action
|
|
234
234
|
active: "true",
|
235
235
|
}
|
236
236
|
end
|
237
|
-
let(:
|
237
|
+
let(:current_session1){ "CURRENT SESSION 1" }
|
238
238
|
let(:request1){ "REQUEST 1" }
|
239
239
|
|
240
|
-
should have_readers :params, :
|
240
|
+
should have_readers :params, :current_session, :request, :errors
|
241
241
|
should have_imeths :on_call, :valid_action?, :successful_action?
|
242
242
|
|
243
243
|
should "know its attributes" do
|
244
244
|
assert_that(subject.params).equals(params1.with_indifferent_access)
|
245
|
-
assert_that(subject.
|
245
|
+
assert_that(subject.current_session).equals(current_session1)
|
246
246
|
assert_that(subject.request).equals(request1)
|
247
247
|
end
|
248
248
|
|
@@ -318,6 +318,7 @@ module MuchRails::Action
|
|
318
318
|
layout: false,
|
319
319
|
)
|
320
320
|
|
321
|
+
view_model = Object.new
|
321
322
|
receiver_class.on_call do
|
322
323
|
render(view_model, "some/view/template", layout: false)
|
323
324
|
end
|
@@ -330,18 +331,29 @@ module MuchRails::Action
|
|
330
331
|
layout: false,
|
331
332
|
)
|
332
333
|
|
334
|
+
view_model =
|
335
|
+
Class
|
336
|
+
.new{
|
337
|
+
def much_rails_action
|
338
|
+
"NOT A MUCH RAILS ACTION"
|
339
|
+
end
|
340
|
+
}
|
341
|
+
.new
|
333
342
|
receiver_class.on_call do
|
334
343
|
render(view_model, "some/view/template", template: "other/template")
|
335
344
|
end
|
336
345
|
action = receiver_class.new(params: params1)
|
337
346
|
result = action.call
|
338
347
|
assert_that(result.render_view_model).is(view_model)
|
348
|
+
assert_that(result.render_view_model.much_rails_action).is_not(action)
|
339
349
|
assert_that(result.render_kargs).equals(template: "other/template")
|
340
350
|
|
351
|
+
view_model = Struct.new(:much_rails_action).new(nil)
|
341
352
|
receiver_class.on_call{ render(view_model, template: "other/template") }
|
342
353
|
action = receiver_class.new(params: params1)
|
343
354
|
result = action.call
|
344
355
|
assert_that(result.render_view_model).is(view_model)
|
356
|
+
assert_that(result.render_view_model.much_rails_action).is(action)
|
345
357
|
assert_that(result.render_kargs).equals(template: "other/template")
|
346
358
|
end
|
347
359
|
|
@@ -61,7 +61,7 @@ module MuchRails::ChangeAction
|
|
61
61
|
subject do
|
62
62
|
receiver_class.new(
|
63
63
|
params: {},
|
64
|
-
|
64
|
+
current_session: nil,
|
65
65
|
request: nil,
|
66
66
|
)
|
67
67
|
end
|
@@ -87,7 +87,7 @@ module MuchRails::ChangeAction
|
|
87
87
|
subject do
|
88
88
|
receiver_class.new(
|
89
89
|
params: {},
|
90
|
-
|
90
|
+
current_session: nil,
|
91
91
|
request: nil,
|
92
92
|
)
|
93
93
|
end
|
@@ -121,7 +121,7 @@ module MuchRails::ChangeAction
|
|
121
121
|
subject do
|
122
122
|
receiver_class.new(
|
123
123
|
params: {},
|
124
|
-
|
124
|
+
current_session: nil,
|
125
125
|
request: nil,
|
126
126
|
)
|
127
127
|
end
|
@@ -152,7 +152,7 @@ module MuchRails::ChangeAction
|
|
152
152
|
subject do
|
153
153
|
receiver_class.new(
|
154
154
|
params: {},
|
155
|
-
|
155
|
+
current_session: nil,
|
156
156
|
request: nil,
|
157
157
|
)
|
158
158
|
end
|
@@ -181,7 +181,7 @@ module MuchRails::ChangeAction
|
|
181
181
|
subject do
|
182
182
|
receiver_class.new(
|
183
183
|
params: {},
|
184
|
-
|
184
|
+
current_session: nil,
|
185
185
|
request: nil,
|
186
186
|
)
|
187
187
|
end
|
@@ -208,7 +208,7 @@ module MuchRails::ChangeAction
|
|
208
208
|
subject do
|
209
209
|
receiver_class.new(
|
210
210
|
params: {},
|
211
|
-
|
211
|
+
current_session: nil,
|
212
212
|
request: nil,
|
213
213
|
)
|
214
214
|
end
|
@@ -235,7 +235,7 @@ module MuchRails::ChangeAction
|
|
235
235
|
subject do
|
236
236
|
receiver_class.new(
|
237
237
|
params: {},
|
238
|
-
|
238
|
+
current_session: nil,
|
239
239
|
request: nil,
|
240
240
|
)
|
241
241
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: much-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kelly Redding
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-
|
12
|
+
date: 2021-04-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: much-style-guide
|