much-rails 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 604eda47d3d5c2f66e52716269d3652f8799c022187829e83c2815fcf22dfd11
4
- data.tar.gz: f765d10688da5b2a2aeb8827532806cf2c92a2bdf54fe8aedb2bcefc8304ffae
3
+ metadata.gz: 8a66a39e5898e5491c562aed8a32fb4036382a3d62485e71d45d8c946d18f622
4
+ data.tar.gz: ff4307e38c7d7d8115823189bd5d39d7799b3f4bcedc0fd5f3e39320215dfffe
5
5
  SHA512:
6
- metadata.gz: 2170ba5582c6f6eb88011b2188bcd69f89c57b05d0df8a56ab26678ab52409cda999cac0b129d1606a70770414d067f09d3b7c8702df6e451f89c40bb9079452
7
- data.tar.gz: a92cc7b6571d14e755ba60c4156c2daffe142c86c2204a60869c7d5f56130d7d265480884adc9a03dee4e90bdc07e148319593c53e900eefde62a32488c3bdf8
6
+ metadata.gz: 40877d371bdefb9fb77e370c5847a61becc905658ccaf2504066ed2092a4e0f3343e9fcf37e6e334e90155c14a6f13cea4bf1e0faaf7f893554e9b333f235ff7
7
+ data.tar.gz: 804743827c52ec702454bc5fed1999883ffaa8d7a0434c8266323f23d1fb231ed73bf2bec93b710d84797297c4cd58566209e0ba1fba09f7eb3a8cb9997a9417
@@ -31,7 +31,7 @@ module MuchRails::Action
31
31
 
32
32
  add_config :much_rails_action
33
33
 
34
- attr_reader :params, :current_user, :request, :errors
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, current_user: nil, request: nil)
115
+ def initialize(params: nil, current_session: nil, request: nil)
119
116
  @params = params.to_h.with_indifferent_access
120
- @current_user = current_user
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::Update"
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
- current_user: current_user,
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MuchRails
4
- VERSION = "0.2.6"
4
+ VERSION = "0.2.7"
5
5
  end
@@ -7,5 +7,7 @@ module Actions; end
7
7
  module Actions::Show
8
8
  include MuchRails::Action
9
9
 
10
+ format :html
11
+
10
12
  params_root :nested
11
13
  end
@@ -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.format(:html)
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
- { unit_class::ACTION_CLASS_PARAM_NAME => default_class_name }
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
- { unit_class::ACTION_CLASS_PARAM_NAME => request_type_class_name },
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: url_name,
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: url_name,
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: url_name,
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: url_name,
171
+ as: nil,
166
172
  defaults: expected_default_defaults,
167
173
  )
168
174
  end
@@ -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.tableize.singularize}"\
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
- current_user: current_user1,
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(:current_user1){ "CURRENT USER 1" }
237
+ let(:current_session1){ "CURRENT SESSION 1" }
238
238
  let(:request1){ "REQUEST 1" }
239
239
 
240
- should have_readers :params, :current_user, :request, :errors
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.current_user).equals(current_user1)
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
- current_user: nil,
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
- current_user: nil,
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
- current_user: nil,
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
- current_user: nil,
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
- current_user: nil,
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
- current_user: nil,
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
- current_user: nil,
238
+ current_session: nil,
239
239
  request: nil,
240
240
  )
241
241
  end
@@ -53,7 +53,7 @@ module MuchRails::DestroyAction
53
53
  subject do
54
54
  receiver_class.new(
55
55
  params: {},
56
- current_user: nil,
56
+ current_session: nil,
57
57
  request: nil,
58
58
  )
59
59
  end
@@ -53,7 +53,7 @@ module MuchRails::SaveAction
53
53
  subject do
54
54
  receiver_class.new(
55
55
  params: {},
56
- current_user: nil,
56
+ current_session: nil,
57
57
  request: nil,
58
58
  )
59
59
  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.6
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-03-26 00:00:00.000000000 Z
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