command_service_object 0.5.11 → 0.6.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
  SHA256:
3
- metadata.gz: 71a2cbd62d96248cddea4dc3cfbdeb6f07d1d43b62582eb573ca3e689322af01
4
- data.tar.gz: 333ecebd2230edf5c67967d4fcfd526a81e0f51d50111ca95f264c543ae12d14
3
+ metadata.gz: ff8e0861e9c53cbdb7c31094d4f7ec6a65b0e689427f113a02a9eae8bd405204
4
+ data.tar.gz: 32cfeb41eec29241fd214c7093db7b3c7b7221bbe7ab26d9d617e249d6b2b960
5
5
  SHA512:
6
- metadata.gz: af30bd8432c0a1a045c152992e038381f64dc5cbd8882aff7bcc483ad8e5e86d24768df660c8502d2afeb2fad756f75edaeb9e12f28c67c40b604ff289906b42
7
- data.tar.gz: dcace53060dc60e462025ca5dcb3d6ca93e440fc5f1ada54e587103ce18a6a35aa4dc50705a109d605c72212b8ec96600d1629edfd9d3cc39536568e0c147732
6
+ metadata.gz: 65e7ab0f19a4efed68b825b872a663ef6017264c877972dda8b13b5e17579d80600f312ab04b106847c46aa29643c5e3a09ad3e1dd88002999c51cf26e2551fa
7
+ data.tar.gz: 8ae43eac9b7b7960ac65626122bdc04038451d58e1254f951fbebae01c716806ba936af30cdebe9ab8f6e7ab04e356e4bfb9b67ebed21b9946f3ec82c83f1f6a
@@ -0,0 +1,44 @@
1
+ name: Ruby Gem
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - master
7
+ push:
8
+ branches:
9
+ - master
10
+
11
+ jobs:
12
+ build:
13
+ name: Build + Publish
14
+ runs-on: ubuntu-latest
15
+
16
+ steps:
17
+ - uses: actions/checkout@master
18
+ - name: Set up Ruby 2.6
19
+ uses: actions/setup-ruby@v1
20
+ with:
21
+ version: 2.6.x
22
+
23
+ - name: Publish to GPR
24
+ run: |
25
+ mkdir -p $HOME/.gem
26
+ touch $HOME/.gem/credentials
27
+ chmod 0600 $HOME/.gem/credentials
28
+ printf -- "---\n:github: Bearer ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
29
+ gem build *.gemspec
30
+ gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
31
+ env:
32
+ GEM_HOST_API_KEY: ${{secrets.GPR_AUTH_TOKEN}}
33
+ OWNER: username
34
+
35
+ - name: Publish to RubyGems
36
+ run: |
37
+ mkdir -p $HOME/.gem
38
+ touch $HOME/.gem/credentials
39
+ chmod 0600 $HOME/.gem/credentials
40
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
41
+ gem build *.gemspec
42
+ gem push *.gem
43
+ env:
44
+ GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_AUTH_TOKEN}}
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- command_service_object (0.5.11)
4
+ command_service_object (0.6.0)
5
5
  virtus (~> 1.0, >= 1.0.5)
6
6
 
7
7
  GEM
@@ -81,7 +81,7 @@ GEM
81
81
  mini_portile2 (2.4.0)
82
82
  minitest (5.11.3)
83
83
  nio4r (2.3.1)
84
- nokogiri (1.10.2)
84
+ nokogiri (1.10.4)
85
85
  mini_portile2 (~> 2.4.0)
86
86
  rack (2.0.7)
87
87
  rack-test (1.1.0)
@@ -144,4 +144,4 @@ DEPENDENCIES
144
144
  thor (~> 0.20.3)
145
145
 
146
146
  BUNDLED WITH
147
- 2.0.1
147
+ 2.0.2
@@ -1,3 +1,3 @@
1
1
  module CommandServiceObject
2
- VERSION = '0.5.11'.freeze
2
+ VERSION = '0.6.0'.freeze
3
3
  end
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module <%= service_name.classify %>::Commands
4
- class <%= @command %>
5
- include Virtus.model
6
- include ActiveModel::Validations
4
+ class <%= @command %> < CommandBase
7
5
  # You can read Virtus gem doc for more info.
8
6
  # https://github.com/solnic/virtus
9
7
 
@@ -6,7 +6,9 @@ class ApplicationService
6
6
  raise Errors::InvalidCommand, cmd.class if cmd.invalid?
7
7
 
8
8
  usecase = usecase_for(cmd).new(cmd)
9
- result = ServiceResult.new { usecase.call }
9
+ raise Errors::NotAuthorizedError, cmd.class unless usecase.allowed?
10
+
11
+ result = ServiceResult.new { usecase.call }
10
12
 
11
13
  rollback(usecase, result, cmd) if result.error.present?
12
14
  result
@@ -10,5 +10,9 @@ class CaseBase
10
10
  @cmd = cmd
11
11
  end
12
12
 
13
+ def allowed?
14
+ true
15
+ end
16
+
13
17
  def rollback; end
14
18
  end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CommandBase
4
+ include Virtus.model
5
+ include ActiveModel::Validations
6
+
7
+ # if you need to enable policies add issuer attribute
8
+ # attribute :issuer, User
9
+ # validates :issuer, presence: true
10
+ end
@@ -0,0 +1,5 @@
1
+ class
2
+ def initialize(*args)
3
+
4
+ end
5
+ end
@@ -2,17 +2,25 @@
2
2
 
3
3
  require 'rails_helper'
4
4
 
5
- describe <%= service_name.classify %>::Usecases::<%= @usecase %> do
6
- let(:cmd) { <%= service_name.classify %>::Usecases::<%= @usecase %>.new(cmd_params) }
5
+ describe <%= service_name.classify %>::Usecases::<%= @test %> do
6
+ let(:cmd) { <%= service_name.classify %>::Commands::<%= @test %>.new(cmd_params) }
7
7
  let(:cmd_default_params) {{ name: 'test_name' }}
8
8
 
9
9
  context "when success" do
10
10
  let(:cmd_params) { cmd_default_params.merge!({ name: 'valid_name' }) }
11
11
  let!(:result) { ApplicationService.call(cmd) }
12
+
13
+ it 'should be okay?' do
14
+ expect(result.ok?).to be true
15
+ end
12
16
  end
13
17
 
14
18
  context 'when failure' do
15
19
  let(:cmd_params) { cmd_default_params.merge!({ name: 'invalid_name' }) }
16
20
  let!(:result) { ApplicationService.call(cmd) }
21
+
22
+ it 'should not be okay?' do
23
+ expect(result.ok?).to be false
24
+ end
17
25
  end
18
26
  end
@@ -23,27 +23,43 @@ module Service
23
23
 
24
24
  tests.each do |t|
25
25
  @test = t.classify
26
- path = "#{dir}/#{t.underscore}_test.rb"
27
- template 'minitest.rb.erb', path
26
+ path = "#{dir}/usecases/#{t.underscore}_test.rb"
27
+ template 'minitest/usecase.rb.erb', path
28
28
  end
29
29
  end
30
30
 
31
31
  def rspec_test
32
32
  dir = create_test_dir('spec')
33
+ create_usecase_test(dir)
34
+ create_command_test(dir)
35
+ end
36
+
37
+ def create_usecase_test(dir)
38
+ tests.each do |t|
39
+ @test = t.classify
40
+ path = "#{dir}/usecases/#{t.underscore}_spec.rb"
41
+ template 'rspec/usecase.rb.erb', path
42
+ end
43
+ end
33
44
 
45
+ def create_command_test(dir)
34
46
  tests.each do |t|
35
47
  @test = t.classify
36
- path = "#{dir}/#{t.underscore}_spec.rb"
37
- template 'rspec.rb.erb', path
48
+ path = "#{dir}/commands/#{t.underscore}_spec.rb"
49
+ template 'rspec/command.rb.erb', path
38
50
  end
39
51
  end
40
52
 
41
53
  def create_test_dir(path)
42
54
  test_path = "#{path}/services"
43
55
  service_test = "#{test_path}/#{service_name}"
56
+ usecases_path = "#{test_path}/#{service_name}/usecases"
57
+ commands_path = "#{test_path}/#{service_name}/commands"
44
58
 
45
59
  empty_directory(test_path) unless File.exist?(test_path)
46
60
  empty_directory(service_test) unless File.exist?(service_test)
61
+ empty_directory(usecases_path) unless File.exist?(usecases_path)
62
+ empty_directory(commands_path) unless File.exist?(commands_path)
47
63
 
48
64
  service_test
49
65
  end
@@ -16,6 +16,15 @@ module <%= service_name.classify %>::Usecases
16
16
  # rollback logic
17
17
  end
18
18
 
19
+ def allowed?
20
+ # policies loginc for issuer
21
+ # ex:
22
+ #
23
+ # return false if issuer.role != :admin
24
+
25
+ true
26
+ end
27
+
19
28
  private
20
29
 
21
30
  def replace_me
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: command_service_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.11
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adham EL-Deeb
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2019-08-17 00:00:00.000000000 Z
12
+ date: 2019-09-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -130,6 +130,7 @@ executables: []
130
130
  extensions: []
131
131
  extra_rdoc_files: []
132
132
  files:
133
+ - ".github/workflows/gempush.yml"
133
134
  - ".gitignore"
134
135
  - ".rspec"
135
136
  - ".travis.yml"
@@ -163,14 +164,17 @@ files:
163
164
  - lib/generators/service/install/templates/initializer.rb
164
165
  - lib/generators/service/install/templates/services/application_service.rb
165
166
  - lib/generators/service/install/templates/services/case_base.rb
167
+ - lib/generators/service/install/templates/services/command_base.rb
166
168
  - lib/generators/service/install/templates/services/service_result.rb
167
169
  - lib/generators/service/micro/micro_generator.rb
168
170
  - lib/generators/service/micro/templates/micro.rb.erb
171
+ - lib/generators/service/policies.rb
169
172
  - lib/generators/service/service_generator.rb
170
173
  - lib/generators/service/setup/setup_generator.rb
171
174
  - lib/generators/service/test/USAGE
172
- - lib/generators/service/test/templates/minitest.rb.erb
173
- - lib/generators/service/test/templates/rspec.rb.erb
175
+ - lib/generators/service/test/templates/minitest/usecase.rb.erb
176
+ - lib/generators/service/test/templates/rspec/command.rb.erb
177
+ - lib/generators/service/test/templates/rspec/usecase.rb.erb
174
178
  - lib/generators/service/test/test_generator.rb
175
179
  - lib/generators/service/usecase/USAGE
176
180
  - lib/generators/service/usecase/templates/usecase.rb.erb