command_service_object 0.5.11 → 0.6.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 +4 -4
- data/.github/workflows/gempush.yml +44 -0
- data/Gemfile.lock +3 -3
- data/lib/command_service_object/version.rb +1 -1
- data/lib/generators/service/command/templates/command.rb.erb +1 -3
- data/lib/generators/service/install/templates/services/application_service.rb +3 -1
- data/lib/generators/service/install/templates/services/case_base.rb +4 -0
- data/lib/generators/service/install/templates/services/command_base.rb +10 -0
- data/lib/generators/service/policies.rb +5 -0
- data/lib/generators/service/test/templates/{minitest.rb.erb → minitest/usecase.rb.erb} +0 -0
- data/lib/generators/service/test/templates/rspec/command.rb.erb +0 -0
- data/lib/generators/service/test/templates/{rspec.rb.erb → rspec/usecase.rb.erb} +10 -2
- data/lib/generators/service/test/test_generator.rb +20 -4
- data/lib/generators/service/usecase/templates/usecase.rb.erb +9 -0
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff8e0861e9c53cbdb7c31094d4f7ec6a65b0e689427f113a02a9eae8bd405204
|
4
|
+
data.tar.gz: 32cfeb41eec29241fd214c7093db7b3c7b7221bbe7ab26d9d617e249d6b2b960
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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.
|
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.
|
147
|
+
2.0.2
|
@@ -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
|
-
|
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
|
File without changes
|
File without changes
|
@@ -2,17 +2,25 @@
|
|
2
2
|
|
3
3
|
require 'rails_helper'
|
4
4
|
|
5
|
-
describe <%= service_name.classify %>::Usecases::<%= @
|
6
|
-
let(:cmd) { <%= service_name.classify %>::
|
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
|
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.
|
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-
|
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
|