rest_my_case 1.8.0 → 1.9.0

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
  SHA1:
3
- metadata.gz: bdc2ff5446307048245a590af2738b7a9c3dfd0a
4
- data.tar.gz: 1f1cd1627ccedba6bc30fbd88ebe4c003b40ec03
3
+ metadata.gz: b3806b834670a2c8eb80d7fd00ef3923afee77ed
4
+ data.tar.gz: 94a6d4365d873c9a48bf677f5531b9b7e973d4f9
5
5
  SHA512:
6
- metadata.gz: c5e9cc9a07735380243bdbcfd0286c3195d689b8929cfa8543f7023cbe10d2b01e0b298924af10b52112a5ac18210d4c155116b064ec2254063ea8574552a6c1
7
- data.tar.gz: 08822e4218e6f181dac013047c3e1219e0040d6f4d271c1b8a77e3e2fbb98d10867ac5bbb3feebf78ea8a0573cc95966a7e54bce175636fdfb041deaea2b004b
6
+ metadata.gz: 068a0cfdca202c28835aaece3c99b8efd36a3ae38d4c01c04c9db9673a966f1de84743f6278b116fdcaa3a222afae945c0be3d56381936cfef25103bbf100b9c
7
+ data.tar.gz: c580aa1241f136e325f7ed3d2db9e878a93c17761b902841dcb54628db413128086071066109d71c3b90ebaf32159d8e221315194765ced3ae86e1298a4141b4
data/lib/rest_my_case.rb CHANGED
@@ -2,7 +2,7 @@ require 'ostruct'
2
2
 
3
3
  require 'rest_my_case/version'
4
4
  require 'rest_my_case/helpers'
5
- require 'rest_my_case/errors'
5
+ require 'rest_my_case/errors/base'
6
6
  require 'rest_my_case/config/base'
7
7
  require 'rest_my_case/config/general'
8
8
  require 'rest_my_case/defense_attorney/base'
@@ -10,6 +10,7 @@ require 'rest_my_case/context/base'
10
10
  require 'rest_my_case/context/status/matcher'
11
11
  require 'rest_my_case/context/status/status'
12
12
  require 'rest_my_case/context/status/base'
13
+ require 'rest_my_case/context/http_status'
13
14
  require 'rest_my_case/judge/base'
14
15
  require 'rest_my_case/trial/case'
15
16
  require 'rest_my_case/trial/court'
@@ -25,7 +26,8 @@ require 'rest_my_case/accusation_attorneys/presence'
25
26
  require 'rest_my_case/accusation_attorneys/numericality'
26
27
 
27
28
  require 'rest_my_case/base'
28
- require 'rest_my_case/with_status'
29
+ require 'rest_my_case/status'
30
+ require 'rest_my_case/http_status'
29
31
  require 'rest_my_case/validator'
30
32
 
31
33
  module RestMyCase
@@ -0,0 +1,68 @@
1
+ module RestMyCase
2
+ module Context
3
+
4
+ class HttpStatus < Status::Base
5
+
6
+ RAILS_HTTP_STATUS = {
7
+ continue: 100,
8
+ switching_protocols: 101,
9
+ processing: 102,
10
+ ok: 200,
11
+ created: 201,
12
+ accepted: 202,
13
+ non_authoritative_information: 203,
14
+ no_content: 204,
15
+ reset_content: 205,
16
+ partial_content: 206,
17
+ multi_status: 207,
18
+ im_used: 226,
19
+ multiple_choices: 300,
20
+ moved_permanently: 301,
21
+ found: 302,
22
+ see_other: 303,
23
+ not_modified: 304,
24
+ use_proxy: 305,
25
+ temporary_redirect: 307,
26
+ bad_request: 400,
27
+ unauthorized: 401,
28
+ payment_required: 402,
29
+ forbidden: 403,
30
+ not_found: 404,
31
+ method_not_allowed: 405,
32
+ not_acceptable: 406,
33
+ proxy_authentication_required: 407,
34
+ request_timeout: 408,
35
+ conflict: 409,
36
+ gone: 410,
37
+ length_required: 411,
38
+ precondition_failed: 412,
39
+ request_entity_too_large: 413,
40
+ request_uri_too_long: 414,
41
+ unsupported_media_type: 415,
42
+ requested_range_not_satisfiable: 416,
43
+ expectation_failed: 417,
44
+ unprocessable_entity: 422,
45
+ locked: 423,
46
+ failed_dependency: 424,
47
+ upgrade_required: 426,
48
+ internal_server_error: 500,
49
+ not_implemented: 501,
50
+ bad_gateway: 502,
51
+ service_unavailable: 503,
52
+ gateway_timeout: 504,
53
+ http_version_not_supported: 505,
54
+ insufficient_storage: 507,
55
+ not_extended: 510
56
+ }
57
+
58
+ def http_status
59
+ RAILS_HTTP_STATUS[status.current.to_sym]
60
+ end
61
+
62
+ end
63
+
64
+ end
65
+ end
66
+
67
+
68
+
@@ -11,10 +11,6 @@ module RestMyCase
11
11
  @text = text
12
12
  end
13
13
 
14
- def match?
15
- match_as_setter? || match_as_question?
16
- end
17
-
18
14
  def match_as_setter?
19
15
  !!(@text =~ STATUS_SETTER_REGEX)
20
16
  end
@@ -22,10 +22,12 @@ module RestMyCase
22
22
  end
23
23
  end
24
24
 
25
- def respond_to?(method, _include_all = false)
26
- matcher = ::RestMyCase::Context::Status::Matcher.new(method)
25
+ def to_s
26
+ current.to_s
27
+ end
27
28
 
28
- matcher.match? || super
29
+ def ==(value)
30
+ to_s == value
29
31
  end
30
32
 
31
33
  end
@@ -0,0 +1,7 @@
1
+ module RestMyCase
2
+ module Errors
3
+
4
+ class Abort < Base; end
5
+
6
+ end
7
+ end
@@ -0,0 +1,10 @@
1
+ module RestMyCase
2
+ module Errors
3
+
4
+ class Base < StandardError; end
5
+
6
+ end
7
+ end
8
+
9
+ require 'rest_my_case/errors/abort'
10
+ require 'rest_my_case/errors/skip'
@@ -0,0 +1,7 @@
1
+ module RestMyCase
2
+ module Errors
3
+
4
+ class Skip < Base; end
5
+
6
+ end
7
+ end
@@ -0,0 +1,12 @@
1
+ module RestMyCase
2
+
3
+ class HttpStatus < Status
4
+
5
+ def self.trial_court
6
+ @trial_court ||= Trial::Court.new \
7
+ Judge::Base, DefenseAttorney::Base, Base, Context::HttpStatus
8
+ end
9
+
10
+ end
11
+
12
+ end
@@ -1,16 +1,22 @@
1
1
  module RestMyCase
2
2
 
3
- class WithStatus < Base
3
+ class Status < Base
4
4
 
5
5
  def self.trial_court
6
6
  @trial_court ||= Trial::Court.new \
7
7
  Judge::Base, DefenseAttorney::Base, Base, Context::Status::Base
8
8
  end
9
9
 
10
- def failure!(status, message = nil)
10
+ context_reader :status
11
+
12
+ def failure(status, message = nil)
11
13
  context.status.send("#{status}!")
12
14
 
13
- error!(message || status)
15
+ error(Helpers.blank?(message) ? "#{status}" : "#{status} - #{message}")
16
+ end
17
+
18
+ def failure!(status, message = nil)
19
+ failure(status, message) && fail(Errors::Abort)
14
20
  end
15
21
 
16
22
  end
@@ -1,6 +1,6 @@
1
1
  module RestMyCase
2
2
 
3
- class Validator < RestMyCase::Base
3
+ class Validator < Base
4
4
 
5
5
  module ClassMethods
6
6
 
@@ -1,5 +1,5 @@
1
1
  module RestMyCase
2
2
 
3
- VERSION = '1.8.0'
3
+ VERSION = '1.9.0'
4
4
 
5
5
  end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe RestMyCase::AccusationAttorneys::Base do
4
+
5
+ describe '#validate' do
6
+ context "given that the child class hasn't implemented the validate method" do
7
+ TestCase4 = Class.new(described_class)
8
+
9
+ before { @instance = TestCase4.new({ attributes: { id: '1' } }) }
10
+
11
+ it 'should raise an error' do
12
+ expect { @instance.validate(nil) }.to raise_error
13
+ end
14
+ end
15
+ end
16
+
17
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe RestMyCase::AccusationAttorneys::Each do
4
+
5
+ describe '#validate_each' do
6
+ context "given that the child class hasn't implemented the validate_each method" do
7
+ TestCase5 = Class.new(described_class)
8
+
9
+ before { @instance = TestCase5.new({ attributes: { id: '1' } }) }
10
+
11
+ it 'should raise an error' do
12
+ expect { @instance.validate_each(nil, nil, nil) }.to raise_error
13
+ end
14
+ end
15
+ end
16
+
17
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe RestMyCase::Context::Status::Base do
4
+
5
+ describe '#status=' do
6
+
7
+ let(:context) { described_class.new }
8
+
9
+ it 'raises error' do
10
+ expect do
11
+ context.status = 'not_found'
12
+ end.to raise_error
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ describe RestMyCase::Context::Status::Status do
4
+
5
+ describe '#method_missing' do
6
+ context "given that no method was previously called" do
7
+ before { @status = described_class.new }
8
+
9
+ it 'calling an unknown_method should raise an error' do
10
+ expect { @status.unknown_method }.to raise_error
11
+ end
12
+
13
+ it '#ok? should be true' do
14
+ expect(@status.ok?).to be true
15
+ end
16
+ end
17
+ end
18
+
19
+ describe '#to_s' do
20
+ context "given that .not_found! was called" do
21
+ before do
22
+ @status = described_class.new
23
+ @status.not_found!
24
+ end
25
+
26
+ it "should return 'not_found'" do
27
+ expect(@status.to_s).to eq "not_found"
28
+ end
29
+ end
30
+ end
31
+
32
+ describe '#==' do
33
+ context "given that .unauthorized! was called" do
34
+ before do
35
+ @status = described_class.new
36
+ @status.unauthorized!
37
+ end
38
+
39
+ it "comparing to 'unauthorized' should return true" do
40
+ expect(@status == 'unauthorized').to be true
41
+ end
42
+ end
43
+ end
44
+
45
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe RestMyCase::HttpStatus do
4
+
5
+ describe "context#http_status" do
6
+
7
+ context "when status.not_found! is used" do
8
+ NotFound = Class.new(RestMyCase::HttpStatus) { def perform; status.not_found!; end }
9
+
10
+ it "should only list the class's dependencies" do
11
+ expect(NotFound.perform.http_status).to be 404
12
+ end
13
+ end
14
+
15
+ context "when failure(:unprocessable_entity) is used" do
16
+ UnprocessableEntity = Class.new(RestMyCase::HttpStatus) { def perform; failure(:unprocessable_entity); end }
17
+
18
+ it "should only list the class's dependencies" do
19
+ expect(UnprocessableEntity.perform.http_status).to be 422
20
+ end
21
+ end
22
+
23
+ context "when failure!(:internal_server_error) is used" do
24
+ InternalServerError = Class.new(RestMyCase::HttpStatus) { def perform; failure!(:internal_server_error); end }
25
+
26
+ it "should only list the class's dependencies" do
27
+ expect(InternalServerError.perform.http_status).to be 500
28
+ end
29
+ end
30
+
31
+ end
32
+
33
+ end
@@ -0,0 +1,77 @@
1
+ require 'spec_helper'
2
+
3
+ describe RestMyCase::Status do
4
+
5
+ describe "context#status" do
6
+
7
+ context "when status.not_found! is used" do
8
+ TestCase1 = Class.new(described_class) { def perform; status.accepted!; end }
9
+
10
+ before { @context = TestCase1.perform }
11
+
12
+ it "@context.status.accepted? should be true" do
13
+ expect(@context.status.accepted?).to be true
14
+ end
15
+
16
+ it "@context.status.ok? should be false" do
17
+ expect(@context.status.ok?).to be false
18
+ end
19
+ end
20
+
21
+ context "when failure(:unprocessable_entity) is used" do
22
+ TestCase2 = Class.new(described_class) do
23
+ def perform
24
+ failure(:unprocessable_entity)
25
+ context.next_line = true
26
+ end
27
+ end
28
+
29
+ before { @context = TestCase2.perform }
30
+
31
+ it "@context.status.unprocessable_entity? should be true" do
32
+ expect(@context.status.unprocessable_entity?).to be true
33
+ end
34
+
35
+ it "@context.next_line should be true" do
36
+ expect(@context.next_line).to be true
37
+ end
38
+
39
+ it "@context.status.ok? should be false" do
40
+ expect(@context.status.ok?).to be false
41
+ end
42
+
43
+ it "context's errors should have a proper message" do
44
+ expect(@context.errors["TestCase2"]).to eq ["unprocessable_entity"]
45
+ end
46
+ end
47
+
48
+ context "when failure!(:internal_server_error) is used" do
49
+ TestCase3 = Class.new(described_class) do
50
+ def perform
51
+ failure!(:internal_server_error)
52
+ context.next_line = true
53
+ end
54
+ end
55
+
56
+ before { @context = TestCase3.perform }
57
+
58
+ it "@context.status.internal_server_error? should be true" do
59
+ expect(@context.status.internal_server_error?).to be true
60
+ end
61
+
62
+ it "@context.next_line should be true" do
63
+ expect { context.next_line }.to raise_error
64
+ end
65
+
66
+ it "@context.status.ok? should be false" do
67
+ expect(@context.status.ok?).to be false
68
+ end
69
+
70
+ it "context's errors should have a proper message" do
71
+ expect(TestCase3.perform.errors["TestCase3"]).to eq ["internal_server_error"]
72
+ end
73
+ end
74
+
75
+ end
76
+
77
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest_my_case
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - goncalvesjoao
@@ -125,21 +125,31 @@ files:
125
125
  - lib/rest_my_case/config/base.rb
126
126
  - lib/rest_my_case/config/general.rb
127
127
  - lib/rest_my_case/context/base.rb
128
+ - lib/rest_my_case/context/http_status.rb
128
129
  - lib/rest_my_case/context/status/base.rb
129
130
  - lib/rest_my_case/context/status/matcher.rb
130
131
  - lib/rest_my_case/context/status/status.rb
131
132
  - lib/rest_my_case/defense_attorney/base.rb
132
- - lib/rest_my_case/errors.rb
133
+ - lib/rest_my_case/errors/abort.rb
134
+ - lib/rest_my_case/errors/base.rb
135
+ - lib/rest_my_case/errors/skip.rb
133
136
  - lib/rest_my_case/helpers.rb
137
+ - lib/rest_my_case/http_status.rb
134
138
  - lib/rest_my_case/judge/base.rb
139
+ - lib/rest_my_case/status.rb
135
140
  - lib/rest_my_case/trial/case.rb
136
141
  - lib/rest_my_case/trial/court.rb
137
142
  - lib/rest_my_case/validator.rb
138
143
  - lib/rest_my_case/version.rb
139
- - lib/rest_my_case/with_status.rb
140
144
  - rest_my_case.gemspec
145
+ - spec/rest_my_case/accusation_attorneys/base_spec.rb
146
+ - spec/rest_my_case/accusation_attorneys/each_spec.rb
141
147
  - spec/rest_my_case/base_spec.rb
148
+ - spec/rest_my_case/context/status/base_spec.rb
149
+ - spec/rest_my_case/context/status/status_spec.rb
142
150
  - spec/rest_my_case/defense_attorney/base_spec.rb
151
+ - spec/rest_my_case/http_status_spec.rb
152
+ - spec/rest_my_case/status_spec.rb
143
153
  - spec/rest_my_case/trial_case/court_spec.rb
144
154
  - spec/rest_my_case/validator/hierarchy_spec.rb
145
155
  - spec/spec_helper.rb
@@ -174,8 +184,14 @@ signing_key:
174
184
  specification_version: 4
175
185
  summary: Quick and light "The Clean Architecture" use case implementation.
176
186
  test_files:
187
+ - spec/rest_my_case/accusation_attorneys/base_spec.rb
188
+ - spec/rest_my_case/accusation_attorneys/each_spec.rb
177
189
  - spec/rest_my_case/base_spec.rb
190
+ - spec/rest_my_case/context/status/base_spec.rb
191
+ - spec/rest_my_case/context/status/status_spec.rb
178
192
  - spec/rest_my_case/defense_attorney/base_spec.rb
193
+ - spec/rest_my_case/http_status_spec.rb
194
+ - spec/rest_my_case/status_spec.rb
179
195
  - spec/rest_my_case/trial_case/court_spec.rb
180
196
  - spec/rest_my_case/validator/hierarchy_spec.rb
181
197
  - spec/spec_helper.rb
@@ -1,13 +0,0 @@
1
- module RestMyCase
2
- module Errors
3
-
4
- class Base < StandardError; end
5
-
6
- class Skip < Base; end
7
-
8
- class Abort < Base; end
9
-
10
- class Error < Base; end
11
-
12
- end
13
- end