1
0
Fork 0

Improve interactors

This commit is contained in:
Alex Kotov 2019-08-14 19:55:00 +05:00
parent fb42db9fd1
commit 3df326e221
Signed by: kotovalexarian
GPG key ID: 553C0EBBEB5D5F08
4 changed files with 23 additions and 21 deletions

View file

@ -4,6 +4,6 @@ class DestroyContactList
include Interactor
def call
context.destroyable_contact_list.destroy!
context.old_contact_list.destroy!
end
end

View file

@ -12,8 +12,7 @@ class MergeAccountPerson
end
before do
context.from = context.account.contact_list
context.to = context.person.contact_list
context.destroyable_contact_list = context.account.contact_list
context.old_contact_list = context.account.contact_list
context.new_contact_list = context.person.contact_list
end
end

View file

@ -4,14 +4,14 @@ class MergeContactLists
include Interactor
after do
context.from.contacts.reload
context.to.contacts.reload
context.old_contact_list.contacts.reload
context.new_contact_list.contacts.reload
end
def call
ActiveRecord::Base.transaction do
context.from.contacts.each do |contact|
contact.update! contact_list: context.to
context.old_contact_list.contacts.each do |contact|
contact.update! contact_list: context.new_contact_list
end
end
end

View file

@ -3,36 +3,39 @@
require 'rails_helper'
RSpec.describe MergeContactLists do
subject { described_class.call from: from, to: to }
subject do
described_class.call old_contact_list: old_contact_list,
new_contact_list: new_contact_list
end
let(:from) { create :some_contact_list }
let(:to) { create :some_contact_list }
let(:old_contact_list) { create :some_contact_list }
let(:new_contact_list) { create :some_contact_list }
specify do
expect { subject }.to \
change(from.contacts, :count)
.from(from.contacts.count)
change(old_contact_list.contacts, :count)
.from(old_contact_list.contacts.count)
.to(0)
end
specify do
expect { subject }.to \
change(to.contacts, :count)
.from(to.contacts.count)
.to(from.contacts.count + to.contacts.count)
change(new_contact_list.contacts, :count)
.from(new_contact_list.contacts.count)
.to(old_contact_list.contacts.count + new_contact_list.contacts.count)
end
specify do
expect { subject }.to \
change(from.contacts, :to_a)
.from(from.contacts.to_a)
change(old_contact_list.contacts, :to_a)
.from(old_contact_list.contacts.to_a)
.to([])
end
specify do
expect { subject }.to \
change(to.contacts, :to_a)
.from(to.contacts.to_a)
.to(to.contacts.to_a + from.contacts.to_a)
change(new_contact_list.contacts, :to_a)
.from(new_contact_list.contacts.to_a)
.to(new_contact_list.contacts.to_a + old_contact_list.contacts.to_a)
end
end