command_service_object 0.3.1 → 0.3.2

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
  SHA256:
3
- metadata.gz: 4039a3dbbda00504a1bcecf192eeadbc2d713421a1a3abcbea48b42776a1c556
4
- data.tar.gz: eb5e934d9f3ec8ef0d292d7f82b8330c334e6f595da77eee4519e9295b320786
3
+ metadata.gz: 4ad47cc35afbb96a172b7acf5c777259ae5470349d97ac7250a20635d5e7f093
4
+ data.tar.gz: 260996594ae69fb775ae51781673f690ad42b0933a8f6217715ca14e1cfc037d
5
5
  SHA512:
6
- metadata.gz: 946455406a4ce0008936b985daa3d7c586bf5aa34d80ff3d5a19cba568bd2ace83fb2fb3036e3a670491ce4d1a9e345fa262c497f49df4a2109c832fd5b8e1dd
7
- data.tar.gz: 891e869e8f625a7d865462d388b4b86fd7d14bac5e6184710bf179dfdfe78234aaa8e39c92e46ab7ceb16584092f97b636f03b2d0120a73c1c7dd67defdc3023
6
+ metadata.gz: f0f4becc387a2436a7e9ed0f1f8c9c894c31d1224c26342539ec71440ee37124f492a89d2a7c784d4fbb28e6cc24f813cbeb7e5b45df652d3c7d9786b775dd21
7
+ data.tar.gz: ba231a12a36a194c614f19c5495adfdb17c7dad0150cd07f1edd021e745b8599e9e814d69d455150091f4bcabfc7c4187d06f36a590f93995fc4ee97dd3c20a6
data/.gitignore CHANGED
@@ -7,6 +7,7 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  *.gem
10
+ .byebug_history
10
11
 
11
12
  # rspec failure tracking
12
13
  .rspec_status
data/Gemfile.lock CHANGED
@@ -1,26 +1,134 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- command_service_object (0.1.0)
4
+ command_service_object (0.3.1)
5
+ virtus (~> 1.0.5)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
9
- diff-lcs (1.3)
10
+ actioncable (5.2.3)
11
+ actionpack (= 5.2.3)
12
+ nio4r (~> 2.0)
13
+ websocket-driver (>= 0.6.1)
14
+ actionmailer (5.2.3)
15
+ actionpack (= 5.2.3)
16
+ actionview (= 5.2.3)
17
+ activejob (= 5.2.3)
18
+ mail (~> 2.5, >= 2.5.4)
19
+ rails-dom-testing (~> 2.0)
20
+ actionpack (5.2.3)
21
+ actionview (= 5.2.3)
22
+ activesupport (= 5.2.3)
23
+ rack (~> 2.0)
24
+ rack-test (>= 0.6.3)
25
+ rails-dom-testing (~> 2.0)
26
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
27
+ actionview (5.2.3)
28
+ activesupport (= 5.2.3)
29
+ builder (~> 3.1)
30
+ erubi (~> 1.4)
31
+ rails-dom-testing (~> 2.0)
32
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
33
+ activejob (5.2.3)
34
+ activesupport (= 5.2.3)
35
+ globalid (>= 0.3.6)
36
+ activemodel (5.2.3)
37
+ activesupport (= 5.2.3)
38
+ activerecord (5.2.3)
39
+ activemodel (= 5.2.3)
40
+ activesupport (= 5.2.3)
41
+ arel (>= 9.0)
42
+ activestorage (5.2.3)
43
+ actionpack (= 5.2.3)
44
+ activerecord (= 5.2.3)
45
+ marcel (~> 0.3.1)
46
+ activesupport (5.2.3)
47
+ concurrent-ruby (~> 1.0, >= 1.0.2)
48
+ i18n (>= 0.7, < 2)
49
+ minitest (~> 5.1)
50
+ tzinfo (~> 1.1)
51
+ arel (9.0.0)
52
+ axiom-types (0.1.1)
53
+ descendants_tracker (~> 0.0.4)
54
+ ice_nine (~> 0.11.0)
55
+ thread_safe (~> 0.3, >= 0.3.1)
56
+ builder (3.2.3)
57
+ coercible (1.0.0)
58
+ descendants_tracker (~> 0.0.1)
59
+ concurrent-ruby (1.1.5)
60
+ crass (1.0.4)
61
+ descendants_tracker (0.0.4)
62
+ thread_safe (~> 0.3, >= 0.3.1)
63
+ equalizer (0.0.11)
64
+ erubi (1.8.0)
65
+ globalid (0.4.2)
66
+ activesupport (>= 4.2.0)
67
+ i18n (1.6.0)
68
+ concurrent-ruby (~> 1.0)
69
+ ice_nine (0.11.2)
70
+ loofah (2.2.3)
71
+ crass (~> 1.0.2)
72
+ nokogiri (>= 1.5.9)
73
+ mail (2.7.1)
74
+ mini_mime (>= 0.1.1)
75
+ marcel (0.3.3)
76
+ mimemagic (~> 0.3.2)
77
+ method_source (0.9.2)
78
+ mimemagic (0.3.3)
79
+ mini_mime (1.0.1)
80
+ mini_portile2 (2.4.0)
81
+ minitest (5.11.3)
82
+ nio4r (2.3.1)
83
+ nokogiri (1.10.2)
84
+ mini_portile2 (~> 2.4.0)
85
+ rack (2.0.7)
86
+ rack-test (1.1.0)
87
+ rack (>= 1.0, < 3)
88
+ rails (5.2.3)
89
+ actioncable (= 5.2.3)
90
+ actionmailer (= 5.2.3)
91
+ actionpack (= 5.2.3)
92
+ actionview (= 5.2.3)
93
+ activejob (= 5.2.3)
94
+ activemodel (= 5.2.3)
95
+ activerecord (= 5.2.3)
96
+ activestorage (= 5.2.3)
97
+ activesupport (= 5.2.3)
98
+ bundler (>= 1.3.0)
99
+ railties (= 5.2.3)
100
+ sprockets-rails (>= 2.0.0)
101
+ rails-dom-testing (2.0.3)
102
+ activesupport (>= 4.2.0)
103
+ nokogiri (>= 1.6)
104
+ rails-html-sanitizer (1.0.4)
105
+ loofah (~> 2.2, >= 2.2.2)
106
+ railties (5.2.3)
107
+ actionpack (= 5.2.3)
108
+ activesupport (= 5.2.3)
109
+ method_source
110
+ rake (>= 0.8.7)
111
+ thor (>= 0.19.0, < 2.0)
10
112
  rake (10.5.0)
11
- rspec (3.8.0)
12
- rspec-core (~> 3.8.0)
13
- rspec-expectations (~> 3.8.0)
14
- rspec-mocks (~> 3.8.0)
15
- rspec-core (3.8.0)
16
- rspec-support (~> 3.8.0)
17
- rspec-expectations (3.8.2)
18
- diff-lcs (>= 1.2.0, < 2.0)
19
- rspec-support (~> 3.8.0)
20
- rspec-mocks (3.8.0)
21
- diff-lcs (>= 1.2.0, < 2.0)
22
- rspec-support (~> 3.8.0)
23
- rspec-support (3.8.0)
113
+ sprockets (3.7.2)
114
+ concurrent-ruby (~> 1.0)
115
+ rack (> 1, < 3)
116
+ sprockets-rails (3.2.1)
117
+ actionpack (>= 4.0)
118
+ activesupport (>= 4.0)
119
+ sprockets (>= 3.0.0)
120
+ thor (0.20.3)
121
+ thread_safe (0.3.6)
122
+ tzinfo (1.2.5)
123
+ thread_safe (~> 0.1)
124
+ virtus (1.0.5)
125
+ axiom-types (~> 0.1)
126
+ coercible (~> 1.0)
127
+ descendants_tracker (~> 0.0, >= 0.0.3)
128
+ equalizer (~> 0.0, >= 0.0.9)
129
+ websocket-driver (0.7.0)
130
+ websocket-extensions (>= 0.1.0)
131
+ websocket-extensions (0.1.3)
24
132
 
25
133
  PLATFORMS
26
134
  ruby
@@ -28,8 +136,10 @@ PLATFORMS
28
136
  DEPENDENCIES
29
137
  bundler (~> 2.0)
30
138
  command_service_object!
139
+ minitest (~> 5.11, >= 5.11.3)
140
+ rails (~> 5.0)
31
141
  rake (~> 10.0)
32
- rspec (~> 3.0)
142
+ thor (~> 0.20.3)
33
143
 
34
144
  BUNDLED WITH
35
145
  2.0.1
data/Rakefile CHANGED
@@ -1,6 +1,10 @@
1
1
  require 'bundler/gem_tasks'
2
- require 'rspec/core/rake_task'
2
+ require 'rake/testtask'
3
3
 
4
- RSpec::Core::RakeTask.new(:spec)
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << 'test'
6
+ t.libs << 'lib'
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
5
9
 
6
- task default: :spec
10
+ task default: :test
@@ -25,8 +25,10 @@ Gem::Specification.new do |spec|
25
25
  spec.require_paths = ['lib']
26
26
 
27
27
  spec.add_development_dependency 'bundler', '~> 2.0'
28
+ spec.add_development_dependency 'minitest', '~> 5.11', '>= 5.11.3'
29
+ spec.add_development_dependency 'rails', '~> 5.0'
28
30
  spec.add_development_dependency 'rake', '~> 10.0'
29
- spec.add_development_dependency 'rspec', '~> 3.0'
30
31
  spec.add_development_dependency 'thor', '~> 0.20.3'
32
+
31
33
  spec.add_runtime_dependency 'virtus', '~> 1.0.5'
32
34
  end
@@ -1,3 +1,3 @@
1
1
  module CommandServiceObject
2
- VERSION = '0.3.1'.freeze
2
+ VERSION = '0.3.2'.freeze
3
3
  end
@@ -10,6 +10,28 @@ class ServiceBase
10
10
  def self.call(command)
11
11
  raise Errors::InvalidCommand, command.class if command.invalid?
12
12
 
13
- new(command).call
13
+ obj = new(command)
14
+ obj.call
15
+ rescue StandardError => e
16
+ error(e)
17
+ obj.send(:rollback)
18
+ raise e
19
+ end
20
+
21
+ private
22
+
23
+ def self.error(err)
24
+ # don't log custom errors if you want :D
25
+ return if err.class.name.start_with?(self.class.name.split('::').first)
26
+
27
+ #
28
+ # Add your logging logic
29
+ # ex:
30
+ # Rollbar.error(err)
31
+ #
32
+ end
33
+
34
+ def rollback
35
+ raise NotImplementedError
14
36
  end
15
37
  end
@@ -1 +1,18 @@
1
1
  # frozen_string_literal: true
2
+
3
+ require 'rails_helper'
4
+
5
+ describe <%= service_name.classify %>::Usecases::<%= @usecase %> do
6
+ let(:cmd) { <%= service_name.classify %>::Usecases::<%= @usecase %>.new(cmd_params) }
7
+ let(:cmd_default_params) {{ name: 'test_name' }}
8
+
9
+ context "when success" do
10
+ let(:cmd_params) { cmd_default_params.merge!({ name: 'valid_name' }) }
11
+ let!(:result) { ApplicationService.call(cmd) }
12
+ end
13
+
14
+ context 'when failure' do
15
+ let(:cmd_params) { cmd_default_params.merge!({ name: 'invalid_name' }) }
16
+ let!(:result) { ApplicationService.call(cmd) }
17
+ end
18
+ end
@@ -7,17 +7,15 @@ module <%= service_name.classify %>::Usecases
7
7
  # methods for Business logic.
8
8
  #
9
9
  def call
10
- begin
11
- replace_me
12
- rescue => e
13
- rollback
14
- raise e
15
- end
10
+ replace_me
16
11
  end
17
12
 
18
13
  private
19
14
 
20
- def rollback;end
15
+ # This method will run if call method raise error
16
+ def rollback
17
+ # rollback logic
18
+ end
21
19
 
22
20
  def replace_me
23
21
  # [business logic]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: command_service_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adham EL-Deeb
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-04-10 00:00:00.000000000 Z
11
+ date: 2019-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -25,33 +25,53 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '5.11'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 5.11.3
34
37
  type: :development
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
41
  - - "~>"
39
42
  - !ruby/object:Gem::Version
40
- version: '10.0'
43
+ version: '5.11'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 5.11.3
41
47
  - !ruby/object:Gem::Dependency
42
- name: rspec
48
+ name: rails
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: '3.0'
53
+ version: '5.0'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: '3.0'
60
+ version: '5.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rake
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '10.0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '10.0'
55
75
  - !ruby/object:Gem::Dependency
56
76
  name: thor
57
77
  requirement: !ruby/object:Gem::Requirement