2.6 KiB
| nav_order |
|---|
| 2 |
Factories for Lettings Log, Sales Log, Organisation, and User
Each of these factories has nested relationships and callbacks that ensure associated objects are created and linked properly. For instance, creating a lettings_log involves creating or associating with a user, which in turn is linked to an organisation, potentially leading to creating organisation_rent_periods and a data_protection_confirmation.
This documentation outlines the objects that are created and/or persisted to the database when using FactoryBot to create or build models for LettingsLog, SalesLog, Organisation, and User. There are other factories, but they are simpler, less frequently used and don't have as much resource hierarchy.
Lettings Log
Objects Created/Persisted:
- User: The
assigned_touser is created.- Organisation: The
assigned_touser’s organisation created byUserfactory.
- Organisation: The
- DataProtectionConfirmation: If
organisationdoes not have DSA signed,DataProtectionConfirmationgets created withassigned_touser as adata_protection_officer - OrganisationRentPeriod: If
log.periodis present and themanaging_organisationdoes not have anOrganisationRentPeriodfor that period, a newOrganisationRentPeriodis created and associated withmanaging_organisation.
Example Usage:
let(:lettings_log) { create(:lettings_log) }
Sales Log
Objects Created/Persisted:
- User: The
assigned_touser is created.- Organisation: The
assigned_touser’s organisation created byUserfactory.
- Organisation: The
- DataProtectionConfirmation: If
organisationdoes not have DSA signed,DataProtectionConfirmationgets created withassigned_touser as adata_protection_officer
Example Usage:
let(:sales_log) { create(:sales_log) }
Organisation
Objects Created/Persisted:
- OrganisationRentPeriod: For each rent period in transient attribute
rent_periods, anOrganisationRentPeriodis created. - DataProtectionConfirmation: If
with_dsaistrue(default), aDataProtectionConfirmationis created with adata_protection_officer - User: Data protection officer that signs the data protection confirmation
Example Usage:
let(:organisation) { create(:organisation, rent_periods: [1, 2])}
User
Objects Created/Persisted:
- Organisation: User’s organisation.
- DataProtectionConfirmation: If
organisationdoes not have DSA signed,DataProtectionConfirmationgets created with this user as adata_protection_officer
Example Usage:
let(:user) { create(:user) }