rest_my_case 1.3.5 → 1.5.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 +4 -4
- data/console +16 -0
- data/lib/rest_my_case.rb +9 -6
- data/lib/rest_my_case/base.rb +35 -16
- data/lib/rest_my_case/config/base.rb +0 -2
- data/lib/rest_my_case/config/general.rb +4 -5
- data/lib/rest_my_case/{trial_case/context.rb → context/base.rb} +10 -8
- data/lib/rest_my_case/defense_attorney/base.rb +18 -34
- data/lib/rest_my_case/judge/base.rb +12 -12
- data/lib/rest_my_case/trial/case.rb +28 -0
- data/lib/rest_my_case/trial/court.rb +19 -0
- data/lib/rest_my_case/trial/defendant.rb +8 -0
- data/lib/rest_my_case/version.rb +1 -1
- data/spec/rest_my_case/base_spec.rb +331 -52
- data/spec/rest_my_case/defense_attorney/base_spec.rb +9 -85
- data/spec/rest_my_case/trial_case/court_spec.rb +26 -0
- data/spec/support/perform.rb +35 -94
- metadata +9 -7
- data/lib/rest_my_case/config/shared.rb +0 -12
- data/lib/rest_my_case/trial_case/base.rb +0 -25
- data/spec/rest_my_case/trial_case/base_spec.rb +0 -37
@@ -3,12 +3,15 @@ require 'spec_helper'
|
|
3
3
|
describe RestMyCase::DefenseAttorney::Base do
|
4
4
|
|
5
5
|
let(:use_cases) do
|
6
|
+
trial_case = RestMyCase::Trial::Case.new(use_case_classes, id: 1)
|
7
|
+
|
6
8
|
described_class.new(trial_case).build_case_for_the_defendant
|
7
9
|
|
8
10
|
trial_case.use_cases
|
9
11
|
end
|
10
12
|
|
11
13
|
shared_examples "a porper shepherd" do |dependencies|
|
14
|
+
|
12
15
|
it "use_cases should be in the proper order" do
|
13
16
|
dependencies.each_with_index do |dependency, index|
|
14
17
|
expect(use_cases[index]).to be_a dependency
|
@@ -22,62 +25,14 @@ describe RestMyCase::DefenseAttorney::Base do
|
|
22
25
|
end
|
23
26
|
end
|
24
27
|
end
|
25
|
-
end
|
26
|
-
|
27
|
-
context "When a use case depends on other use cases" do
|
28
|
-
let(:trial_case) { RestMyCase::TrialCase::Base.new(DefenseAttorney::UseCaseWrapper, id: 1) }
|
29
28
|
|
30
|
-
it_behaves_like "a porper shepherd", [
|
31
|
-
DefenseAttorney::BuilEvent,
|
32
|
-
DefenseAttorney::SaveEvent,
|
33
|
-
DefenseAttorney::CreateEvent,
|
34
|
-
DefenseAttorney::LogEvents,
|
35
|
-
DefenseAttorney::AnalyseEvents,
|
36
|
-
DefenseAttorney::UseCaseWrapper
|
37
|
-
]
|
38
|
-
end
|
39
|
-
|
40
|
-
context "When a use case inherits from another that also has its own dependencies" do
|
41
|
-
let(:trial_case) { RestMyCase::TrialCase::Base.new DefenseAttorney::CreatePostWithComments, id: 1 }
|
42
|
-
|
43
|
-
it_behaves_like "a porper shepherd", [
|
44
|
-
DefenseAttorney::BuilEvent,
|
45
|
-
DefenseAttorney::SaveEvent,
|
46
|
-
DefenseAttorney::CreateEvent,
|
47
|
-
DefenseAttorney::LogEvents,
|
48
|
-
DefenseAttorney::AnalyseEvents,
|
49
|
-
DefenseAttorney::UseCaseWrapper,
|
50
|
-
DefenseAttorney::BuildPost,
|
51
|
-
DefenseAttorney::SavePost,
|
52
|
-
DefenseAttorney::CreatePost,
|
53
|
-
DefenseAttorney::BuildComments,
|
54
|
-
DefenseAttorney::SaveComments,
|
55
|
-
DefenseAttorney::CreateComments,
|
56
|
-
DefenseAttorney::CreatePostWithComments
|
57
|
-
]
|
58
29
|
end
|
59
30
|
|
60
|
-
context "When
|
61
|
-
let(:trial_case) { RestMyCase::TrialCase::Base.new DefenseAttorney::CreatePostWithComments, id: 1 }
|
62
|
-
|
63
|
-
before do
|
64
|
-
RestMyCase.configure do |config|
|
65
|
-
config.parent_dependencies_first = false
|
66
|
-
end
|
67
|
-
end
|
31
|
+
context "When a use case depends on other use cases" do
|
68
32
|
|
69
|
-
|
33
|
+
let(:use_case_classes) { [DefenseAttorney::UseCaseWrapper] }
|
70
34
|
|
71
35
|
it_behaves_like "a porper shepherd", [
|
72
|
-
DefenseAttorney::BuildComments,
|
73
|
-
DefenseAttorney::SaveComments,
|
74
|
-
DefenseAttorney::CreateComments,
|
75
|
-
DefenseAttorney::CreatePostWithComments,
|
76
|
-
|
77
|
-
DefenseAttorney::BuildPost,
|
78
|
-
DefenseAttorney::SavePost,
|
79
|
-
DefenseAttorney::CreatePost,
|
80
|
-
|
81
36
|
DefenseAttorney::BuilEvent,
|
82
37
|
DefenseAttorney::SaveEvent,
|
83
38
|
DefenseAttorney::CreateEvent,
|
@@ -85,52 +40,20 @@ describe RestMyCase::DefenseAttorney::Base do
|
|
85
40
|
DefenseAttorney::AnalyseEvents,
|
86
41
|
DefenseAttorney::UseCaseWrapper
|
87
42
|
]
|
88
|
-
end
|
89
|
-
|
90
|
-
context "When general configuration has dependencies_first = false" do
|
91
|
-
let(:trial_case) { RestMyCase::TrialCase::Base.new DefenseAttorney::CreatePostWithComments, id: 1 }
|
92
|
-
|
93
|
-
before do
|
94
|
-
RestMyCase.configure do |config|
|
95
|
-
config.dependencies_first = false
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
after { RestMyCase.reset_config }
|
100
43
|
|
101
|
-
it_behaves_like "a porper shepherd", [
|
102
|
-
DefenseAttorney::UseCaseWrapper,
|
103
|
-
DefenseAttorney::LogEvents,
|
104
|
-
DefenseAttorney::BuilEvent,
|
105
|
-
DefenseAttorney::CreateEvent,
|
106
|
-
DefenseAttorney::SaveEvent,
|
107
|
-
DefenseAttorney::AnalyseEvents,
|
108
|
-
DefenseAttorney::CreatePost,
|
109
|
-
DefenseAttorney::BuildPost,
|
110
|
-
DefenseAttorney::SavePost,
|
111
|
-
DefenseAttorney::CreatePostWithComments,
|
112
|
-
DefenseAttorney::BuildComments,
|
113
|
-
DefenseAttorney::CreateComments,
|
114
|
-
DefenseAttorney::SaveComments
|
115
|
-
]
|
116
44
|
end
|
117
45
|
|
118
|
-
context "When
|
119
|
-
let(:trial_case) { RestMyCase::TrialCase::Base.new DefenseAttorney::CreatePostWithComments, id: 1 }
|
120
|
-
|
121
|
-
before do
|
122
|
-
DefenseAttorney::UseCaseWrapper.dependencies_first = false
|
123
|
-
end
|
46
|
+
context "When a use case inherits from another that also has dependencies" do
|
124
47
|
|
125
|
-
|
48
|
+
let(:use_case_classes) { [DefenseAttorney::CreatePostWithComments] }
|
126
49
|
|
127
50
|
it_behaves_like "a porper shepherd", [
|
128
|
-
DefenseAttorney::UseCaseWrapper,
|
129
51
|
DefenseAttorney::BuilEvent,
|
130
52
|
DefenseAttorney::SaveEvent,
|
131
53
|
DefenseAttorney::CreateEvent,
|
132
54
|
DefenseAttorney::LogEvents,
|
133
55
|
DefenseAttorney::AnalyseEvents,
|
56
|
+
DefenseAttorney::UseCaseWrapper,
|
134
57
|
DefenseAttorney::BuildPost,
|
135
58
|
DefenseAttorney::SavePost,
|
136
59
|
DefenseAttorney::CreatePost,
|
@@ -139,6 +62,7 @@ describe RestMyCase::DefenseAttorney::Base do
|
|
139
62
|
DefenseAttorney::CreateComments,
|
140
63
|
DefenseAttorney::CreatePostWithComments
|
141
64
|
]
|
65
|
+
|
142
66
|
end
|
143
67
|
|
144
68
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RestMyCase::Trial::Court do
|
4
|
+
|
5
|
+
context "When using Judge::Base and DefenseAttorney::Base" do
|
6
|
+
before do
|
7
|
+
@trial_court = described_class.new RestMyCase::Judge::Base, RestMyCase::DefenseAttorney::Base
|
8
|
+
end
|
9
|
+
|
10
|
+
context "When something that responds to #to_hash is passed down" do
|
11
|
+
|
12
|
+
let(:context) { @trial_court.execute([Object], id: 1, name: '2').context }
|
13
|
+
|
14
|
+
it "should create a context with it" do
|
15
|
+
expect(context).to be_a RestMyCase::Context::Base
|
16
|
+
end
|
17
|
+
|
18
|
+
it "context should contain the attributes passed down" do
|
19
|
+
expect(context.id).to be 1
|
20
|
+
expect(context.name).to eq '2'
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
data/spec/support/perform.rb
CHANGED
@@ -1,120 +1,61 @@
|
|
1
1
|
module Perform
|
2
2
|
|
3
|
-
class
|
4
|
-
def
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
context.
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
context.
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
context.
|
24
|
-
|
25
|
-
|
26
|
-
def perform
|
27
|
-
context.perform << self.class.name
|
28
|
-
end
|
29
|
-
|
30
|
-
def rollback
|
31
|
-
context.rollback << self.class.name
|
3
|
+
class UseCaseWrapper < RestMyCase::Base
|
4
|
+
def flow_control(method)
|
5
|
+
id = "#{self.class.name}_#{method}"
|
6
|
+
|
7
|
+
context.fail ||= []
|
8
|
+
context.fail_bang ||= []
|
9
|
+
context.skip ||= []
|
10
|
+
context.skip_bang ||= []
|
11
|
+
context.abort ||= []
|
12
|
+
context.abort_bang ||= []
|
13
|
+
context.setup ||= []
|
14
|
+
context.perform ||= []
|
15
|
+
context.rollback ||= []
|
16
|
+
context.final ||= []
|
17
|
+
|
18
|
+
fail if context.fail.include? id
|
19
|
+
fail! if context.fail_bang.include? id
|
20
|
+
skip if context.skip.include? id
|
21
|
+
skip! if context.skip_bang.include? id
|
22
|
+
abort if context.abort.include? id
|
23
|
+
abort! if context.abort_bang.include? id
|
24
|
+
|
25
|
+
context.send(method) << self.class.name
|
32
26
|
end
|
33
27
|
|
34
|
-
def final
|
35
|
-
context.final << self.class.name
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
class Validations < RestMyCase::Base
|
40
|
-
depends ValidateName, ValidateBody
|
41
|
-
|
42
28
|
def setup
|
43
|
-
|
29
|
+
flow_control :setup
|
44
30
|
end
|
45
31
|
|
46
32
|
def perform
|
47
|
-
|
33
|
+
flow_control :perform
|
48
34
|
end
|
49
35
|
|
50
36
|
def rollback
|
51
|
-
|
37
|
+
flow_control :rollback
|
52
38
|
end
|
53
39
|
|
54
40
|
def final
|
55
|
-
|
41
|
+
flow_control :final
|
56
42
|
end
|
57
43
|
end
|
58
44
|
|
59
|
-
class
|
60
|
-
def setup
|
61
|
-
context.setup = []
|
62
|
-
context.perform = []
|
63
|
-
context.rollback = []
|
64
|
-
context.final = []
|
65
|
-
|
66
|
-
context.setup << self.class.name
|
67
|
-
end
|
68
|
-
|
69
|
-
def perform
|
70
|
-
context.perform << self.class.name
|
71
|
-
end
|
45
|
+
class ValidateName < UseCaseWrapper; end
|
72
46
|
|
73
|
-
|
74
|
-
context.rollback << self.class.name
|
75
|
-
end
|
47
|
+
class ValidateBody < UseCaseWrapper; end
|
76
48
|
|
77
|
-
|
78
|
-
|
79
|
-
end
|
49
|
+
class Validations < UseCaseWrapper
|
50
|
+
depends ValidateName, ValidateBody
|
80
51
|
end
|
81
52
|
|
82
|
-
class
|
83
|
-
def setup
|
84
|
-
context.setup << self.class.name
|
85
|
-
end
|
86
|
-
|
87
|
-
def perform
|
88
|
-
context.perform << self.class.name
|
89
|
-
end
|
90
|
-
|
91
|
-
def rollback
|
92
|
-
context.rollback << self.class.name
|
93
|
-
end
|
53
|
+
class BuildPost < UseCaseWrapper; end
|
94
54
|
|
95
|
-
|
96
|
-
context.final << self.class.name
|
97
|
-
end
|
98
|
-
end
|
55
|
+
class SavePost < UseCaseWrapper; end
|
99
56
|
|
100
|
-
class CreatePost <
|
57
|
+
class CreatePost < UseCaseWrapper
|
101
58
|
depends BuildPost, Validations, SavePost
|
102
|
-
|
103
|
-
def setup
|
104
|
-
context.setup << self.class.name
|
105
|
-
end
|
106
|
-
|
107
|
-
def perform
|
108
|
-
context.perform << self.class.name
|
109
|
-
end
|
110
|
-
|
111
|
-
def rollback
|
112
|
-
context.rollback << self.class.name
|
113
|
-
end
|
114
|
-
|
115
|
-
def final
|
116
|
-
context.final << self.class.name
|
117
|
-
end
|
118
59
|
end
|
119
60
|
|
120
|
-
end
|
61
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rest_my_case
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- goncalvesjoao
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -81,21 +81,23 @@ files:
|
|
81
81
|
- LICENSE.txt
|
82
82
|
- README.md
|
83
83
|
- Rakefile
|
84
|
+
- console
|
84
85
|
- lib/rest_my_case.rb
|
85
86
|
- lib/rest_my_case/base.rb
|
86
87
|
- lib/rest_my_case/config/base.rb
|
87
88
|
- lib/rest_my_case/config/general.rb
|
88
|
-
- lib/rest_my_case/
|
89
|
+
- lib/rest_my_case/context/base.rb
|
89
90
|
- lib/rest_my_case/defense_attorney/base.rb
|
90
91
|
- lib/rest_my_case/errors.rb
|
91
92
|
- lib/rest_my_case/judge/base.rb
|
92
|
-
- lib/rest_my_case/
|
93
|
-
- lib/rest_my_case/
|
93
|
+
- lib/rest_my_case/trial/case.rb
|
94
|
+
- lib/rest_my_case/trial/court.rb
|
95
|
+
- lib/rest_my_case/trial/defendant.rb
|
94
96
|
- lib/rest_my_case/version.rb
|
95
97
|
- rest_my_case.gemspec
|
96
98
|
- spec/rest_my_case/base_spec.rb
|
97
99
|
- spec/rest_my_case/defense_attorney/base_spec.rb
|
98
|
-
- spec/rest_my_case/trial_case/
|
100
|
+
- spec/rest_my_case/trial_case/court_spec.rb
|
99
101
|
- spec/spec_helper.rb
|
100
102
|
- spec/support/defense_attorney.rb
|
101
103
|
- spec/support/perform.rb
|
@@ -127,7 +129,7 @@ summary: Quick and light "The Clean Architecture" use case implementation.
|
|
127
129
|
test_files:
|
128
130
|
- spec/rest_my_case/base_spec.rb
|
129
131
|
- spec/rest_my_case/defense_attorney/base_spec.rb
|
130
|
-
- spec/rest_my_case/trial_case/
|
132
|
+
- spec/rest_my_case/trial_case/court_spec.rb
|
131
133
|
- spec/spec_helper.rb
|
132
134
|
- spec/support/defense_attorney.rb
|
133
135
|
- spec/support/perform.rb
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module RestMyCase
|
2
|
-
module TrialCase
|
3
|
-
|
4
|
-
class Base
|
5
|
-
|
6
|
-
attr_reader :defendant, :context
|
7
|
-
|
8
|
-
attr_accessor :use_cases
|
9
|
-
|
10
|
-
def initialize(defendant, attributes = {})
|
11
|
-
attributes ||= {}
|
12
|
-
|
13
|
-
unless attributes.respond_to?(:to_hash)
|
14
|
-
raise ArgumentError.new('Must respond_to method #to_hash')
|
15
|
-
end
|
16
|
-
|
17
|
-
@context = Context.new attributes.to_hash
|
18
|
-
@defendant = defendant
|
19
|
-
@use_cases = []
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe RestMyCase::TrialCase::Base do
|
4
|
-
|
5
|
-
context "When something that doesn't responds to #to_hash is passed down" do
|
6
|
-
it "should raise an exception" do
|
7
|
-
expect { described_class.new(Object, Object.new) }.to \
|
8
|
-
raise_error(ArgumentError)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
context "When nil is passed down" do
|
13
|
-
it "should NOT raise an exception" do
|
14
|
-
expect { described_class.new(Object, nil) }.not_to raise_error
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
context "When nothing is passed down" do
|
19
|
-
it "should NOT raise an exception" do
|
20
|
-
expect { described_class.new(Object) }.not_to raise_error
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
context "When something that responds to #to_hash is passed down" do
|
25
|
-
let(:context) { described_class.new(Object, id: 1, name: '2').context }
|
26
|
-
|
27
|
-
it "should create a context with it" do
|
28
|
-
expect(context).to be_a RestMyCase::TrialCase::Context
|
29
|
-
end
|
30
|
-
|
31
|
-
it "context should contain the attributes passed down" do
|
32
|
-
expect(context.id).to be 1
|
33
|
-
expect(context.name).to eq '2'
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|