FactoryBot.define do
  factory :image do
    attachment { File.new("spec/fixtures/files/clippy.jpg") }
    title "Lorem ipsum dolor sit amet"
    association :user, factory: :user

    trait :proposal_image do
      association :imageable, factory: :proposal
    end

    trait :budget_investment_image do
      association :imageable, factory: :budget_investment
    end
  end

  factory :document do
    sequence(:title) { |n| "Document title #{n}" }
    association :user, factory: :user
    attachment { File.new("spec/fixtures/files/empty.pdf") }

    trait :proposal_document do
      association :documentable, factory: :proposal
    end

    trait :budget_investment_document do
      association :documentable, factory: :budget_investment
    end

    trait :poll_question_document do
      association :documentable, factory: :poll_question
    end
  end

  factory :direct_upload do
    user

    trait :proposal do
      resource_type "Proposal"
    end
    trait :budget_investment do
      resource_type "Budget::Investment"
    end

    trait :documents do
      resource_relation "documents"
      attachment { File.new("spec/fixtures/files/empty.pdf") }
    end
    trait :image do
      resource_relation "image"
      attachment { File.new("spec/fixtures/files/clippy.jpg") }
    end
    initialize_with { new(attributes) }
  end
end
