Skip to content

Commit 21128f4

Browse files
Small fixes and specs fix
1 parent 420b2f9 commit 21128f4

File tree

4 files changed

+22
-23
lines changed

4 files changed

+22
-23
lines changed

lib/resol/initializers.rb

+8-13
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ module Resol
44
module Initializers
55
extend self
66

7-
INITIALIZER_ANCESTOR_REGEX = /(Dry|SmartCore)::Initializer/
7+
MOD_MATCH_REGEX = /(Dry|SmartCore)::Initializer/
88

99
def apply!(service_class, initializer_name)
10+
self.applied_classes ||= []
1011
validate_state!(service_class)
1112

1213
case initializer_name
@@ -19,30 +20,24 @@ def apply!(service_class, initializer_name)
1920
else
2021
raise ArgumentError, "unknown initializer #{initializer_name}"
2122
end
22-
23-
(self.applied_classes ||= []) << service_class.name
2423
end
2524

2625
private
2726

2827
attr_accessor :applied_classes
2928

3029
def validate_state!(service_class)
31-
applied_parent = nil
32-
service_class.ancestors.any? { |klass| klass.name.start_with?(INITIALIZER_ANCESTOR_REGEX) }
30+
applied_parent = service_class
31+
return if service_class.ancestors.none? { |klass| klass.name.start_with?(MOD_MATCH_REGEX) }
3332

3433
loop do
35-
applied_parent = service_class.superclass or break
34+
applied_parent = applied_parent.superclass or break
3635

37-
break if applied_classes.key?(applied_parent.name)
36+
break if applied_classes.include?(applied_parent.name)
3837
end
3938

40-
if applied_parent.nil?
41-
err_message = "#{service_class.name} or his superclasses manually include initializer dsl"
42-
raise ArgumentError, err_message
43-
else
44-
raise ArgumentError, "initializer dsl already applied to #{applied_parent.name}"
45-
end
39+
err_message = "#{applied_parent.name} or his superclasses manually include initializer dsl"
40+
raise ArgumentError, err_message
4641
end
4742
end
4843
end

spec/building_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# frozen_string_literal: true
22

3-
class BaseService < Resol::Service
3+
class BaseService < SmartService
44
param :type
55

66
option :option

spec/service_spec.rb

+9-9
Original file line numberDiff line numberDiff line change
@@ -18,25 +18,25 @@ def transaction
1818
end
1919
end
2020

21-
class SuccessService < Resol::Service
21+
class SuccessService < SmartService
2222
def call
2323
success!(:success_result)
2424
end
2525
end
2626

27-
class FailureService < Resol::Service
27+
class FailureService < SmartService
2828
def call
2929
fail!(:failure_result, { data: 123 })
3030
end
3131
end
3232

33-
class EmptyService < Resol::Service
33+
class EmptyService < SmartService
3434
def call
3535
"some_string"
3636
end
3737
end
3838

39-
class AbstractService < Resol::Service
39+
class AbstractService < SmartService
4040
end
4141

4242
class InheritedService < AbstractService
@@ -45,7 +45,7 @@ def call
4545
end
4646
end
4747

48-
class ServiceWithCall < Resol::Service
48+
class ServiceWithCall < SmartService
4949
def call
5050
success!(:success_result)
5151
end
@@ -54,7 +54,7 @@ def call
5454
class SubService < ServiceWithCall
5555
end
5656

57-
class ServiceWithCallbacks < Resol::Service
57+
class ServiceWithCallbacks < SmartService
5858
before_call :define_instance_var
5959

6060
def call
@@ -78,19 +78,19 @@ def set_other_value
7878
end
7979
end
8080

81-
class ServiceWithTransaction < Resol::Service
81+
class ServiceWithTransaction < SmartService
8282
def call
8383
DB.transaction { success! }
8484
end
8585
end
8686

87-
class ServiceWithFailInTransaction < Resol::Service
87+
class ServiceWithFailInTransaction < SmartService
8888
def call
8989
DB.transaction { fail!(:failed) }
9090
end
9191
end
9292

93-
class HackyService < Resol::Service
93+
class HackyService < SmartService
9494
param :count
9595

9696
def call

spec/spec_helper.rb

+4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@
2525
require "resol"
2626
require "pry"
2727

28+
class SmartService < Resol::Service
29+
use_initializer! :smartcore
30+
end
31+
2832
RSpec.configure do |config|
2933
config.example_status_persistence_file_path = ".rspec_status"
3034
config.disable_monkey_patching!

0 commit comments

Comments
 (0)