Sha256: 1f2806e5806726e70a0ac03d631452af2ae7f0af79b97255fd042f5209842b4a

Contents?: true

Size: 1.24 KB

Versions: 13

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

FactoryBot.define do
  factory :user do
    sequence :email do |n|
      "#{name.tr(' ', '.').downcase}#{n}@example.com"
    end
    password { 'password' }
    password_confirmation { 'password' }
    transient do
      plan { PaidUp::Plan.all.sample }
      past_due { false }
    end
    # the after(:create) yields two values; the user instance itself and the
    # evaluator, which stores all values from the factory, including transient
    # attributes; `create_list`'s second argument is the number of records
    # to create and we make sure the user is associated properly to the post
    after(:create) do |user, evaluator|
      if evaluator.past_due
        token = Stripe::Token.create(
          card: {
            number: '4000000000000341',
            exp_month: 1,
            exp_year: 45,
            cvc: '111'
          }
        ).id
        trial_end = 5.seconds.from_now.to_time.to_i
      else
        token = Stripe::Token.create(
          card: {
            number: '4242424242424242',
            exp_month: 1,
            exp_year: 45,
            cvc: '111'
          }
        ).id
        trial_end = nil
      end
      user.subscribe_to_plan(evaluator.plan, token, nil, trial_end)
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
paid_up-0.13.22 spec/factories/user.rb
paid_up-0.13.21 spec/factories/user.rb
paid_up-0.13.17 spec/factories/user.rb
paid_up-0.13.16 spec/factories/user.rb
paid_up-0.13.14 spec/factories/user.rb
paid_up-0.13.13 spec/factories/user.rb
paid_up-0.13.12 spec/factories/user.rb
paid_up-0.13.11 spec/factories/user.rb
paid_up-0.13.10 spec/factories/user.rb
paid_up-0.13.9 spec/factories/user.rb
paid_up-0.13.8 spec/factories/user.rb
paid_up-0.13.7 spec/factories/user.rb
paid_up-0.13.6 spec/factories/user.rb