require 'faker'

FactoryBot.define do
  factory :comment do
    comment_content { Faker::Lorem.sentence(word_count: 25) }
    commentable { create(:work).last_posted_chapter }
    pseud { create(:user).default_pseud }

    trait :by_guest do
      pseud { nil }
      name { Faker::Name.first_name }
      email { Faker::Internet.email }
    end

    trait :on_admin_post do
      commentable { create(:admin_post, comment_permissions: :enable_all) }
    end

    trait :on_tag do
      commentable { create(:fandom) }
    end

    trait :on_work_with_guest_comments_on do
      commentable { create(:work, :guest_comments_on).first_chapter }
    end

    trait :unreviewed do
      commentable { create(:work, moderated_commenting_enabled: true).last_posted_chapter }
      unreviewed { true }
    end
  end

  factory :inbox_comment do
    user { create(:user) }
    feedback_comment { create(:comment) }
  end
end
