1
0
Fork 0

Add interactor SetAccountPerson

This commit is contained in:
Alex Kotov 2019-08-14 19:29:33 +05:00
parent 605e7602e9
commit acc901e714
Signed by: kotovalexarian
GPG key ID: 553C0EBBEB5D5F08
2 changed files with 74 additions and 0 deletions

View file

@ -0,0 +1,10 @@
# frozen_string_literal: true
class SetAccountPerson
include Interactor
def call
context.account.update! person: context.person,
contact_list: context.new_contact_list
end
end

View file

@ -0,0 +1,64 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe SetAccountPerson do
subject { described_class.call account: account, person: person }
let(:account) { create :usual_account, contact_list: old_contact_list }
let(:person) { create :initial_person, contact_list: new_contact_list }
let(:old_contact_list) { create :some_contact_list }
let(:new_contact_list) { create :some_contact_list }
specify do
expect { subject }.to \
change(account, :person)
.from(nil)
.to(person)
end
specify do
expect { subject }.to \
change(person, :account)
.from(nil)
.to(account)
end
specify do
expect { subject }.to \
change(account, :contact_list)
.from(old_contact_list)
.to(new_contact_list)
end
specify do
expect { subject }.not_to \
change(person, :contact_list)
.from(new_contact_list)
end
specify do
expect { subject }.not_to \
change(old_contact_list.contacts, :count)
.from(old_contact_list.contacts.count)
end
specify do
expect { subject }.not_to \
change(new_contact_list.contacts, :count)
.from(new_contact_list.contacts.count)
end
specify do
expect { subject }.not_to \
change(old_contact_list.contacts, :to_a)
.from(old_contact_list.contacts.to_a)
end
specify do
expect { subject }.not_to \
change(new_contact_list.contacts, :to_a)
.from(new_contact_list.contacts.to_a)
end
end