convenient_service 0.20.0 → 0.21.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/README.md +8 -4
- data/lib/convenient_service/aliases.rb +113 -1
- data/lib/convenient_service/common/plugins/aliases.rb +69 -0
- data/lib/convenient_service/common/plugins/can_have_callbacks/entities/type_collection.rb +2 -2
- data/lib/convenient_service/common/plugins/has_instance_proxy/entities/instance_proxy.rb +8 -8
- data/lib/convenient_service/common.rb +14 -0
- data/lib/convenient_service/config.rb +8 -0
- data/lib/convenient_service/core/aliases.rb +84 -0
- data/lib/convenient_service/dependencies/built_in.rb +15 -1
- data/lib/convenient_service/dependencies/only_queries.rb +0 -6
- data/lib/convenient_service/dependencies/queries/gems/minitest.rb +55 -0
- data/lib/convenient_service/dependencies/queries/gems/rspec.rb +1 -1
- data/lib/convenient_service/dependencies/queries/gems.rb +2 -0
- data/lib/convenient_service/dependencies/queries/ruby.rb +2 -2
- data/lib/convenient_service/dependencies/queries.rb +67 -16
- data/lib/convenient_service/dependencies.rb +6 -6
- data/lib/convenient_service/extras/alias.rb +4 -1
- data/lib/convenient_service/feature/configs/standard.rb +34 -13
- data/lib/convenient_service/feature/core.rb +41 -0
- data/lib/convenient_service/feature/plugins/aliases.rb +29 -0
- data/lib/convenient_service/feature/plugins/can_have_rspec_stubbed_entries/concern.rb +34 -0
- data/lib/convenient_service/{rspec/helpers/classes/stub_entry/entities.rb → feature/plugins/can_have_rspec_stubbed_entries.rb} +1 -2
- data/lib/convenient_service/feature/plugins/can_have_stubbed_entries/commands/delete_feature_stubbed_entry.rb +71 -0
- data/lib/convenient_service/feature/plugins/can_have_stubbed_entries/commands/fetch_all_features_stubbed_entries_cache.rb +16 -2
- data/lib/convenient_service/feature/plugins/can_have_stubbed_entries/commands/fetch_feature_stubbed_entries_cache.rb +1 -1
- data/lib/convenient_service/feature/plugins/can_have_stubbed_entries/commands.rb +2 -0
- data/lib/convenient_service/feature/plugins/can_have_stubbed_entries/concern.rb +23 -0
- data/lib/convenient_service/feature/plugins/can_have_stubbed_entries/entities/feature_stub.rb +123 -0
- data/lib/convenient_service/feature/plugins/can_have_stubbed_entries/entities/feature_unstub.rb +122 -0
- data/lib/convenient_service/feature/plugins/can_have_stubbed_entries/entities/value_mock.rb +118 -0
- data/lib/convenient_service/feature/plugins/can_have_stubbed_entries/entities/value_unmock.rb +88 -0
- data/lib/convenient_service/feature/plugins/can_have_stubbed_entries/entities.rb +12 -0
- data/lib/convenient_service/feature/plugins/can_have_stubbed_entries.rb +1 -14
- data/lib/convenient_service/feature/plugins/has_amazing_print_inspect/concern.rb +34 -0
- data/lib/convenient_service/feature/{configs/standard/commands.rb → plugins/has_amazing_print_inspect.rb} +1 -2
- data/lib/convenient_service/feature/plugins/has_awesome_print_inspect/concern.rb +34 -0
- data/lib/convenient_service/{rspec/helpers/classes/stub_service/entities.rb → feature/plugins/has_awesome_print_inspect.rb} +1 -2
- data/lib/convenient_service/feature/plugins/has_inspect/concern.rb +27 -0
- data/lib/convenient_service/{service/configs/standard/commands.rb → feature/plugins/has_inspect.rb} +1 -2
- data/lib/convenient_service/feature/plugins.rb +1 -0
- data/lib/convenient_service/feature.rb +16 -0
- data/lib/convenient_service/logger.rb +11 -12
- data/lib/convenient_service/rspec/helpers/classes.rb +0 -2
- data/lib/convenient_service/rspec/helpers/stub_entry.rb +23 -5
- data/lib/convenient_service/rspec/helpers/stub_service.rb +79 -11
- data/lib/convenient_service/rspec/matchers/classes/cache_its_value.rb +2 -1
- data/lib/convenient_service/rspec/matchers/classes/delegate_to.rb +3 -5
- data/lib/convenient_service/rspec/matchers/classes/include_config.rb +4 -0
- data/lib/convenient_service/service/configs/aliases.rb +42 -0
- data/lib/convenient_service/service/configs/standard/aliases.rb +24 -0
- data/lib/convenient_service/service/configs/standard/v1.rb +17 -0
- data/lib/convenient_service/service/configs/standard.rb +50 -25
- data/lib/convenient_service/service/core.rb +39 -0
- data/lib/convenient_service/service/plugins/aliases.rb +48 -0
- data/lib/convenient_service/service/plugins/can_have_rollbacks/middleware.rb +33 -2
- data/lib/convenient_service/service/plugins/can_have_rspec_stubbed_results/concern.rb +34 -0
- data/lib/convenient_service/service/plugins/can_have_rspec_stubbed_results.rb +8 -0
- data/lib/convenient_service/service/plugins/can_have_stubbed_results/commands/delete_service_stubbed_result.rb +63 -0
- data/lib/convenient_service/service/plugins/can_have_stubbed_results/commands/fetch_all_services_stubbed_results_cache.rb +15 -10
- data/lib/convenient_service/service/plugins/can_have_stubbed_results/commands/fetch_service_stubbed_results_cache.rb +3 -3
- data/lib/convenient_service/service/plugins/can_have_stubbed_results/commands.rb +2 -0
- data/lib/convenient_service/service/plugins/can_have_stubbed_results/concern.rb +25 -0
- data/lib/convenient_service/service/plugins/can_have_stubbed_results/entities/result_mock.rb +254 -0
- data/lib/convenient_service/service/plugins/can_have_stubbed_results/entities/result_unmock.rb +82 -0
- data/lib/convenient_service/service/plugins/can_have_stubbed_results/entities/service_stub.rb +135 -0
- data/lib/convenient_service/service/plugins/can_have_stubbed_results/entities/service_unstub.rb +113 -0
- data/lib/convenient_service/service/plugins/can_have_stubbed_results/entities.rb +12 -0
- data/lib/convenient_service/service/plugins/can_have_stubbed_results.rb +1 -14
- data/lib/convenient_service/service/plugins/forbids_convenient_service_entities_as_constructor_arguments/exceptions.rb +84 -0
- data/lib/convenient_service/service/plugins/forbids_convenient_service_entities_as_constructor_arguments/middleware.rb +84 -32
- data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/concern.rb +42 -2
- data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_be_called/exceptions.rb +3 -2
- data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/status/concern/instance_methods.rb +5 -0
- data/lib/convenient_service/service.rb +16 -0
- data/lib/convenient_service/specification.rb +42 -12
- data/lib/convenient_service/support/backtrace_cleaner.rb +6 -7
- data/lib/convenient_service/support/middleware/stack_builder/entities/builders/custom.rb +4 -0
- data/lib/convenient_service/support/middleware/stack_builder/entities/builders/ruby_middleware.rb +4 -0
- data/lib/convenient_service/support/unique_value.rb +4 -1
- data/lib/convenient_service/support.rb +13 -0
- data/lib/convenient_service/utils/array/find_last.rb +18 -9
- data/lib/convenient_service/utils/class/display_name.rb +9 -9
- data/lib/convenient_service/utils/enumerable/find_last.rb +48 -0
- data/lib/convenient_service/utils/enumerable.rb +20 -0
- data/lib/convenient_service/utils/hash/assert_valid_keys.rb +4 -4
- data/lib/convenient_service/utils/hash/except.rb +5 -4
- data/lib/convenient_service/utils/hash/triple_equality_compare.rb +8 -8
- data/lib/convenient_service/utils/kernel/silence_warnings.rb +4 -4
- data/lib/convenient_service/utils/module/fetch_own_const.rb +36 -31
- data/lib/convenient_service/utils/module/get_namespace.rb +26 -21
- data/lib/convenient_service/utils/module/get_own_const.rb +21 -16
- data/lib/convenient_service/utils/object/clamp_class.rb +50 -47
- data/lib/convenient_service/utils/object/duck_class.rb +84 -81
- data/lib/convenient_service/utils/object/get_own_method.rb +1 -1
- data/lib/convenient_service/utils/object/instance_variable_delete.rb +0 -3
- data/lib/convenient_service/utils/object/instance_variable_fetch.rb +0 -3
- data/lib/convenient_service/utils/object/memoize_including_falsy_values.rb +0 -3
- data/lib/convenient_service/utils/object/resolve_type.rb +13 -11
- data/lib/convenient_service/utils/object/safe_send.rb +2 -0
- data/lib/convenient_service/utils/string/enclose.rb +11 -11
- data/lib/convenient_service/utils/string/tab.rb +60 -0
- data/lib/convenient_service/utils/string.rb +5 -0
- data/lib/convenient_service/utils.rb +9 -0
- data/lib/convenient_service/version.rb +8 -1
- data/lib/convenient_service.rb +232 -14
- metadata +37 -754
- data/lib/convenient_service/feature/configs/standard/commands/is_feature.rb +0 -39
- data/lib/convenient_service/feature/configs/standard/commands/is_feature_class.rb +0 -41
- data/lib/convenient_service/rspec/helpers/classes/stub_entry/constants.rb +0 -25
- data/lib/convenient_service/rspec/helpers/classes/stub_entry/entities/stubbed_feature.rb +0 -128
- data/lib/convenient_service/rspec/helpers/classes/stub_entry/entities/value_spec.rb +0 -79
- data/lib/convenient_service/rspec/helpers/classes/stub_entry.rb +0 -48
- data/lib/convenient_service/rspec/helpers/classes/stub_service/constants.rb +0 -25
- data/lib/convenient_service/rspec/helpers/classes/stub_service/entities/result_spec.rb +0 -211
- data/lib/convenient_service/rspec/helpers/classes/stub_service/entities/stubbed_service.rb +0 -119
- data/lib/convenient_service/rspec/helpers/classes/stub_service.rb +0 -43
- data/lib/convenient_service/service/configs/standard/commands/is_service.rb +0 -39
- data/lib/convenient_service/service/configs/standard/commands/is_service_class.rb +0 -41
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
##
|
|
4
|
-
# @author Marian Kostyk <mariankostyk13895@gmail.com>
|
|
5
|
-
# @license LGPLv3 <https://www.gnu.org/licenses/lgpl-3.0.html>
|
|
6
|
-
##
|
|
7
|
-
|
|
8
|
-
module ConvenientService
|
|
9
|
-
module Feature
|
|
10
|
-
module Configs
|
|
11
|
-
module Standard
|
|
12
|
-
module Commands
|
|
13
|
-
class IsFeature < Support::Command
|
|
14
|
-
##
|
|
15
|
-
# @!attribute [r] feature
|
|
16
|
-
# @return [Object] Can be any type.
|
|
17
|
-
#
|
|
18
|
-
attr_reader :feature
|
|
19
|
-
|
|
20
|
-
##
|
|
21
|
-
# @param feature [Object] Can be any type.
|
|
22
|
-
# @return [void]
|
|
23
|
-
#
|
|
24
|
-
def initialize(feature:)
|
|
25
|
-
@feature = feature
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
##
|
|
29
|
-
# @return [Boolean]
|
|
30
|
-
#
|
|
31
|
-
def call
|
|
32
|
-
Commands::IsFeatureClass[feature_class: feature.class]
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
##
|
|
4
|
-
# @author Marian Kostyk <mariankostyk13895@gmail.com>
|
|
5
|
-
# @license LGPLv3 <https://www.gnu.org/licenses/lgpl-3.0.html>
|
|
6
|
-
##
|
|
7
|
-
|
|
8
|
-
module ConvenientService
|
|
9
|
-
module Feature
|
|
10
|
-
module Configs
|
|
11
|
-
module Standard
|
|
12
|
-
module Commands
|
|
13
|
-
class IsFeatureClass < Support::Command
|
|
14
|
-
##
|
|
15
|
-
# @!attribute [r] feature_class
|
|
16
|
-
# @return [Object] Can be any type.
|
|
17
|
-
#
|
|
18
|
-
attr_reader :feature_class
|
|
19
|
-
|
|
20
|
-
##
|
|
21
|
-
# @param feature_class [Object] Can be any type.
|
|
22
|
-
# @return [void]
|
|
23
|
-
#
|
|
24
|
-
def initialize(feature_class:)
|
|
25
|
-
@feature_class = feature_class
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
##
|
|
29
|
-
# @return [Boolean]
|
|
30
|
-
#
|
|
31
|
-
def call
|
|
32
|
-
return unless feature_class.instance_of?(::Class)
|
|
33
|
-
|
|
34
|
-
feature_class.include?(Feature::Core)
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
##
|
|
4
|
-
# @author Marian Kostyk <mariankostyk13895@gmail.com>
|
|
5
|
-
# @license LGPLv3 <https://www.gnu.org/licenses/lgpl-3.0.html>
|
|
6
|
-
##
|
|
7
|
-
|
|
8
|
-
module ConvenientService
|
|
9
|
-
module RSpec
|
|
10
|
-
module Helpers
|
|
11
|
-
module Classes
|
|
12
|
-
class StubEntry < Support::Command
|
|
13
|
-
module Constants
|
|
14
|
-
module Triggers
|
|
15
|
-
##
|
|
16
|
-
# @return [ConvenientService::Support::UniqueValue]
|
|
17
|
-
#
|
|
18
|
-
STUB_ENTRY = Support::UniqueValue.new("STUB_ENTRY")
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
##
|
|
4
|
-
# @author Marian Kostyk <mariankostyk13895@gmail.com>
|
|
5
|
-
# @license LGPLv3 <https://www.gnu.org/licenses/lgpl-3.0.html>
|
|
6
|
-
##
|
|
7
|
-
|
|
8
|
-
module ConvenientService
|
|
9
|
-
module RSpec
|
|
10
|
-
module Helpers
|
|
11
|
-
module Classes
|
|
12
|
-
class StubEntry < Support::Command
|
|
13
|
-
module Entities
|
|
14
|
-
class StubbedFeature
|
|
15
|
-
##
|
|
16
|
-
# @param feature_class [ConvenientService::Feature]
|
|
17
|
-
# @param entry_name [Symbol, String]
|
|
18
|
-
# @return [void]
|
|
19
|
-
#
|
|
20
|
-
# @internal
|
|
21
|
-
# NOTE: `@arguments = nil` means "match any arguments".
|
|
22
|
-
#
|
|
23
|
-
def initialize(feature_class:, entry_name:)
|
|
24
|
-
@feature_class = feature_class
|
|
25
|
-
@entry_name = entry_name
|
|
26
|
-
@arguments = nil
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
##
|
|
30
|
-
# @return [ConvenientService::RSpec::Helpers::Classes::StubService::Entities::StubService]
|
|
31
|
-
#
|
|
32
|
-
def with_arguments(...)
|
|
33
|
-
@arguments = Support::Arguments.new(...)
|
|
34
|
-
|
|
35
|
-
self
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
##
|
|
39
|
-
# @return [ConvenientService::RSpec::Helpers::Classes::StubService::Entities::StubService]
|
|
40
|
-
#
|
|
41
|
-
# @internal
|
|
42
|
-
# NOTE: `@arguments = nil` means "match any arguments".
|
|
43
|
-
#
|
|
44
|
-
def with_any_arguments(...)
|
|
45
|
-
@arguments = nil
|
|
46
|
-
|
|
47
|
-
self
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
##
|
|
51
|
-
# @return [ConvenientService::RSpec::Helpers::Classes::StubService::Entities::StubService]
|
|
52
|
-
#
|
|
53
|
-
def without_arguments
|
|
54
|
-
@arguments = Support::Arguments.null_arguments
|
|
55
|
-
|
|
56
|
-
self
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
##
|
|
60
|
-
# @param value_spec [ConvenientService::RSpec::Helpers::Classes::StubService::Entities::ResultSpec]
|
|
61
|
-
# @return [ConvenientService::RSpec::Helpers::Classes::StubService::Entities::StubService]
|
|
62
|
-
#
|
|
63
|
-
def to(value_spec)
|
|
64
|
-
@value_spec = value_spec
|
|
65
|
-
|
|
66
|
-
feature_class.commit_config!(trigger: Constants::Triggers::STUB_ENTRY)
|
|
67
|
-
|
|
68
|
-
Feature::Plugins::CanHaveStubbedEntries.set_feature_stubbed_entry(feature_class, entry_name, arguments, value)
|
|
69
|
-
|
|
70
|
-
self
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
##
|
|
74
|
-
# @param other [Object] Can be any type.
|
|
75
|
-
# @return [Boolean, nil]
|
|
76
|
-
#
|
|
77
|
-
def ==(other)
|
|
78
|
-
return unless other.instance_of?(self.class)
|
|
79
|
-
|
|
80
|
-
return false if feature_class != other.feature_class
|
|
81
|
-
return false if entry_name != other.entry_name
|
|
82
|
-
return false if arguments != other.arguments
|
|
83
|
-
return false if value_spec != other.value_spec
|
|
84
|
-
|
|
85
|
-
true
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
protected
|
|
89
|
-
|
|
90
|
-
##
|
|
91
|
-
# @!attribute [r] feature_class
|
|
92
|
-
# @return [ConvenientService::Feature]
|
|
93
|
-
#
|
|
94
|
-
attr_reader :feature_class
|
|
95
|
-
|
|
96
|
-
##
|
|
97
|
-
# @!attribute [r] entry_name
|
|
98
|
-
# @return [Symbol, String]
|
|
99
|
-
#
|
|
100
|
-
attr_reader :entry_name
|
|
101
|
-
|
|
102
|
-
##
|
|
103
|
-
# @!attribute [r] arguments
|
|
104
|
-
# @return [Hash]
|
|
105
|
-
#
|
|
106
|
-
attr_reader :arguments
|
|
107
|
-
|
|
108
|
-
##
|
|
109
|
-
# @!attribute [r] value_spec
|
|
110
|
-
# @return [ConvenientService::RSpec::Helpers::Classes::StubEntry::Entities::ValueSpec]
|
|
111
|
-
#
|
|
112
|
-
attr_reader :value_spec
|
|
113
|
-
|
|
114
|
-
private
|
|
115
|
-
|
|
116
|
-
##
|
|
117
|
-
# @return [Object] Can be any type.
|
|
118
|
-
#
|
|
119
|
-
def value
|
|
120
|
-
@value ||= value_spec.for(feature_class).calculate_value
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
end
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
end
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
##
|
|
4
|
-
# @author Marian Kostyk <mariankostyk13895@gmail.com>
|
|
5
|
-
# @license LGPLv3 <https://www.gnu.org/licenses/lgpl-3.0.html>
|
|
6
|
-
##
|
|
7
|
-
|
|
8
|
-
module ConvenientService
|
|
9
|
-
module RSpec
|
|
10
|
-
module Helpers
|
|
11
|
-
module Classes
|
|
12
|
-
##
|
|
13
|
-
# @internal
|
|
14
|
-
# TODO: Specs.
|
|
15
|
-
#
|
|
16
|
-
class StubEntry < Support::Command
|
|
17
|
-
module Entities
|
|
18
|
-
class ValueSpec
|
|
19
|
-
##
|
|
20
|
-
# @param value [Object] Can be any type.
|
|
21
|
-
# @param feature_class [Class]
|
|
22
|
-
# @return [void]
|
|
23
|
-
#
|
|
24
|
-
def initialize(value:, feature_class: nil)
|
|
25
|
-
@value = value
|
|
26
|
-
@feature_class = feature_class
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
##
|
|
30
|
-
# @param feature_class [Class]
|
|
31
|
-
# @return [ConvenientService::RSpec::Helpers::Classes::StubEntry::Entities::ValueSpec]
|
|
32
|
-
#
|
|
33
|
-
def for(feature_class)
|
|
34
|
-
self.class.new(value: value, feature_class: feature_class)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
##
|
|
38
|
-
# @return [Object]
|
|
39
|
-
#
|
|
40
|
-
# @internal
|
|
41
|
-
# TODO: Assert.
|
|
42
|
-
#
|
|
43
|
-
def calculate_value
|
|
44
|
-
value
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
##
|
|
48
|
-
# @param other [Object] Can be any type.
|
|
49
|
-
# @return [Boolean, nil]
|
|
50
|
-
#
|
|
51
|
-
def ==(other)
|
|
52
|
-
return unless other.instance_of?(self.class)
|
|
53
|
-
|
|
54
|
-
return false if value != other.value
|
|
55
|
-
return false if feature_class != other.feature_class
|
|
56
|
-
|
|
57
|
-
true
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
protected
|
|
61
|
-
|
|
62
|
-
##
|
|
63
|
-
# @!attribute [r] value
|
|
64
|
-
# @return [Object] Can be any type.
|
|
65
|
-
#
|
|
66
|
-
attr_reader :value
|
|
67
|
-
|
|
68
|
-
##
|
|
69
|
-
# @!attribute [r] feature_class
|
|
70
|
-
# @return [Class]
|
|
71
|
-
#
|
|
72
|
-
attr_reader :feature_class
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
##
|
|
4
|
-
# @author Marian Kostyk <mariankostyk13895@gmail.com>
|
|
5
|
-
# @license LGPLv3 <https://www.gnu.org/licenses/lgpl-3.0.html>
|
|
6
|
-
##
|
|
7
|
-
|
|
8
|
-
require_relative "stub_entry/constants"
|
|
9
|
-
require_relative "stub_entry/entities"
|
|
10
|
-
|
|
11
|
-
module ConvenientService
|
|
12
|
-
module RSpec
|
|
13
|
-
module Helpers
|
|
14
|
-
module Classes
|
|
15
|
-
class StubEntry < Support::Command
|
|
16
|
-
##
|
|
17
|
-
# @!attribute [r] feature_class
|
|
18
|
-
# @return [ConvenientService::Feature]
|
|
19
|
-
#
|
|
20
|
-
attr_reader :feature_class
|
|
21
|
-
|
|
22
|
-
##
|
|
23
|
-
# @!attribute [r] entry_name
|
|
24
|
-
# @return [Symbol, String]
|
|
25
|
-
#
|
|
26
|
-
attr_reader :entry_name
|
|
27
|
-
|
|
28
|
-
##
|
|
29
|
-
# @param feature_class [ConvenientService::Feature]
|
|
30
|
-
# @param entry_name [Symbol, String]
|
|
31
|
-
# @return [void]
|
|
32
|
-
#
|
|
33
|
-
def initialize(feature_class, entry_name)
|
|
34
|
-
@feature_class = feature_class
|
|
35
|
-
@entry_name = entry_name
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
##
|
|
39
|
-
# @return [ConvenientService::RSpec::Helpers::Classes::StubEntry::Entities::StubbedFeature]
|
|
40
|
-
#
|
|
41
|
-
def call
|
|
42
|
-
Entities::StubbedFeature.new(feature_class: feature_class, entry_name: entry_name)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
##
|
|
4
|
-
# @author Marian Kostyk <mariankostyk13895@gmail.com>
|
|
5
|
-
# @license LGPLv3 <https://www.gnu.org/licenses/lgpl-3.0.html>
|
|
6
|
-
##
|
|
7
|
-
|
|
8
|
-
module ConvenientService
|
|
9
|
-
module RSpec
|
|
10
|
-
module Helpers
|
|
11
|
-
module Classes
|
|
12
|
-
class StubService < Support::Command
|
|
13
|
-
module Constants
|
|
14
|
-
module Triggers
|
|
15
|
-
##
|
|
16
|
-
# @return [ConvenientService::Support::UniqueValue]
|
|
17
|
-
#
|
|
18
|
-
STUB_SERVICE = Support::UniqueValue.new("STUB_SERVICE")
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
##
|
|
4
|
-
# @author Marian Kostyk <mariankostyk13895@gmail.com>
|
|
5
|
-
# @license LGPLv3 <https://www.gnu.org/licenses/lgpl-3.0.html>
|
|
6
|
-
##
|
|
7
|
-
|
|
8
|
-
module ConvenientService
|
|
9
|
-
module RSpec
|
|
10
|
-
module Helpers
|
|
11
|
-
module Classes
|
|
12
|
-
class StubService < Support::Command
|
|
13
|
-
module Entities
|
|
14
|
-
##
|
|
15
|
-
# @internal
|
|
16
|
-
# IMPORTANT: Do NOT cache `data`, `message`, and `code` since they can be set multiple times by `with_data`, `and_data`, `with_message`, `and_message`, `with_code`, and `and_code`.
|
|
17
|
-
#
|
|
18
|
-
class ResultSpec
|
|
19
|
-
##
|
|
20
|
-
# @param status [Symbol]
|
|
21
|
-
# @param service_class [Class]
|
|
22
|
-
# @param chain [Hash]
|
|
23
|
-
# @return [void]
|
|
24
|
-
#
|
|
25
|
-
def initialize(status:, service_class: nil, chain: {})
|
|
26
|
-
@status = status
|
|
27
|
-
@service_class = service_class
|
|
28
|
-
@chain = chain
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
##
|
|
32
|
-
# @param service_class [Class]
|
|
33
|
-
# @return [ConvenientService::RSpec::Helpers::Classes::StubService::Entities::ResultSpec]
|
|
34
|
-
#
|
|
35
|
-
def for(service_class)
|
|
36
|
-
self.class.new(status: status, service_class: service_class, chain: chain)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
##
|
|
40
|
-
# @param data [Hash]
|
|
41
|
-
# @return [ConvenientService::RSpec::Helpers::Classes::StubService::Entities::ResultSpec]
|
|
42
|
-
#
|
|
43
|
-
def with_data(data)
|
|
44
|
-
chain[:data] = data
|
|
45
|
-
|
|
46
|
-
self
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
##
|
|
50
|
-
# @param message [String]
|
|
51
|
-
# @return [ConvenientService::RSpec::Helpers::Classes::StubService::Entities::ResultSpec]
|
|
52
|
-
#
|
|
53
|
-
def with_message(message)
|
|
54
|
-
chain[:message] = message
|
|
55
|
-
|
|
56
|
-
self
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
##
|
|
60
|
-
# @param code [String]
|
|
61
|
-
# @return [ConvenientService::RSpec::Helpers::Classes::StubService::Entities::ResultSpec]
|
|
62
|
-
#
|
|
63
|
-
def with_code(code)
|
|
64
|
-
chain[:code] = code
|
|
65
|
-
|
|
66
|
-
self
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
##
|
|
70
|
-
# @param data [Hash]
|
|
71
|
-
# @return [ConvenientService::RSpec::Helpers::Classes::StubService::Entities::ResultSpec]
|
|
72
|
-
#
|
|
73
|
-
def and_data(data)
|
|
74
|
-
chain[:data] = data
|
|
75
|
-
|
|
76
|
-
self
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
##
|
|
80
|
-
# @param message [String]
|
|
81
|
-
# @return [ConvenientService::RSpec::Helpers::Classes::StubService::Entities::ResultSpec]
|
|
82
|
-
#
|
|
83
|
-
def and_message(message)
|
|
84
|
-
chain[:message] = message
|
|
85
|
-
|
|
86
|
-
self
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
##
|
|
90
|
-
# @param code [String]
|
|
91
|
-
# @return [ConvenientService::RSpec::Helpers::Classes::StubService::Entities::ResultSpec]
|
|
92
|
-
#
|
|
93
|
-
def and_code(code)
|
|
94
|
-
chain[:code] = code
|
|
95
|
-
|
|
96
|
-
self
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
##
|
|
100
|
-
# @return [Object]
|
|
101
|
-
#
|
|
102
|
-
def calculate_value
|
|
103
|
-
service_class.__send__(status, **kwargs).copy(overrides: {kwargs: {stubbed_result: true}})
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
##
|
|
107
|
-
# @param other [Object] Can be any type.
|
|
108
|
-
# @return [Boolean, nil]
|
|
109
|
-
#
|
|
110
|
-
def ==(other)
|
|
111
|
-
return unless other.instance_of?(self.class)
|
|
112
|
-
|
|
113
|
-
return false if status != other.status
|
|
114
|
-
return false if service_class != other.service_class
|
|
115
|
-
return false if chain != other.chain
|
|
116
|
-
|
|
117
|
-
true
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
protected
|
|
121
|
-
|
|
122
|
-
##
|
|
123
|
-
# @!attribute [r] status
|
|
124
|
-
# @return [Symbol]
|
|
125
|
-
#
|
|
126
|
-
attr_reader :status
|
|
127
|
-
|
|
128
|
-
##
|
|
129
|
-
# @!attribute [r] service_class
|
|
130
|
-
# @return [Class]
|
|
131
|
-
#
|
|
132
|
-
attr_reader :service_class
|
|
133
|
-
|
|
134
|
-
##
|
|
135
|
-
# @!attribute [r] chain
|
|
136
|
-
# @return [Hash]
|
|
137
|
-
#
|
|
138
|
-
attr_reader :chain
|
|
139
|
-
|
|
140
|
-
private
|
|
141
|
-
|
|
142
|
-
##
|
|
143
|
-
# @return [Hash]
|
|
144
|
-
#
|
|
145
|
-
def kwargs
|
|
146
|
-
kwargs = {}
|
|
147
|
-
|
|
148
|
-
kwargs[:data] = data if used_data?
|
|
149
|
-
kwargs[:message] = message if used_message?
|
|
150
|
-
kwargs[:code] = code if used_code?
|
|
151
|
-
|
|
152
|
-
kwargs[:service] = service_instance
|
|
153
|
-
|
|
154
|
-
kwargs
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
##
|
|
158
|
-
# @return [Boolean]
|
|
159
|
-
#
|
|
160
|
-
def used_data?
|
|
161
|
-
chain.key?(:data)
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
##
|
|
165
|
-
# @return [Boolean]
|
|
166
|
-
#
|
|
167
|
-
def used_message?
|
|
168
|
-
chain.key?(:message)
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
##
|
|
172
|
-
# @return [Boolean]
|
|
173
|
-
#
|
|
174
|
-
def used_code?
|
|
175
|
-
chain.key?(:code)
|
|
176
|
-
end
|
|
177
|
-
|
|
178
|
-
##
|
|
179
|
-
# @return [Hash]
|
|
180
|
-
#
|
|
181
|
-
def data
|
|
182
|
-
chain[:data] || {}
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
##
|
|
186
|
-
# @return [String]
|
|
187
|
-
#
|
|
188
|
-
def message
|
|
189
|
-
chain[:message] || ""
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
##
|
|
193
|
-
# @return [String]
|
|
194
|
-
#
|
|
195
|
-
def code
|
|
196
|
-
chain[:code] || ""
|
|
197
|
-
end
|
|
198
|
-
|
|
199
|
-
##
|
|
200
|
-
# @return [ConvenientService::Service]
|
|
201
|
-
#
|
|
202
|
-
def service_instance
|
|
203
|
-
service_class.new_without_initialize
|
|
204
|
-
end
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
end
|
|
208
|
-
end
|
|
209
|
-
end
|
|
210
|
-
end
|
|
211
|
-
end
|