application_service 0.3.0 → 0.4.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
  SHA256:
3
- metadata.gz: 235e898fc8f4abc701f68d1544f9d716a1d85b22dbab342f7e1b01e88c7beb55
4
- data.tar.gz: 59c4f11f63cf3d71b519e033ca4b84a59465ae51d64f421c98327601366d2ae5
3
+ metadata.gz: d8f6fcf621468775e24be24281197c8e247de5ac87b2dcc57711880b368b6b00
4
+ data.tar.gz: 2916bad018667a7d9cb04b6c9e94a8f712434d7b9cb3bd8ab2b27420a3f5b59a
5
5
  SHA512:
6
- metadata.gz: db1262eefac8b5e07799e355a4f75da20aa2f594a91db008386a26cce215acd053ce69202a46ad9f92a1c069bdae72bbe74e5a9ca0f85f59259dc30016a244fe
7
- data.tar.gz: f62165d54067b9f38dc8622de53f053679255e99a98ae9a6b688ffbe4ddffe1f465c1115c04ede877a76647a40f1c790349b125c9c89544dc5822dd4c1f36ed8
6
+ metadata.gz: 246018e2846dae816ac311825c5d5a5e8867bf010fad635d3b852508c63a6ebf419893e0d2ab3cde248e2532bffccf7801268577de040d2f474bc2b9dd86694c
7
+ data.tar.gz: ce54981d596afff4f2e5d664083f7b530707640d1fba7ead3ee3c2161a0d3315562e61928fcf0c502fb39a4c57b214159acd223651684787f1203b08e0329f32
data/.rubocop.yml ADDED
@@ -0,0 +1,26 @@
1
+ AllCops:
2
+ DisabledByDefault: true
3
+
4
+ Security:
5
+ Enabled: true
6
+
7
+ Bundler/DuplicatedGem:
8
+ Enabled: true
9
+ Bundler/InsecureProtocolSource:
10
+ Enabled: true
11
+ Layout/IndentationStyle:
12
+ Enabled: true
13
+ Layout/SpaceInsideRangeLiteral:
14
+ Enabled: true
15
+ Lint:
16
+ Enabled: true
17
+ Lint/RaiseException:
18
+ Enabled: true
19
+ Naming/AsciiIdentifiers:
20
+ Enabled: true
21
+ Naming/ClassAndModuleCamelCase:
22
+ Enabled: true
23
+ Naming/ConstantName:
24
+ Enabled: true
25
+ Naming/FileName:
26
+ Enabled: true
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.6
1
+ 2.7.3
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.7
4
+ cache: bundler
5
+ before_install:
6
+ - gem install bundler
7
+ script:
8
+ - bundle exec rspec
9
+ - bundle exec rubocop
data/Gemfile CHANGED
@@ -4,5 +4,6 @@ gem 'activesupport', '>= 5.0.0.1', '< 7.0'
4
4
 
5
5
  group :development do
6
6
  gem 'rspec', '~> 3.5'
7
+ gem 'rubocop'
7
8
  gem 'jeweler', '~> 2.2', '>= 2.2.1'
8
9
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: application_service 0.3.0 ruby lib
5
+ # stub: application_service 0.4.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "application_service".freeze
9
- s.version = "0.3.0"
9
+ s.version = "0.4.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Nathan Woodhull".freeze]
14
- s.date = "2020-12-31"
14
+ s.date = "2021-05-20"
15
15
  s.description = "A service layer scaffold for rails apps extracted from Agra".freeze
16
16
  s.email = "woodhull@gmail.com".freeze
17
17
  s.extra_rdoc_files = [
@@ -21,8 +21,10 @@ Gem::Specification.new do |s|
21
21
  s.files = [
22
22
  ".document",
23
23
  ".rspec",
24
+ ".rubocop.yml",
24
25
  ".ruby-gemset",
25
26
  ".ruby-version",
27
+ ".travis.yml",
26
28
  "Gemfile",
27
29
  "LICENSE.txt",
28
30
  "README.rdoc",
@@ -35,7 +37,7 @@ Gem::Specification.new do |s|
35
37
  ]
36
38
  s.homepage = "http://github.com/woodhull/application_service".freeze
37
39
  s.licenses = ["MIT".freeze]
38
- s.rubygems_version = "3.1.2".freeze
40
+ s.rubygems_version = "3.1.6".freeze
39
41
  s.summary = "Service Layer Scaffold".freeze
40
42
 
41
43
  if s.respond_to? :specification_version then
@@ -45,10 +47,12 @@ Gem::Specification.new do |s|
45
47
  if s.respond_to? :add_runtime_dependency then
46
48
  s.add_runtime_dependency(%q<activesupport>.freeze, [">= 5.0.0.1", "< 7.0"])
47
49
  s.add_development_dependency(%q<rspec>.freeze, ["~> 3.5"])
50
+ s.add_development_dependency(%q<rubocop>.freeze, ["~> 1.15"])
48
51
  s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.2", ">= 2.2.1"])
49
52
  else
50
53
  s.add_dependency(%q<activesupport>.freeze, [">= 5.0.0.1", "< 7.0"])
51
54
  s.add_dependency(%q<rspec>.freeze, ["~> 3.5"])
55
+ s.add_dependency(%q<rubocop>.freeze, ["~> 1.15"])
52
56
  s.add_dependency(%q<jeweler>.freeze, ["~> 2.2", ">= 2.2.1"])
53
57
  end
54
58
  end
@@ -3,7 +3,7 @@ require 'active_support/all'
3
3
  class ApplicationService
4
4
 
5
5
  include ActiveSupport::Callbacks
6
- define_callbacks :save, :create, :update, :destroy, {terminator: ->(target, result) { result.call == false }, skip_after_callbacks_if_terminated: true}
6
+ define_callbacks :save, :create, :update, :destroy, {terminator: ->(_target, result) { result.call == false }, skip_after_callbacks_if_terminated: true}
7
7
 
8
8
  def initialize
9
9
  end
@@ -67,16 +67,16 @@ class ApplicationService
67
67
  end
68
68
  end
69
69
 
70
- def update_attributes(obj, params)
70
+ def update_attributes(obj, params, with_admin_save: false)
71
71
  @obj = obj
72
72
  @obj.assign_attributes(params)
73
73
 
74
74
  yield if block_given?
75
75
 
76
- run_callbacks :save do
77
- run_callbacks :update do
78
- @obj.save
79
- end
76
+ if with_admin_save
77
+ self.admin_save(obj)
78
+ else
79
+ self.save(obj)
80
80
  end
81
81
  end
82
82
 
@@ -104,6 +104,12 @@ class ApplicationService
104
104
  @on_admin_save = false
105
105
  end
106
106
 
107
+ def self.extract_callback_options(args)
108
+ options = args.last.is_a?(Hash) ? args.pop : {}
109
+
110
+ options
111
+ end
112
+
107
113
  private
108
114
 
109
115
  def create!(save_method=:save!)
@@ -129,13 +135,4 @@ class ApplicationService
129
135
  @obj.send(save_method)
130
136
  end
131
137
  end
132
-
133
- private
134
-
135
- def self.extract_callback_options(args)
136
- options = args.last.is_a?(Hash) ? args.pop : {}
137
-
138
- options
139
- end
140
-
141
138
  end
@@ -71,13 +71,21 @@ describe ApplicationService do
71
71
  end
72
72
 
73
73
  describe "#update_attributes" do
74
+ let(:obj) { double(new_record?: false) }
75
+
74
76
  it "should trigger update" do
75
- obj = double()
76
- expect(obj).to receive(:assign_attributes).with( {:foo => 'bar'}).and_return(:true)
77
+ expect(obj).to receive(:assign_attributes).with( {:foo => 'bar'}).and_return(true)
77
78
  expect(obj).to receive(:save)
78
79
 
79
80
  subject.update_attributes(obj, {:foo => 'bar'})
80
81
  end
82
+
83
+ it 'should trigger admin_save if argument is true' do
84
+ expect(obj).to receive(:assign_attributes).with( {:foo => 'bar'}).and_return(true)
85
+ expect(obj).to receive(:admin_save)
86
+
87
+ subject.update_attributes(obj, {:foo => 'bar'}, with_admin_save: true)
88
+ end
81
89
  end
82
90
 
83
91
  describe '#destroy' do
data/spec/spec_helper.rb CHANGED
@@ -5,8 +5,8 @@ require 'application_service'
5
5
 
6
6
  # Requires supporting files with custom matchers and macros, etc,
7
7
  # in ./support/ and its subdirectories.
8
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
8
+ Dir[File.join(File.dirname(__FILE__), 'support', '**', '*.rb')].sort.each { |f| require f }
9
9
 
10
10
  RSpec.configure do |config|
11
-
11
+
12
12
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: application_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Woodhull
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-31 00:00:00.000000000 Z
11
+ date: 2021-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -44,6 +44,20 @@ dependencies:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '3.5'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rubocop
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.15'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.15'
47
61
  - !ruby/object:Gem::Dependency
48
62
  name: jeweler
49
63
  requirement: !ruby/object:Gem::Requirement
@@ -74,8 +88,10 @@ extra_rdoc_files:
74
88
  files:
75
89
  - ".document"
76
90
  - ".rspec"
91
+ - ".rubocop.yml"
77
92
  - ".ruby-gemset"
78
93
  - ".ruby-version"
94
+ - ".travis.yml"
79
95
  - Gemfile
80
96
  - LICENSE.txt
81
97
  - README.rdoc
@@ -89,7 +105,7 @@ homepage: http://github.com/woodhull/application_service
89
105
  licenses:
90
106
  - MIT
91
107
  metadata: {}
92
- post_install_message:
108
+ post_install_message:
93
109
  rdoc_options: []
94
110
  require_paths:
95
111
  - lib
@@ -104,8 +120,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
120
  - !ruby/object:Gem::Version
105
121
  version: '0'
106
122
  requirements: []
107
- rubygems_version: 3.1.2
108
- signing_key:
123
+ rubygems_version: 3.1.6
124
+ signing_key:
109
125
  specification_version: 4
110
126
  summary: Service Layer Scaffold
111
127
  test_files: []