much-rails 0.1.0 → 0.2.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 +4 -4
- data/lib/much-rails.rb +8 -0
- data/lib/much-rails/action/base_router.rb +33 -13
- data/lib/much-rails/action/controller.rb +24 -3
- data/lib/much-rails/action/router.rb +10 -2
- data/lib/much-rails/destroy_service.rb +42 -5
- data/lib/much-rails/layout.rb +29 -2
- data/lib/much-rails/records/validate_destroy.rb +23 -13
- data/lib/much-rails/save_service.rb +44 -7
- data/lib/much-rails/service_validation_errors.rb +41 -0
- data/lib/much-rails/version.rb +1 -1
- data/much-rails.gemspec +1 -1
- data/test/support/fake_action_controller.rb +1 -1
- data/test/unit/action/base_router_tests.rb +13 -10
- data/test/unit/action/controller_tests.rb +19 -46
- data/test/unit/action/router_tests.rb +23 -7
- data/test/unit/destroy_service_tests.rb +165 -21
- data/test/unit/layout_tests.rb +24 -18
- data/test/unit/much-rails_tests.rb +42 -1
- data/test/unit/records/always_destroyable_tests.rb +1 -1
- data/test/unit/records/not_destroyable_tests.rb +1 -1
- data/test/unit/records/validate_destroy_tests.rb +84 -4
- data/test/unit/save_service_tests.rb +180 -20
- data/test/unit/service_validation_errors_tests.rb +107 -0
- metadata +9 -5
@@ -0,0 +1,107 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class MuchRails::ServiceValidationErrors
|
4
|
+
class UnitTests < Assert::Context
|
5
|
+
desc "MuchRails::ServiceValidationErrors"
|
6
|
+
subject{ unit_class }
|
7
|
+
|
8
|
+
let(:unit_class){ MuchRails::ServiceValidationErrors }
|
9
|
+
end
|
10
|
+
|
11
|
+
class InitTests < UnitTests
|
12
|
+
desc "when init"
|
13
|
+
subject{ unit_class.new }
|
14
|
+
|
15
|
+
should have_readers :hash
|
16
|
+
should have_imeths :add, :exception_classes, :result_for
|
17
|
+
end
|
18
|
+
|
19
|
+
class InitAddTests < InitTests
|
20
|
+
desc "#add"
|
21
|
+
|
22
|
+
let(:exception_class){ StandardError }
|
23
|
+
let(:block){ proc{ MuchResult.failure } }
|
24
|
+
|
25
|
+
let(:invalid_exception_class) do
|
26
|
+
[
|
27
|
+
Class.new,
|
28
|
+
Factory.string,
|
29
|
+
nil,
|
30
|
+
].sample
|
31
|
+
end
|
32
|
+
|
33
|
+
should "add an exception class and block" do
|
34
|
+
subject.add(exception_class, &block)
|
35
|
+
assert_that(subject.hash[exception_class]).is(block)
|
36
|
+
end
|
37
|
+
|
38
|
+
should "raise an error when it's not passed an Exception" do
|
39
|
+
assert_that{
|
40
|
+
subject.add(invalid_exception_class, &block)
|
41
|
+
}.raises(ArgumentError)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class InitExceptionClassesTests < InitTests
|
46
|
+
desc "#exception_classes"
|
47
|
+
|
48
|
+
setup do
|
49
|
+
exception_classes.each do |exception_class|
|
50
|
+
subject.add(exception_class, &block)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
let(:exception_classes) do
|
55
|
+
[
|
56
|
+
StandardError,
|
57
|
+
ArgumentError,
|
58
|
+
RuntimeError,
|
59
|
+
]
|
60
|
+
end
|
61
|
+
let(:block){ proc{ MuchResult.failure } }
|
62
|
+
|
63
|
+
should "return all the added exception classes" do
|
64
|
+
assert_that(subject.exception_classes).equals(exception_classes)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
class InitResultForTests < InitTests
|
69
|
+
desc "#result_for"
|
70
|
+
|
71
|
+
setup do
|
72
|
+
subject.add(exception_class, &block)
|
73
|
+
end
|
74
|
+
|
75
|
+
let(:exception){ exception_class.new(Factory.string) }
|
76
|
+
let(:exception_class){ StandardError }
|
77
|
+
let(:block) do
|
78
|
+
proc{ MuchResult.failure(error_message: failure_result_error_message) }
|
79
|
+
end
|
80
|
+
let(:failure_result_error_message){ Factory.string }
|
81
|
+
|
82
|
+
let(:inherited_exception){ RuntimeError.new(Factory.string) }
|
83
|
+
|
84
|
+
let(:invalid_exception){ Exception.new(Factory.string) }
|
85
|
+
|
86
|
+
should "return the result of calling the added block "\
|
87
|
+
"for the exception class" do
|
88
|
+
result = subject.result_for(exception)
|
89
|
+
assert_that(result.failure?).is_true
|
90
|
+
assert_that(result.error_message).equals(failure_result_error_message)
|
91
|
+
end
|
92
|
+
|
93
|
+
should "return the result of calling the added block "\
|
94
|
+
"for an exception class ancestor" do
|
95
|
+
result = subject.result_for(exception)
|
96
|
+
assert_that(result.failure?).is_true
|
97
|
+
assert_that(result.error_message).equals(failure_result_error_message)
|
98
|
+
end
|
99
|
+
|
100
|
+
should "raise an error if a block hasn't been added "\
|
101
|
+
"for the exception class" do
|
102
|
+
assert_that{
|
103
|
+
subject.result_for(invalid_exception)
|
104
|
+
}.raises(ArgumentError)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
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.1
|
4
|
+
version: 0.2.1
|
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-01-
|
12
|
+
date: 2021-01-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: much-style-guide
|
@@ -31,14 +31,14 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 2.19.
|
34
|
+
version: 2.19.5
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 2.19.
|
41
|
+
version: 2.19.5
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rails
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -291,6 +291,7 @@ files:
|
|
291
291
|
- lib/much-rails/save_action.rb
|
292
292
|
- lib/much-rails/save_service.rb
|
293
293
|
- lib/much-rails/service.rb
|
294
|
+
- lib/much-rails/service_validation_errors.rb
|
294
295
|
- lib/much-rails/time.rb
|
295
296
|
- lib/much-rails/version.rb
|
296
297
|
- lib/much-rails/view_models.rb
|
@@ -343,6 +344,7 @@ files:
|
|
343
344
|
- test/unit/save_action_tests.rb
|
344
345
|
- test/unit/save_service_tests.rb
|
345
346
|
- test/unit/service_tests.rb
|
347
|
+
- test/unit/service_validation_errors_tests.rb
|
346
348
|
- test/unit/time_tests.rb
|
347
349
|
- test/unit/view_models/breadcrumb_tests.rb
|
348
350
|
- test/unit/wrap_and_call_method_tests.rb
|
@@ -367,7 +369,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
367
369
|
- !ruby/object:Gem::Version
|
368
370
|
version: '0'
|
369
371
|
requirements: []
|
370
|
-
|
372
|
+
rubyforge_project:
|
373
|
+
rubygems_version: 2.7.6.2
|
371
374
|
signing_key:
|
372
375
|
specification_version: 4
|
373
376
|
summary: Rails utilities.
|
@@ -416,6 +419,7 @@ test_files:
|
|
416
419
|
- test/unit/save_action_tests.rb
|
417
420
|
- test/unit/save_service_tests.rb
|
418
421
|
- test/unit/service_tests.rb
|
422
|
+
- test/unit/service_validation_errors_tests.rb
|
419
423
|
- test/unit/time_tests.rb
|
420
424
|
- test/unit/view_models/breadcrumb_tests.rb
|
421
425
|
- test/unit/wrap_and_call_method_tests.rb
|