Submit social housing lettings and sales data (CORE)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

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_to user is created.
    • Organisation: The assigned_to user’s organisation created by User factory.
  • DataProtectionConfirmation: If organisation does not have DSA signed, DataProtectionConfirmation gets created with assigned_to user as a data_protection_officer
  • OrganisationRentPeriod: If log.period is present and the managing_organisation does not have an OrganisationRentPeriod for that period, a new OrganisationRentPeriod is created and associated with managing_organisation.

Example Usage:

let(:lettings_log) { create(:lettings_log) }

Sales Log

Objects Created/Persisted:

  • User: The assigned_to user is created.
    • Organisation: The assigned_to user’s organisation created by User factory.
  • DataProtectionConfirmation: If organisation does not have DSA signed, DataProtectionConfirmation gets created with assigned_to user as a data_protection_officer

Example Usage:

let(:sales_log) { create(:sales_log) }

Organisation

Objects Created/Persisted:

  • OrganisationRentPeriod: For each rent period in transient attribute rent_periods, an OrganisationRentPeriod is created.
  • DataProtectionConfirmation: If with_dsa is true (default), a DataProtectionConfirmation is created with a data_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 organisation does not have DSA signed, DataProtectionConfirmation gets created with this user as a data_protection_officer

Example Usage:

let(:user) { create(:user) }