simple_action 1.0.2 → 1.0.3

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MWQxOTQ2YzM0ODJmYmI4NWMzZTUxYjIxZDg3M2Q1ZTNmNmUxMTgxMA==
4
+ OTk3Nzg3MTBhMmRmMmIwZjJkNWIxZDBjODA5ZjdjZWE1YWU2ZGIwYw==
5
5
  data.tar.gz: !binary |-
6
- MjYwMTI3ZDc3MWM3ZmUzNjMyZmU5MmMzYTUzYWIyZjI5Zjg1MjY4NA==
6
+ YTJlNzYyMDI1ZGJiM2ExODE0MzRlNmEyMTY0MGIzMWU4YjI1NGViNg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZDkwZjUxMGYwYjJmMTM4YjgzNTg5ZDQ3ZmZmNjU3NDVlZTUwOGU1YzRhOTVh
10
- YmUxMjVhY2RkMjFmMzBmMWZhNDk0NDljMjQ3ODdmNjljOWY0Yzk4NWZkMTAy
11
- ZjdlOGMzY2U4OTk4ODNiMjA5ZjEyNTBlNjVjNmE5MDg5MjU5MTA=
9
+ M2UxODIxMzk4NTFiMDc3NThjYWFlMTQ5YTUyOGRhZmVmOTI5Mzk2MzdjNzU0
10
+ MGE3OThhNzY2NTc4ZmFkNjJkYTZkNjUwNWE3YWJhMGU5MTc1N2Q5MGMwNTA0
11
+ YTk5Njg3ZWIwMmY1MDc0OWE2NDZmMjMyY2QwNzliMTJkYzdiMjI=
12
12
  data.tar.gz: !binary |-
13
- M2QyYjVmODA1ZmE5OTM3YTBmY2E3ODU3NDE1MjBkZDk3Mjg5MTMwYzViMTBm
14
- OTgzNDdmNjE0NjFkYmVhNmFkNWZkNDI1Mzg1ZDRmMGRmZThkNjY5ZGQ0YjA3
15
- YzYxMjkyNmI4N2FlZjE2YjdkOWZiZGMxODdiNmJiYmVkZTM1Nzk=
13
+ NWM0ZWQyMTUyOTc4Mjk3MzdkODU2MmNiYWQ2MmQ4Mzg1MTU0NzA5ZDJjOGZh
14
+ NDdlN2ZjNGFmNjZkZGQ3NTNlMWJkZjI0M2QzYzhjMDIzOGJhMjQ3NWI0ODMw
15
+ OTQ3MWE1MDM2ODFmOWU4NTE5MDI0MGY5NzA2N2Y5YjM3ODNlZTk=
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- simple_action (0.0.1.pre5)
5
- simple_params (>= 0.0.3, < 1.0)
4
+ simple_action (1.0.2)
5
+ simple_params (>= 1.0.1, < 2.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
@@ -30,7 +30,7 @@ GEM
30
30
  equalizer (0.0.11)
31
31
  i18n (0.7.0)
32
32
  ice_nine (0.11.1)
33
- json (1.8.2)
33
+ json (1.8.3)
34
34
  method_source (0.8.2)
35
35
  minitest (5.7.0)
36
36
  pry (0.10.1)
@@ -48,7 +48,7 @@ GEM
48
48
  rspec-mocks (2.99.3)
49
49
  shoulda-matchers (2.8.0)
50
50
  activesupport (>= 3.0.0)
51
- simple_params (0.0.5)
51
+ simple_params (1.0.1)
52
52
  activemodel (>= 3.0, < 5.0)
53
53
  shoulda-matchers (~> 2.8)
54
54
  virtus (>= 1.0.0)
@@ -12,7 +12,10 @@ module SimpleAction
12
12
  def run(params = {})
13
13
  instance = self.new(params)
14
14
  result = transaction do
15
- instance.execute if instance.valid?
15
+ if instance.valid?
16
+ outcome = instance.execute
17
+ instance.errors.empty? ? outcome : nil
18
+ end
16
19
  end
17
20
  Response.new(instance, result)
18
21
  end
@@ -30,7 +33,7 @@ module SimpleAction
30
33
  def initialize(params={})
31
34
  @raw_params = params
32
35
  @params = self.class.params_class.new(params)
33
- @validity = nil
36
+ @initial_params_valid = nil
34
37
  end
35
38
 
36
39
  def params
@@ -38,13 +41,7 @@ module SimpleAction
38
41
  end
39
42
 
40
43
  def valid?
41
- # Adding this so that I don't assert validity each time.
42
- # TODO: I Still need a proper test for this.
43
- if @validity.nil?
44
- @validity = @params.valid?
45
- else
46
- @validity
47
- end
44
+ initial_params_valid? && errors.empty?
48
45
  end
49
46
 
50
47
  def errors
@@ -54,5 +51,14 @@ module SimpleAction
54
51
  def execute
55
52
  raise ImplementationError, "subclasses must implement 'execute' method."
56
53
  end
54
+
55
+ private
56
+ def initial_params_valid?
57
+ if @initial_params_valid.nil?
58
+ @initial_params_valid = @params.valid?
59
+ else
60
+ @initial_params_valid
61
+ end
62
+ end
57
63
  end
58
64
  end
@@ -1,3 +1,3 @@
1
1
  module SimpleAction
2
- VERSION = "1.0.2"
2
+ VERSION = "1.0.3"
3
3
  end
@@ -14,7 +14,12 @@ describe "SimpleAction acceptance spec" do
14
14
  end
15
15
 
16
16
  def execute
17
- name.upcase
17
+ name.gsub!(/[^a-zA-Z ]/,'')
18
+ if name == "outlier"
19
+ errors.add(:name, "can't be outlier")
20
+ else
21
+ name.upcase
22
+ end
18
23
  end
19
24
  end
20
25
 
@@ -41,12 +46,17 @@ describe "SimpleAction acceptance spec" do
41
46
 
42
47
  it { should be_nil }
43
48
  end
49
+
50
+ describe "effects" do
51
+ end
44
52
  end
45
53
 
46
54
  context "with invalid params" do
55
+ let!(:name) { "sdfg" }
56
+
47
57
  let(:params) do
48
58
  {
49
- name: "sdfg"
59
+ name: name
50
60
  }
51
61
  end
52
62
 
@@ -66,12 +76,21 @@ describe "SimpleAction acceptance spec" do
66
76
 
67
77
  it { should be_nil }
68
78
  end
79
+
80
+ describe "effects" do
81
+ it "does not alter name" do
82
+ SimpleActionAcceptance.run(params)
83
+ name.should eq("sdfg")
84
+ end
85
+ end
69
86
  end
70
87
 
71
88
  context "with valid params" do
89
+ let!(:name) { "billy12" }
90
+
72
91
  let(:params) do
73
92
  {
74
- name: "billy"
93
+ name: name
75
94
  }
76
95
  end
77
96
 
@@ -87,5 +106,46 @@ describe "SimpleAction acceptance spec" do
87
106
 
88
107
  it { should eq("BILLY") }
89
108
  end
109
+
110
+ describe "effects" do
111
+ it "strips numbers from name" do
112
+ SimpleActionAcceptance.run(params)
113
+ name.should eq("billy")
114
+ end
115
+ end
116
+ end
117
+
118
+ context "with outlier case" do
119
+ let!(:name) { "outlier12" }
120
+
121
+ let(:params) do
122
+ {
123
+ name: name
124
+ }
125
+ end
126
+
127
+ describe "outcome" do
128
+ subject { SimpleActionAcceptance.run(params) }
129
+
130
+ it { should_not be_valid }
131
+ it { should_not be_success }
132
+
133
+ it "should have name error", failing: true do
134
+ subject.errors[:name].should eq(["can't be outlier"])
135
+ end
136
+ end
137
+
138
+ describe "result" do
139
+ subject { SimpleActionAcceptance.run(params).result }
140
+
141
+ it { should be_nil }
142
+ end
143
+
144
+ describe "effects" do
145
+ it "alter names" do
146
+ SimpleActionAcceptance.run(params)
147
+ name.should eq("outlier")
148
+ end
149
+ end
90
150
  end
91
151
  end
data/spec/params_spec.rb CHANGED
@@ -166,12 +166,12 @@ describe SimpleAction::Params do
166
166
  param:reference, Object, desc:'', required: false
167
167
  param :name, String, desc: '', required: true
168
168
  param :age, Integer, desc: '', required: false
169
- param :color, String, desc: '', required: true
169
+ param :color, String, desc: '', required: false
170
170
  param :address, Hash, desc: '', required: true do
171
171
  param :street, String, desc: '', required: true
172
172
  param :city, String, desc: '', required: true
173
173
  param :zip_code, String, desc: '', required: false
174
- param :state, String, desc: '', required: true
174
+ param :state, String, desc: '', required: false
175
175
  end
176
176
  API_PIE_DOCS
177
177
 
data/spec/service_spec.rb CHANGED
@@ -35,7 +35,7 @@ describe SimpleAction::Service do
35
35
  outcome.should be_success
36
36
  end
37
37
 
38
- it "has result equal to output of execute", failing: true do
38
+ it "has result equal to output of execute" do
39
39
  outcome.result.should eq(41)
40
40
  end
41
41
 
@@ -65,7 +65,7 @@ describe SimpleAction::Service do
65
65
 
66
66
  describe "#api_pie_documentation", api_pie_documentation: true do
67
67
  it "equals params api_pie_documentation" do
68
- ServiceSpecClass.api_pie_documentation.should eq("param :name, String, desc: '', required: true\nparam :age, Integer, desc: '', required: true")
68
+ ServiceSpecClass.api_pie_documentation.should eq("param :name, String, desc: '', required: true\nparam :age, Integer, desc: '', required: false")
69
69
  end
70
70
  end
71
71
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_action
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - brycesenz