Skip to content

Commit

Permalink
Store household key on role for family memberships (#1232)
Browse files Browse the repository at this point in the history
  • Loading branch information
amaierhofer committed Nov 15, 2024
1 parent 6bb09f1 commit 9f03eb6
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 0 deletions.
7 changes: 7 additions & 0 deletions app/models/group/sektions_mitglieder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@ class Mitglied < ::Role

validates :end_on, presence: true

attr_readonly :family_id

after_create_commit :transmit_data_to_abacus
before_validation :set_family_id, if: -> { beitragskategorie.family? }
after_destroy :destroy_household, if: -> { person.sac_family_main_person }

private
Expand All @@ -31,6 +34,10 @@ def transmit_data_to_abacus
person.abacus_subject_key.blank? &&
person.data_quality != "error"
end

def set_family_id
self.family_id = person.household_key
end
end

class MitgliedZusatzsektion < ::Role
Expand Down
6 changes: 6 additions & 0 deletions spec/fixtures/roles.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ familienmitglied:
group: bluemlisalp_mitglieder
type: Group::SektionsMitglieder::Mitglied
beitragskategorie: family
family_id: 4242
start_on: 2015-01-01
end_on: <%= Time.zone.today.year %>-12-31

Expand All @@ -37,6 +38,7 @@ familienmitglied_zweitsektion:
group: matterhorn_mitglieder
type: Group::SektionsMitglieder::MitgliedZusatzsektion
beitragskategorie: family
family_id: 4242
start_on: 2015-01-01
end_on: <%= Time.zone.today.year %>-12-31

Expand All @@ -45,6 +47,7 @@ familienmitglied2:
group: bluemlisalp_mitglieder
type: Group::SektionsMitglieder::Mitglied
beitragskategorie: family
family_id: 4242
start_on: 2015-01-01
end_on: <%= Time.zone.today.year %>-12-31

Expand All @@ -53,6 +56,7 @@ familienmitglied2_zweitsektion:
group: matterhorn_mitglieder
type: Group::SektionsMitglieder::MitgliedZusatzsektion
beitragskategorie: family
family_id: 4242
start_on: 2015-01-01
end_on: <%= Time.zone.today.year %>-12-31

Expand All @@ -61,6 +65,7 @@ familienmitglied_kind:
group: bluemlisalp_mitglieder
type: Group::SektionsMitglieder::Mitglied
beitragskategorie: family
family_id: 4242
start_on: 2015-01-01
end_on: <%= Time.zone.today.year %>-12-31

Expand All @@ -69,6 +74,7 @@ familienmitglied_kind_zweitsektion:
group: matterhorn_mitglieder
type: Group::SektionsMitglieder::MitgliedZusatzsektion
beitragskategorie: family
family_id: 4242
start_on: 2015-01-01
end_on: <%= Time.zone.today.year %>-12-31

Expand Down
19 changes: 19 additions & 0 deletions spec/models/group/sektions_mitglieder/mitglied_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,25 @@
describe Group::SektionsMitglieder::Mitglied do
it_behaves_like "validates Mitglied active period"

context "#create" do
let(:group) { groups(:bluemlisalp_mitglieder) }
let(:person) { Fabricate(:person, household_key: 4242, birthday: 10.years.ago) }

it "sets family_id from household_key for family membership" do
role = Fabricate(Group::SektionsMitglieder::Mitglied.sti_name, person:, group:)
expect(role.beitragskategorie).to be_family
expect(role.family_id).to eq "4242"
end

[:adult, :youth].each do |beitragskategorie|
it "does not set family_id for #{beitragskategorie}" do
role = Fabricate(Group::SektionsMitglieder::Mitglied.sti_name, person:, group:, beitragskategorie: beitragskategorie)
expect(role.beitragskategorie).to eq beitragskategorie.to_s
expect(role.family_id).to be_nil
end
end
end

context "household" do
let(:familienmitglied) { roles(:familienmitglied) }
let(:familienmitglied2) { roles(:familienmitglied2) }
Expand Down

0 comments on commit 9f03eb6

Please sign in to comment.