lita-service 0.1.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 +7 -0
- data/.gitignore +18 -0
- data/.rubocop.yml +5 -0
- data/.ruby-version +1 -0
- data/.travis.yml +9 -0
- data/Gemfile +4 -0
- data/README.md +55 -0
- data/Rakefile +9 -0
- data/dump.rdb +0 -0
- data/lib/lita-service.rb +26 -0
- data/lib/lita/handlers/customer.rb +97 -0
- data/lib/lita/handlers/service.rb +78 -0
- data/lib/lita/helpers/messages_helper.rb +28 -0
- data/lib/lita/interactors/add_all.rb +66 -0
- data/lib/lita/interactors/add_quantity.rb +81 -0
- data/lib/lita/interactors/base_interactor.rb +19 -0
- data/lib/lita/interactors/change_value.rb +81 -0
- data/lib/lita/interactors/create_service.rb +57 -0
- data/lib/lita/interactors/delete_customer.rb +65 -0
- data/lib/lita/interactors/delete_service.rb +43 -0
- data/lib/lita/interactors/inscribe_customer.rb +81 -0
- data/lib/lita/interactors/list_services.rb +25 -0
- data/lib/lita/interactors/reset_quantity.rb +74 -0
- data/lib/lita/interactors/show_service.rb +41 -0
- data/lib/lita/repositories/redis.rb +38 -0
- data/lita-service.gemspec +28 -0
- data/locales/en.yml +32 -0
- data/spec/lita/handlers/customer_spec.rb +215 -0
- data/spec/lita/handlers/service_spec.rb +150 -0
- data/spec/lita/helpers/messages_helper_spec.rb +34 -0
- data/spec/lita/interactors/add_all_spec.rb +100 -0
- data/spec/lita/interactors/add_quantity_spec.rb +129 -0
- data/spec/lita/interactors/change_value_spec.rb +99 -0
- data/spec/lita/interactors/create_service_spec.rb +52 -0
- data/spec/lita/interactors/delete_customer_spec.rb +87 -0
- data/spec/lita/interactors/delete_service_spec.rb +49 -0
- data/spec/lita/interactors/inscribe_customer_spec.rb +119 -0
- data/spec/lita/interactors/list_services_spec.rb +51 -0
- data/spec/lita/interactors/reset_quantity_spec.rb +96 -0
- data/spec/lita/interactors/show_service_spec.rb +52 -0
- data/spec/lita/repositories/redis_spec.rb +71 -0
- data/spec/spec_helper.rb +19 -0
- data/templates/.gitkeep +0 -0
- data/templates/error.erb +1 -0
- data/templates/list_services.erb +10 -0
- data/templates/message.erb +1 -0
- data/templates/service_created.erb +1 -0
- data/templates/service_show.erb +30 -0
- metadata +233 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Lita::Helpers::MessagesHelper do
|
5
|
+
let(:subject) { Object.new }
|
6
|
+
let(:service) { 'TheService' }
|
7
|
+
|
8
|
+
before do
|
9
|
+
subject.extend(Lita::Helpers::MessagesHelper)
|
10
|
+
end
|
11
|
+
|
12
|
+
it '#duplicated' do
|
13
|
+
msg = I18n.t('lita.handlers.service.errors.duplicated', service_name: service)
|
14
|
+
expect(subject.msg_duplicated(service_name: service)).to eq msg
|
15
|
+
end
|
16
|
+
|
17
|
+
it '#not_found' do
|
18
|
+
msg = I18n.t('lita.handlers.service.errors.not_found', service_name: service)
|
19
|
+
expect(subject.msg_not_found(service_name: service)).to eq msg
|
20
|
+
end
|
21
|
+
|
22
|
+
it '#customer_not_found' do
|
23
|
+
msg = I18n.t('lita.handlers.service.customer.not_found', service_name: service,
|
24
|
+
customer_name: 'erlinis')
|
25
|
+
expect(subject.msg_customer_not_found(service_name: service,
|
26
|
+
customer_name: 'erlinis')).to eq msg
|
27
|
+
end
|
28
|
+
it '#customer_duplicated' do
|
29
|
+
msg = I18n.t('lita.handlers.service.customer.duplicated', service_name: service,
|
30
|
+
customer_name: 'erlinis')
|
31
|
+
expect(subject.msg_customer_duplicated(service_name: service,
|
32
|
+
customer_name: 'erlinis')).to eq msg
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Lita::Interactors::AddAll do
|
5
|
+
let(:data) { ['the-service add all', name, 'add', nil] }
|
6
|
+
let(:interactor) { described_class.new(handler, data) }
|
7
|
+
let(:handler) { double('handler') }
|
8
|
+
let(:fake_repository) { double('redis-repository') }
|
9
|
+
|
10
|
+
before do
|
11
|
+
allow(interactor).to receive(:repository).and_return(fake_repository)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#perform' do
|
15
|
+
let(:name) { 'the-service' }
|
16
|
+
|
17
|
+
describe 'when the service does not exist' do
|
18
|
+
let(:error_message) do
|
19
|
+
I18n.t('lita.handlers.service.errors.not_found', service_name: name)
|
20
|
+
end
|
21
|
+
|
22
|
+
before do
|
23
|
+
allow(fake_repository).to receive(:exists?).with(name).and_return(false)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'shows an error message' do
|
27
|
+
interactor.perform
|
28
|
+
expect(interactor.success?).to eq false
|
29
|
+
expect(interactor.error).to eq error_message
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'when service exists' do
|
34
|
+
let(:service) do
|
35
|
+
{ name: name,
|
36
|
+
value: 2000,
|
37
|
+
state: 'active',
|
38
|
+
customers: {
|
39
|
+
erlinis: { quantity: 3, value: 2000 },
|
40
|
+
khal: { quantity: 2, value: 2000 }
|
41
|
+
} }
|
42
|
+
end
|
43
|
+
|
44
|
+
let(:service_quantities_updated) do
|
45
|
+
{ name: name,
|
46
|
+
value: 2000,
|
47
|
+
state: 'active',
|
48
|
+
customers: {
|
49
|
+
erlinis: { quantity: (3 + quantity), value: 2000 },
|
50
|
+
khal: { quantity: (2 + quantity), value: 2000 }
|
51
|
+
} }
|
52
|
+
end
|
53
|
+
|
54
|
+
let(:success_message) do
|
55
|
+
I18n.t('lita.handlers.service.add_all.success',
|
56
|
+
quantity: quantity)
|
57
|
+
end
|
58
|
+
|
59
|
+
before do
|
60
|
+
allow(fake_repository).to receive(:exists?).with(name).and_return(true)
|
61
|
+
allow(fake_repository).to receive(:find).with(name).and_return(service)
|
62
|
+
end
|
63
|
+
|
64
|
+
describe 'with a given quantity' do
|
65
|
+
let(:data) { ['the-service add all 3', name, 'add', '3'] }
|
66
|
+
let(:quantity) { 3 }
|
67
|
+
|
68
|
+
it 'increments the quantity to all' do
|
69
|
+
expect(fake_repository).to receive(:update).with(service_quantities_updated)
|
70
|
+
interactor.perform
|
71
|
+
expect(interactor.success?).to eq true
|
72
|
+
expect(interactor.message).to eq success_message
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe 'with a negative quantity' do
|
77
|
+
let(:data) { ['the-service add all -1', name, 'add', '-1'] }
|
78
|
+
let(:quantity) { -1 }
|
79
|
+
|
80
|
+
it 'decrease the quantity to all' do
|
81
|
+
expect(fake_repository).to receive(:update).with(service_quantities_updated)
|
82
|
+
interactor.perform
|
83
|
+
expect(interactor.success?).to eq true
|
84
|
+
expect(interactor.message).to eq success_message
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe 'without a quantity' do
|
89
|
+
let(:quantity) { 1 }
|
90
|
+
|
91
|
+
it 'increments the quantity to all with default value' do
|
92
|
+
expect(fake_repository).to receive(:update).with(service_quantities_updated)
|
93
|
+
interactor.perform
|
94
|
+
expect(interactor.success?).to eq true
|
95
|
+
expect(interactor.message).to eq success_message
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Lita::Interactors::AddQuantity do
|
5
|
+
let(:data) { ['the-service add @erlinis', name, 'add', '@erlinis', nil] }
|
6
|
+
let(:interactor) { described_class.new(handler, data) }
|
7
|
+
let(:handler) { double('handler') }
|
8
|
+
let(:fake_repository) { double('redis-repository') }
|
9
|
+
|
10
|
+
before do
|
11
|
+
allow(interactor).to receive(:repository).and_return(fake_repository)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#perform' do
|
15
|
+
let(:name) { 'the-service' }
|
16
|
+
|
17
|
+
describe 'when the service does not exist' do
|
18
|
+
let(:error_message) do
|
19
|
+
I18n.t('lita.handlers.service.errors.not_found', service_name: name)
|
20
|
+
end
|
21
|
+
|
22
|
+
before do
|
23
|
+
allow(fake_repository).to receive(:exists?).with(name).and_return(false)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'shows an error message' do
|
27
|
+
interactor.perform
|
28
|
+
expect(interactor.success?).to eq false
|
29
|
+
expect(interactor.error).to eq error_message
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'when service exists' do
|
34
|
+
describe 'when customer is not in the service' do
|
35
|
+
let(:data) { ['the-service add erlinis 1', name, 'add', 'erlinis', 1] }
|
36
|
+
|
37
|
+
let(:service) do
|
38
|
+
{ name: name,
|
39
|
+
value: 2000,
|
40
|
+
state: 'active',
|
41
|
+
customers: { khal: { quantity: 1, value: 2000 } } }
|
42
|
+
end
|
43
|
+
|
44
|
+
let(:error_message) do
|
45
|
+
I18n.t('lita.handlers.service.customer.not_found',
|
46
|
+
service_name: name, customer_name: 'erlinis')
|
47
|
+
end
|
48
|
+
|
49
|
+
before do
|
50
|
+
allow(fake_repository).to receive(:exists?).with(name).and_return(true)
|
51
|
+
allow(fake_repository).to receive(:find).with(name).and_return(service)
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'shows an error message' do
|
55
|
+
interactor.perform
|
56
|
+
expect(interactor.success?).to eq false
|
57
|
+
expect(interactor.error).to eq error_message
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe 'when customer is in service' do
|
62
|
+
let(:service) do
|
63
|
+
{ name: name,
|
64
|
+
value: 2000,
|
65
|
+
state: 'active',
|
66
|
+
customers: { erlinis: { quantity: 3, value: 2000 } } }
|
67
|
+
end
|
68
|
+
|
69
|
+
let(:service_customer_updated) do
|
70
|
+
{ name: name,
|
71
|
+
value: 2000,
|
72
|
+
state: 'active',
|
73
|
+
customers: {
|
74
|
+
erlinis: { quantity: customer_quantity, value: 2000 }
|
75
|
+
} }
|
76
|
+
end
|
77
|
+
|
78
|
+
let(:success_message) do
|
79
|
+
I18n.t('lita.handlers.service.add.success',
|
80
|
+
customer_name: 'erlinis',
|
81
|
+
customer_quantity: customer_quantity,
|
82
|
+
quantity: quantity)
|
83
|
+
end
|
84
|
+
|
85
|
+
before do
|
86
|
+
allow(fake_repository).to receive(:exists?).with(name).and_return(true)
|
87
|
+
allow(fake_repository).to receive(:find).with(name).and_return(service)
|
88
|
+
allow(fake_repository).to receive(:update).with(service_customer_updated)
|
89
|
+
end
|
90
|
+
|
91
|
+
describe 'with a given quantity' do
|
92
|
+
let(:data) { ['the-service add @erlinis 3', name, 'add', '@erlinis', '3'] }
|
93
|
+
let(:customer_quantity) { 6 }
|
94
|
+
let(:quantity) { 3 }
|
95
|
+
|
96
|
+
it 'increments the customer quantity' do
|
97
|
+
interactor.perform
|
98
|
+
expect(interactor.success?).to eq true
|
99
|
+
expect(interactor.message).to eq success_message
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe 'with a negative quantity' do
|
104
|
+
let(:data) { ['the-service add @erlinis -1', name, 'add', '@erlinis', '-1'] }
|
105
|
+
let(:customer_quantity) { 2 }
|
106
|
+
let(:quantity) { -1 }
|
107
|
+
|
108
|
+
it 'decrease the customer quantity' do
|
109
|
+
interactor.perform
|
110
|
+
expect(interactor.success?).to eq true
|
111
|
+
expect(interactor.message).to eq success_message
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe 'without a quantity' do
|
116
|
+
let(:data) { ['the-service add @erlinis', name, 'add', '@erlinis', nil] }
|
117
|
+
let(:customer_quantity) { 4 }
|
118
|
+
let(:quantity) { 1 }
|
119
|
+
|
120
|
+
it 'increments the customer quantity with default value' do
|
121
|
+
interactor.perform
|
122
|
+
expect(interactor.success?).to eq true
|
123
|
+
expect(interactor.message).to eq success_message
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Lita::Interactors::ChangeValue do
|
5
|
+
let(:data) { ['the-service value @erlinis 2000', name, '@erlinis', '2000'] }
|
6
|
+
let(:interactor) { described_class.new(handler, data) }
|
7
|
+
let(:handler) { double('handler') }
|
8
|
+
let(:fake_repository) { double('redis-repository') }
|
9
|
+
|
10
|
+
before do
|
11
|
+
allow(interactor).to receive(:repository).and_return(fake_repository)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#perform' do
|
15
|
+
let(:name) { 'the-service' }
|
16
|
+
|
17
|
+
describe 'when the service does not exist' do
|
18
|
+
let(:error_message) do
|
19
|
+
I18n.t('lita.handlers.service.errors.not_found', service_name: name)
|
20
|
+
end
|
21
|
+
|
22
|
+
before do
|
23
|
+
allow(fake_repository).to receive(:exists?).with(name).and_return(false)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'shows an error message' do
|
27
|
+
interactor.perform
|
28
|
+
expect(interactor.success?).to eq false
|
29
|
+
expect(interactor.error).to eq error_message
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'when service exists' do
|
34
|
+
describe 'when customer is not in the service' do
|
35
|
+
let(:service) do
|
36
|
+
{ name: name,
|
37
|
+
value: 2000,
|
38
|
+
state: 'active',
|
39
|
+
customers: { khal: { quantity: 1, value: 2000 } } }
|
40
|
+
end
|
41
|
+
|
42
|
+
let(:error_message) do
|
43
|
+
I18n.t('lita.handlers.service.customer.not_found',
|
44
|
+
service_name: name, customer_name: 'erlinis')
|
45
|
+
end
|
46
|
+
|
47
|
+
before do
|
48
|
+
allow(fake_repository).to receive(:exists?).with(name).and_return(true)
|
49
|
+
allow(fake_repository).to receive(:find).with(name).and_return(service)
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'shows an error message' do
|
53
|
+
interactor.perform
|
54
|
+
expect(interactor.success?).to eq false
|
55
|
+
expect(interactor.error).to eq error_message
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe 'when customer is in service' do
|
60
|
+
let(:service) do
|
61
|
+
{ name: name,
|
62
|
+
value: 2000,
|
63
|
+
state: 'active',
|
64
|
+
customers: { erlinis: { quantity: 1, value: 1000 } } }
|
65
|
+
end
|
66
|
+
|
67
|
+
let(:service_customer_updated) do
|
68
|
+
{ name: name,
|
69
|
+
value: 2000,
|
70
|
+
state: 'active',
|
71
|
+
customers: { erlinis: { quantity: 1, value: 2000 } } }
|
72
|
+
end
|
73
|
+
|
74
|
+
let(:success_message) do
|
75
|
+
I18n.t('lita.handlers.service.set_value.success',
|
76
|
+
customer_name: 'erlinis',
|
77
|
+
customer_value: customer_value,
|
78
|
+
old_value: 1000)
|
79
|
+
end
|
80
|
+
|
81
|
+
before do
|
82
|
+
allow(fake_repository).to receive(:exists?).with(name).and_return(true)
|
83
|
+
allow(fake_repository).to receive(:find).with(name).and_return(service)
|
84
|
+
allow(fake_repository).to receive(:update).with(service_customer_updated)
|
85
|
+
end
|
86
|
+
|
87
|
+
describe 'updates customer value' do
|
88
|
+
let(:customer_value) { 2000 }
|
89
|
+
|
90
|
+
it 'update users value' do
|
91
|
+
interactor.perform
|
92
|
+
expect(interactor.success?).to eq true
|
93
|
+
expect(interactor.message).to eq success_message
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Lita::Interactors::CreateService do
|
5
|
+
let(:interactor) { described_class.new(handler, data) }
|
6
|
+
let(:handler) { double('handler') }
|
7
|
+
let(:data) { ['create new-service', name, 2000] }
|
8
|
+
let(:name) { 'new-service' }
|
9
|
+
let(:fake_repository) { double('redis-repository') }
|
10
|
+
|
11
|
+
before do
|
12
|
+
allow(interactor).to receive(:repository).and_return(fake_repository)
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#perform' do
|
16
|
+
describe 'when the service does not exist' do
|
17
|
+
let(:service) do
|
18
|
+
{ name: name,
|
19
|
+
value: 2000,
|
20
|
+
state: 'active',
|
21
|
+
customers: {} }
|
22
|
+
end
|
23
|
+
|
24
|
+
before do
|
25
|
+
allow(fake_repository).to receive(:exists?).with(name).and_return(false)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'creates the service' do
|
29
|
+
expect(fake_repository).to receive(:add).with(service)
|
30
|
+
interactor.perform
|
31
|
+
expect(interactor.success?).to eq true
|
32
|
+
expect(interactor.message).to eq service
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe 'when service exists' do
|
37
|
+
let(:error_message) do
|
38
|
+
I18n.t('lita.handlers.service.errors.duplicated', service_name: name)
|
39
|
+
end
|
40
|
+
|
41
|
+
before do
|
42
|
+
allow(fake_repository).to receive(:exists?).with(name).and_return(true)
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'does not create the service' do
|
46
|
+
interactor.perform
|
47
|
+
expect(interactor.success?).to eq false
|
48
|
+
expect(interactor.error).to eq error_message
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Lita::Interactors::DeleteCustomer do
|
5
|
+
let(:data) { ['the-service delete @erlinis', name, 'delete', '@erlinis', nil] }
|
6
|
+
let(:interactor) { described_class.new(handler, data) }
|
7
|
+
let(:handler) { double('handler') }
|
8
|
+
let(:fake_repository) { double('redis-repository') }
|
9
|
+
|
10
|
+
before do
|
11
|
+
allow(interactor).to receive(:repository).and_return(fake_repository)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#perform' do
|
15
|
+
let(:name) { 'the-service' }
|
16
|
+
|
17
|
+
describe 'when the service does not exist' do
|
18
|
+
let(:error_message) do
|
19
|
+
I18n.t('lita.handlers.service.errors.not_found', service_name: name)
|
20
|
+
end
|
21
|
+
|
22
|
+
before do
|
23
|
+
allow(fake_repository).to receive(:exists?).with(name).and_return(false)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'shows an error message' do
|
27
|
+
interactor.perform
|
28
|
+
expect(interactor.success?).to eq false
|
29
|
+
expect(interactor.error).to eq error_message
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'when service exists' do
|
34
|
+
let(:service) do
|
35
|
+
{ name: name,
|
36
|
+
value: 2000,
|
37
|
+
state: 'active',
|
38
|
+
customers: { erlinis: { quantity: 1, value: 2000 } } }
|
39
|
+
end
|
40
|
+
|
41
|
+
let(:service_without_customer) do
|
42
|
+
{ name: name,
|
43
|
+
value: 2000,
|
44
|
+
state: 'active',
|
45
|
+
customers: {} }
|
46
|
+
end
|
47
|
+
|
48
|
+
describe 'customer is in service' do
|
49
|
+
let(:success_message) do
|
50
|
+
I18n.t('lita.handlers.service.delete_customer.success',
|
51
|
+
service_name: name, customer_name: 'erlinis')
|
52
|
+
end
|
53
|
+
|
54
|
+
before do
|
55
|
+
allow(fake_repository).to receive(:exists?).with(name).and_return(true)
|
56
|
+
allow(fake_repository).to receive(:find).with(name).and_return(service)
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'removes customer from service' do
|
60
|
+
expect(fake_repository).to receive(:update).with(service_without_customer)
|
61
|
+
interactor.perform
|
62
|
+
expect(interactor.success?).to eq true
|
63
|
+
expect(interactor.message).to eq success_message
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe 'customer not in service' do
|
68
|
+
let(:error_message) do
|
69
|
+
I18n.t('lita.handlers.service.customer.not_found',
|
70
|
+
service_name: name, customer_name: 'erlinis')
|
71
|
+
end
|
72
|
+
|
73
|
+
before do
|
74
|
+
allow(fake_repository).to receive(:exists?).with(name).and_return(true)
|
75
|
+
allow(fake_repository).to receive(:find).with(name)
|
76
|
+
.and_return(service_without_customer)
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'shows a customer not found error' do
|
80
|
+
interactor.perform
|
81
|
+
expect(interactor.success?).to eq false
|
82
|
+
expect(interactor.error).to eq error_message
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|