application_service 0.3.0 → 0.4.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: 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: []