service_objects 0.1.0 → 1.0.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/.coveralls.yml +1 -0
- data/.metrics +1 -0
- data/.travis.yml +9 -1
- data/.yardopts +1 -1
- data/Gemfile +1 -1
- data/Guardfile +29 -8
- data/LICENSE +1 -1
- data/README.md +179 -342
- data/Rakefile +3 -3
- data/config/metrics/churn.yml +1 -1
- data/config/metrics/flay.yml +1 -1
- data/config/metrics/metric_fu.yml +1 -0
- data/config/metrics/rubocop.yml +4 -4
- data/config/metrics/simplecov.yml +1 -1
- data/lib/service_objects.rb +6 -9
- data/lib/service_objects/base.rb +190 -17
- data/lib/service_objects/listener.rb +21 -75
- data/lib/service_objects/message.rb +15 -96
- data/lib/service_objects/version.rb +1 -1
- data/service_objects.gemspec +11 -9
- data/spec/lib/base_spec.rb +247 -0
- data/spec/lib/listener_spec.rb +96 -0
- data/spec/lib/message_spec.rb +48 -0
- data/spec/spec_helper.rb +8 -6
- metadata +56 -93
- data/bin/service +0 -17
- data/config/metrics/pippi.yml +0 -3
- data/lib/service_objects/cli.rb +0 -117
- data/lib/service_objects/cli/locale.erb +0 -20
- data/lib/service_objects/cli/service.erb +0 -125
- data/lib/service_objects/cli/spec.erb +0 -87
- data/lib/service_objects/helpers.rb +0 -17
- data/lib/service_objects/helpers/dependable.rb +0 -63
- data/lib/service_objects/helpers/exceptions.rb +0 -64
- data/lib/service_objects/helpers/messages.rb +0 -95
- data/lib/service_objects/helpers/parameterized.rb +0 -85
- data/lib/service_objects/helpers/parameters.rb +0 -71
- data/lib/service_objects/helpers/validations.rb +0 -54
- data/lib/service_objects/invalid.rb +0 -55
- data/lib/service_objects/null.rb +0 -26
- data/lib/service_objects/parsers.rb +0 -13
- data/lib/service_objects/parsers/dependency.rb +0 -69
- data/lib/service_objects/parsers/notification.rb +0 -85
- data/lib/service_objects/rspec.rb +0 -75
- data/lib/service_objects/utils/normal_hash.rb +0 -34
- data/spec/tests/base_spec.rb +0 -43
- data/spec/tests/bin/service_spec.rb +0 -18
- data/spec/tests/cli_spec.rb +0 -179
- data/spec/tests/helpers/dependable_spec.rb +0 -77
- data/spec/tests/helpers/exceptions_spec.rb +0 -112
- data/spec/tests/helpers/messages_spec.rb +0 -64
- data/spec/tests/helpers/parameterized_spec.rb +0 -136
- data/spec/tests/helpers/parameters_spec.rb +0 -71
- data/spec/tests/helpers/validations_spec.rb +0 -60
- data/spec/tests/invalid_spec.rb +0 -69
- data/spec/tests/listener_spec.rb +0 -73
- data/spec/tests/message_spec.rb +0 -191
- data/spec/tests/null_spec.rb +0 -17
- data/spec/tests/parsers/dependency_spec.rb +0 -29
- data/spec/tests/parsers/notification_spec.rb +0 -84
- data/spec/tests/rspec_spec.rb +0 -86
- data/spec/tests/utils/normal_hash_spec.rb +0 -16
data/spec/tests/null_spec.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
describe ServiceObjects::NULL do
|
4
|
-
|
5
|
-
it "respond to arbitrary method" do
|
6
|
-
expect(true).to eq subject.respond_to?(:arbitrary_method)
|
7
|
-
end
|
8
|
-
|
9
|
-
it "returns itself" do
|
10
|
-
expect(subject.arbitrary_method).to eq subject
|
11
|
-
end
|
12
|
-
|
13
|
-
it "is a singleton" do
|
14
|
-
expect(subject.class.instance.__id__).to eq subject.__id__
|
15
|
-
end
|
16
|
-
|
17
|
-
end # describe ServiceObjects::NULL
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "service_objects/parsers/dependency"
|
3
|
-
|
4
|
-
describe ServiceObjects::Parsers::Dependency do
|
5
|
-
|
6
|
-
subject { described_class.new "Get_item{add/item.do.chain}" }
|
7
|
-
|
8
|
-
describe "#name" do
|
9
|
-
|
10
|
-
it "returns the dependency name in snake case" do
|
11
|
-
expect(subject.name).to eq "get_item"
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "#type" do
|
16
|
-
|
17
|
-
it "returns the dependency type as is" do
|
18
|
-
expect(subject.type).to eq "Add::Item.do.chain"
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe "#listener" do
|
23
|
-
|
24
|
-
it "returns the dependency listener name" do
|
25
|
-
expect(subject.listener).to eq "GetItemListener"
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
end # describe ServiceObjects::Parsers::Dependency
|
@@ -1,84 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "service_objects/parsers/notification"
|
3
|
-
|
4
|
-
describe ServiceObjects::Parsers::Notification do
|
5
|
-
|
6
|
-
describe "#name" do
|
7
|
-
|
8
|
-
it "returns the name of the notification" do
|
9
|
-
subject = described_class.new "not_found:item:messages"
|
10
|
-
expect(subject.name).to eq "not_found"
|
11
|
-
end
|
12
|
-
|
13
|
-
end # describe #name
|
14
|
-
|
15
|
-
describe "#exception" do
|
16
|
-
|
17
|
-
it "returns the name of the exception" do
|
18
|
-
subject = described_class.new "not_found:item:messages"
|
19
|
-
expect(subject.exception).to eq "NotFound"
|
20
|
-
end
|
21
|
-
|
22
|
-
end # describe #exception
|
23
|
-
|
24
|
-
describe "#args" do
|
25
|
-
|
26
|
-
it "returns all notification arguments" do
|
27
|
-
subject = described_class.new "success:messages:info:item"
|
28
|
-
expect(subject.args).to eq %w(messages info item)
|
29
|
-
end
|
30
|
-
|
31
|
-
end # describe #args" do
|
32
|
-
|
33
|
-
describe "#non_messages" do
|
34
|
-
|
35
|
-
it "returns all args except for messages" do
|
36
|
-
subject = described_class.new "success:messages:info:item"
|
37
|
-
expect(subject.non_messages).to eq %w(info item)
|
38
|
-
end
|
39
|
-
|
40
|
-
end # describe #non_messages
|
41
|
-
|
42
|
-
describe "#publish_messages?" do
|
43
|
-
|
44
|
-
it "returns true if messages published" do
|
45
|
-
subject = described_class.new "found:item:messages"
|
46
|
-
expect(subject.publish_messages?).to eq true
|
47
|
-
end
|
48
|
-
|
49
|
-
it "returns false unless messages published" do
|
50
|
-
subject = described_class.new "found:item:info"
|
51
|
-
expect(subject.publish_messages?).to eq false
|
52
|
-
end
|
53
|
-
|
54
|
-
end # describe #publish_messages?
|
55
|
-
|
56
|
-
describe "#error?" do
|
57
|
-
|
58
|
-
it "returns true for errors" do
|
59
|
-
subject = described_class.new "error:messages"
|
60
|
-
expect(subject).to be_error
|
61
|
-
end
|
62
|
-
|
63
|
-
it "returns false otherwise" do
|
64
|
-
subject = described_class.new "found:messages"
|
65
|
-
expect(subject).not_to be_error
|
66
|
-
end
|
67
|
-
|
68
|
-
end # describe #error?
|
69
|
-
|
70
|
-
describe "#order" do
|
71
|
-
|
72
|
-
it "returns 1 for errors" do
|
73
|
-
subject = described_class.new "error:messages"
|
74
|
-
expect(subject.order).to eq 1
|
75
|
-
end
|
76
|
-
|
77
|
-
it "returns 0 otherwise" do
|
78
|
-
subject = described_class.new "found:messages"
|
79
|
-
expect(subject.order).to eq 0
|
80
|
-
end
|
81
|
-
|
82
|
-
end # describe #order
|
83
|
-
|
84
|
-
end # describe ServiceObjects::Parsers::Notification
|
data/spec/tests/rspec_spec.rb
DELETED
@@ -1,86 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "service_objects/rspec"
|
3
|
-
|
4
|
-
describe ServiceObjects::RSpec do
|
5
|
-
|
6
|
-
let(:test_class) { Class.new(Object).__send__(:include, described_class) }
|
7
|
-
subject { test_class.new }
|
8
|
-
|
9
|
-
describe "#params" do
|
10
|
-
|
11
|
-
it "returns a hash" do
|
12
|
-
expect(subject.params).to eq({})
|
13
|
-
end
|
14
|
-
|
15
|
-
end # describe #params
|
16
|
-
|
17
|
-
describe "listener" do
|
18
|
-
|
19
|
-
it "should be spy" do
|
20
|
-
expect(subject.listener).to be_kind_of ::RSpec::Mocks::Double
|
21
|
-
end
|
22
|
-
|
23
|
-
end # describe #listener
|
24
|
-
|
25
|
-
describe "#service" do
|
26
|
-
|
27
|
-
let(:service_class) { ServiceObjects::Base }
|
28
|
-
before { allow(subject).to receive(:described_class) { service_class } }
|
29
|
-
|
30
|
-
it "returns the object of described class" do
|
31
|
-
expect(subject.service).to be_kind_of(service_class)
|
32
|
-
end
|
33
|
-
|
34
|
-
it "initializes the object with given params" do
|
35
|
-
allow(subject).to receive(:params) { { foo: :bar } }
|
36
|
-
|
37
|
-
expect(service_class)
|
38
|
-
.to receive(:new)
|
39
|
-
.with(subject.params)
|
40
|
-
.and_call_original
|
41
|
-
subject.service
|
42
|
-
end
|
43
|
-
|
44
|
-
it "subscribes the listener" do
|
45
|
-
listener = double
|
46
|
-
allow(subject).to receive(:listener) { listener }
|
47
|
-
|
48
|
-
expect(service_class)
|
49
|
-
.to receive_message_chain(:new, :subscribe)
|
50
|
-
.with(listener)
|
51
|
-
subject.service
|
52
|
-
end
|
53
|
-
|
54
|
-
end # describe #service
|
55
|
-
|
56
|
-
describe "#service_double" do
|
57
|
-
|
58
|
-
it "returns a service object" do
|
59
|
-
expect(subject.service_double).to be_kind_of ServiceObjects::Base
|
60
|
-
end
|
61
|
-
|
62
|
-
it "runs given block in the service's scope" do
|
63
|
-
service_double = subject.service_double(:foo) { |name| publish name }
|
64
|
-
expect(service_double).to receive(:publish).with(:foo)
|
65
|
-
service_double.run
|
66
|
-
end
|
67
|
-
|
68
|
-
end # describe #service_double
|
69
|
-
|
70
|
-
describe "#inject" do
|
71
|
-
|
72
|
-
let(:service_class) { Class.new ServiceObjects::Base }
|
73
|
-
let(:injection) { double }
|
74
|
-
let(:params) { double }
|
75
|
-
|
76
|
-
before { allow(subject).to receive(:described_class) { service_class } }
|
77
|
-
|
78
|
-
it "makes service dependency to construct given object" do
|
79
|
-
subject.inject :foo, with: params, constructs: injection
|
80
|
-
|
81
|
-
expect(subject.service.foo.new(params)).to eq injection
|
82
|
-
end
|
83
|
-
|
84
|
-
end # describe #inject
|
85
|
-
|
86
|
-
end # describe ServiceObjects::RSpec
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
describe ServiceObjects::Utils::NormalHash do
|
4
|
-
|
5
|
-
describe ".from" do
|
6
|
-
|
7
|
-
it "symbolizes keys of existing hash" do
|
8
|
-
source = { "foo" => "foo", "bar" => { "bar" => "bar", "baz" => nil } }
|
9
|
-
target = { foo: "foo", bar: { bar: "bar", baz: nil } }
|
10
|
-
|
11
|
-
expect(described_class.from(source)).to eq target
|
12
|
-
end
|
13
|
-
|
14
|
-
end # .new
|
15
|
-
|
16
|
-
end # ServiceObjects::Utils::NormalHash
|