# frozen_string_literal: true # == Schema Information # # Table name: contacts # # id :integer not null, primary key # additional_attributes :jsonb # blocked :boolean default(FALSE), not null # contact_type :integer default("visitor") # country_code :string default("") # custom_attributes :jsonb # email :string # identifier :string # last_activity_at :datetime # last_name :string default("") # location :string default("") # middle_name :string default("") # name :string default("") # phone_number :string # created_at :datetime not null # updated_at :datetime not null # account_id :integer not null # company_id :bigint # # Indexes # # index_contacts_on_account_id (account_id) # index_contacts_on_account_id_and_contact_type (account_id,contact_type) # index_contacts_on_account_id_and_last_activity_at (account_id,last_activity_at DESC NULLS LAST) # index_contacts_on_blocked (blocked) # index_contacts_on_company_id (company_id) # index_contacts_on_lower_email_account_id (lower((email)::text), account_id) # index_contacts_on_name_email_phone_number_identifier (name,email,phone_number,identifier) USING gin # index_contacts_on_nonempty_fields (account_id,email,phone_number,identifier) WHERE (((email)::text <> ''::text) OR ((phone_number)::text <> ''::text) OR ((identifier)::text <> ''::text)) # index_contacts_on_phone_number_and_account_id (phone_number,account_id) # index_resolved_contact_account_id (account_id) WHERE (((email)::text <> ''::text) OR ((phone_number)::text <> ''::text) OR ((identifier)::text <> ''::text)) # uniq_email_per_account_contact (email,account_id) UNIQUE # uniq_identifier_per_account_contact (identifier,account_id) UNIQUE # FactoryBot.define do factory :contact do sequence(:name) { |n| "Contact #{n}" } account trait :with_avatar do avatar { fixture_file_upload(Rails.root.join('spec/assets/avatar.png'), 'image/png') } end trait :with_email do sequence(:email) { |n| "contact-#{n}@example.com" } end trait :with_phone_number do phone_number { Faker::PhoneNumber.cell_phone_in_e164 } end end end