Sha256: aed6398e2822f1d47988b68c45aa1b273d8322370bc1249b894f0cc45aab3313

Contents?: true

Size: 1.15 KB

Versions: 11

Compression:

Stored size: 1.15 KB

Contents

FactoryBot.define do
  factory :user, class: 'Symphonia::User', aliases: [:author] do
    sequence(:first_name) { |n| "#{Faker::Name.first_name} #{n}" }
    sequence(:last_name) { |n| "#{Faker::Name.last_name} #{n}" }
    sequence(:email) { |n| "#{n}-#{Faker::Internet.email}" }
    login { email }
    admin { false }
    password { SecureRandom.hex(16) }
    last_request_at { Time.now }

    trait :admin do
      admin { true }
    end

    trait :with_preferences do
      transient do
        preference_names { [] }
      end
      after(:build) do |user, evaluator|
        user.preferences = evaluator.preference_names.collect { |pref_name| Symphonia::EmailPreference.find_by(name: pref_name) || FactoryBot.create(:email_preference, name: pref_name) }
      end
    end
    factory :admin_user, traits: [:admin]
  end

  factory :role, class: 'Symphonia::Role' do
    sequence(:name) { |n| "#{Faker::Job.title} #{n}" }
  end
  
  factory :preference, class: 'Symphonia::Preference' do

    factory :email_preference, class: 'Symphonia::EmailPreference' do
      trait :user_registered do
        name { :notify_after_user_registered }
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
symphonia-4.2.0 spec/factories/factories.rb
symphonia-4.1.3 spec/factories/factories.rb
symphonia-4.1.2 spec/factories/factories.rb
symphonia-4.1.1 spec/factories/factories.rb
symphonia-4.1.0 spec/factories/factories.rb
symphonia-4.0.1 spec/factories/factories.rb
symphonia-4.0.0 spec/factories/factories.rb
symphonia-3.4.0 spec/factories/factories.rb
symphonia-3.3.4 spec/factories/factories.rb
symphonia-3.3.3 spec/factories/factories.rb
symphonia-3.3.2 spec/factories/factories.rb