rest_my_case 1.8.0 → 1.9.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 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