2018-12-09 22:32:35 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
require 'rails_helper'
|
|
|
|
|
|
|
|
RSpec.describe Person do
|
2019-07-20 05:53:51 -04:00
|
|
|
subject { create :initial_person }
|
2018-12-09 22:32:35 -05:00
|
|
|
|
2019-03-26 18:06:03 -04:00
|
|
|
it_behaves_like 'nameable'
|
|
|
|
|
2019-06-26 20:21:37 -04:00
|
|
|
xit { is_expected.to belong_to(:contacts_list).required }
|
|
|
|
|
2018-12-14 23:20:13 -05:00
|
|
|
it { is_expected.to have_one(:account).dependent(:restrict_with_exception) }
|
|
|
|
|
2019-04-28 09:08:02 -04:00
|
|
|
it do
|
|
|
|
is_expected.to \
|
|
|
|
have_many(:relationships)
|
2019-04-28 10:12:02 -04:00
|
|
|
.inverse_of(:person)
|
2019-04-28 09:08:02 -04:00
|
|
|
.dependent(:restrict_with_exception)
|
2019-07-20 02:22:47 -04:00
|
|
|
.order(from_date: :asc)
|
2019-04-28 09:08:02 -04:00
|
|
|
end
|
|
|
|
|
2019-04-28 10:20:28 -04:00
|
|
|
it do
|
|
|
|
is_expected.to \
|
|
|
|
have_one(:current_relationship)
|
|
|
|
.class_name('Relationship')
|
|
|
|
.inverse_of(:person)
|
2019-07-20 02:03:29 -04:00
|
|
|
.dependent(:restrict_with_exception)
|
2019-07-20 02:22:47 -04:00
|
|
|
.order(from_date: :desc)
|
2019-04-28 10:20:28 -04:00
|
|
|
end
|
|
|
|
|
2019-07-20 05:53:51 -04:00
|
|
|
it do
|
|
|
|
is_expected.to \
|
|
|
|
have_one(:regional_office)
|
|
|
|
.inverse_of(:people)
|
|
|
|
.through(:current_relationship)
|
|
|
|
.source(:regional_office)
|
|
|
|
.dependent(:restrict_with_exception)
|
|
|
|
end
|
|
|
|
|
2019-07-15 17:19:11 -04:00
|
|
|
it do
|
|
|
|
is_expected.to \
|
|
|
|
have_many(:person_comments)
|
|
|
|
.dependent(:restrict_with_exception)
|
|
|
|
end
|
|
|
|
|
2019-01-30 22:04:42 -05:00
|
|
|
it do
|
|
|
|
is_expected.to \
|
|
|
|
have_many(:passports)
|
|
|
|
.dependent(:restrict_with_exception)
|
2019-03-25 19:11:52 -04:00
|
|
|
end
|
|
|
|
|
2018-12-14 23:09:43 -05:00
|
|
|
it { is_expected.not_to validate_presence_of :regional_office }
|
2018-12-15 00:34:46 -05:00
|
|
|
|
2019-04-28 10:12:02 -04:00
|
|
|
describe '#relationships' do
|
|
|
|
let! :relationship_2 do
|
2019-07-20 02:02:32 -04:00
|
|
|
create :supporter_relationship,
|
|
|
|
person: subject,
|
2019-07-20 02:22:47 -04:00
|
|
|
from_date: 4.days.ago
|
2019-04-28 10:12:02 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
let! :relationship_3 do
|
2019-07-20 02:02:32 -04:00
|
|
|
create :supporter_relationship,
|
|
|
|
person: subject,
|
2019-07-20 02:22:47 -04:00
|
|
|
from_date: 2.days.ago
|
2019-04-28 10:12:02 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
let! :relationship_1 do
|
2019-07-20 02:02:32 -04:00
|
|
|
create :supporter_relationship,
|
|
|
|
person: subject,
|
2019-07-20 02:22:47 -04:00
|
|
|
from_date: 6.days.ago
|
2019-04-28 10:12:02 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
specify do
|
|
|
|
expect(subject.relationships).to eq [
|
|
|
|
relationship_1,
|
|
|
|
relationship_2,
|
|
|
|
relationship_3,
|
|
|
|
]
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-04-28 10:20:28 -04:00
|
|
|
describe '#current_relationship' do
|
|
|
|
let! :relationship_2 do
|
2019-07-20 02:02:32 -04:00
|
|
|
create :supporter_relationship,
|
|
|
|
person: subject,
|
2019-07-20 02:22:47 -04:00
|
|
|
from_date: 4.days.ago
|
2019-04-28 10:20:28 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
let! :relationship_3 do
|
2019-07-20 02:02:32 -04:00
|
|
|
create :supporter_relationship,
|
|
|
|
person: subject,
|
2019-07-20 02:22:47 -04:00
|
|
|
from_date: 2.days.ago
|
2019-04-28 10:20:28 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
let! :relationship_1 do
|
2019-07-20 02:02:32 -04:00
|
|
|
create :supporter_relationship,
|
|
|
|
person: subject,
|
2019-07-20 02:22:47 -04:00
|
|
|
from_date: 6.days.ago
|
2019-04-28 10:20:28 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
specify do
|
|
|
|
expect(subject.current_relationship).to eq relationship_3
|
|
|
|
end
|
|
|
|
end
|
2018-12-09 22:32:35 -05:00
|
|
|
end
|