|
|
|
|
@ -14,7 +14,6 @@ RSpec.describe Merge::MergeOrganisationsService do
|
|
|
|
|
|
|
|
|
|
describe "#call" do |
|
|
|
|
context "when merging a single organisation into an existing organisation" do |
|
|
|
|
let(:other_organisation) { create(:organisation) } |
|
|
|
|
let(:merging_organisation) do |
|
|
|
|
create(:organisation, |
|
|
|
|
holds_own_stock: true, |
|
|
|
|
@ -25,30 +24,23 @@ RSpec.describe Merge::MergeOrganisationsService do
|
|
|
|
|
|
|
|
|
|
let(:merging_organisation_ids) { [merging_organisation.id] } |
|
|
|
|
let!(:merging_organisation_user) { create(:user, organisation: merging_organisation) } |
|
|
|
|
let!(:merging_organisation_relationship) { create(:organisation_relationship, parent_organisation: merging_organisation) } |
|
|
|
|
let!(:absorbing_organisation_relationship) { create(:organisation_relationship, parent_organisation: absorbing_organisation) } |
|
|
|
|
let!(:absorbing_and_merging_organisation_relationship) { create(:organisation_relationship, parent_organisation: absorbing_organisation, child_organisation: merging_organisation) } |
|
|
|
|
let!(:duplicate_merging_organisation_relationship) { create(:organisation_relationship, parent_organisation: merging_organisation, child_organisation: other_organisation) } |
|
|
|
|
let!(:duplicate_absorbing_organisation_relationship) { create(:organisation_relationship, parent_organisation: absorbing_organisation, child_organisation: other_organisation) } |
|
|
|
|
|
|
|
|
|
before do |
|
|
|
|
OrganisationRentPeriod.create!(organisation: absorbing_organisation, rent_period: 1) |
|
|
|
|
OrganisationRentPeriod.create!(organisation: absorbing_organisation, rent_period: 3) |
|
|
|
|
OrganisationRentPeriod.create!(organisation: merging_organisation, rent_period: 1) |
|
|
|
|
OrganisationRentPeriod.create!(organisation: merging_organisation, rent_period: 2) |
|
|
|
|
merge_organisations_service.call |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "moves the users from merging organisation to absorbing organisation" do |
|
|
|
|
merge_organisations_service.call |
|
|
|
|
|
|
|
|
|
merging_organisation_user.reload |
|
|
|
|
expect(merging_organisation_user.organisation).to eq(absorbing_organisation) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
xit "sets merge date on merged organisation" do |
|
|
|
|
merge_organisations_service.call |
|
|
|
|
|
|
|
|
|
expect(merging_organisation.merge_date).to eq(Time.zone.today) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "combines organisation data" do |
|
|
|
|
merge_organisations_service.call |
|
|
|
|
|
|
|
|
|
absorbing_organisation.reload |
|
|
|
|
expect(absorbing_organisation.holds_own_stock).to eq(true) |
|
|
|
|
expect(absorbing_organisation.choice_based_lettings).to eq(false) |
|
|
|
|
@ -62,22 +54,46 @@ RSpec.describe Merge::MergeOrganisationsService do
|
|
|
|
|
# expect(absorbing_organisation.unspecified_units).to eq(2) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "combines organisation rent periods" do |
|
|
|
|
absorbing_organisation.reload |
|
|
|
|
expect(absorbing_organisation.rent_periods.count).to eq(3) |
|
|
|
|
expect(absorbing_organisation.rent_periods).to include(1) |
|
|
|
|
expect(absorbing_organisation.rent_periods).to include(2) |
|
|
|
|
expect(absorbing_organisation.rent_periods).to include(3) |
|
|
|
|
context "and merging organisation rent periods" do |
|
|
|
|
before do |
|
|
|
|
OrganisationRentPeriod.create!(organisation: absorbing_organisation, rent_period: 1) |
|
|
|
|
OrganisationRentPeriod.create!(organisation: absorbing_organisation, rent_period: 3) |
|
|
|
|
OrganisationRentPeriod.create!(organisation: merging_organisation, rent_period: 1) |
|
|
|
|
OrganisationRentPeriod.create!(organisation: merging_organisation, rent_period: 2) |
|
|
|
|
merge_organisations_service.call |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "combines organisation rent periods" do |
|
|
|
|
absorbing_organisation.reload |
|
|
|
|
expect(absorbing_organisation.rent_periods.count).to eq(3) |
|
|
|
|
expect(absorbing_organisation.rent_periods).to include(1) |
|
|
|
|
expect(absorbing_organisation.rent_periods).to include(2) |
|
|
|
|
expect(absorbing_organisation.rent_periods).to include(3) |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "combines organisation relationships" do |
|
|
|
|
absorbing_organisation.reload |
|
|
|
|
expect(absorbing_organisation.child_organisations).to include(other_organisation) |
|
|
|
|
expect(absorbing_organisation.child_organisations).to include(absorbing_organisation_relationship.child_organisation) |
|
|
|
|
expect(absorbing_organisation.child_organisations).to include(merging_organisation_relationship.child_organisation) |
|
|
|
|
expect(absorbing_organisation.child_organisations).not_to include(merging_organisation) |
|
|
|
|
expect(absorbing_organisation.parent_organisations.count).to eq(0) |
|
|
|
|
expect(absorbing_organisation.child_organisations.count).to eq(3) |
|
|
|
|
context "and merging organisation relationships" do |
|
|
|
|
let(:other_organisation) { create(:organisation) } |
|
|
|
|
let!(:merging_organisation_relationship) { create(:organisation_relationship, parent_organisation: merging_organisation) } |
|
|
|
|
let!(:absorbing_organisation_relationship) { create(:organisation_relationship, parent_organisation: absorbing_organisation) } |
|
|
|
|
|
|
|
|
|
before do |
|
|
|
|
create(:organisation_relationship, parent_organisation: absorbing_organisation, child_organisation: merging_organisation) |
|
|
|
|
create(:organisation_relationship, parent_organisation: merging_organisation, child_organisation: other_organisation) |
|
|
|
|
create(:organisation_relationship, parent_organisation: absorbing_organisation, child_organisation: other_organisation) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "combines organisation relationships" do |
|
|
|
|
merge_organisations_service.call |
|
|
|
|
|
|
|
|
|
absorbing_organisation.reload |
|
|
|
|
expect(absorbing_organisation.child_organisations).to include(other_organisation) |
|
|
|
|
expect(absorbing_organisation.child_organisations).to include(absorbing_organisation_relationship.child_organisation) |
|
|
|
|
expect(absorbing_organisation.child_organisations).to include(merging_organisation_relationship.child_organisation) |
|
|
|
|
expect(absorbing_organisation.child_organisations).not_to include(merging_organisation) |
|
|
|
|
expect(absorbing_organisation.parent_organisations.count).to eq(0) |
|
|
|
|
expect(absorbing_organisation.child_organisations.count).to eq(3) |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|