answer.rb 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. FactoryBot.define do
  2. factory 'knowledge_base/answer', aliases: %i[knowledge_base_answer] do
  3. transient do
  4. add_translation { true }
  5. translation_traits { [] }
  6. translation_attributes { {} }
  7. knowledge_base { nil }
  8. end
  9. category { create(:knowledge_base_category, { knowledge_base: knowledge_base }.compact) }
  10. before(:create) do |answer, context|
  11. next if answer.translations.present?
  12. answer.translations << build('knowledge_base/answer/translation', *context.translation_traits, answer: answer, **context.translation_attributes)
  13. end
  14. trait :draft # empty placeholder for better readability
  15. trait :internal do
  16. internal_at { 1.week.ago }
  17. end
  18. trait :published do
  19. published_at { 1.week.ago }
  20. end
  21. trait :archived do
  22. archived_at { 1.week.ago }
  23. end
  24. trait :with_video do
  25. transient do
  26. translation_traits { [:with_video] }
  27. end
  28. end
  29. trait :with_image do
  30. transient do
  31. translation_traits { [:with_image] }
  32. end
  33. end
  34. trait :with_attachment do
  35. transient do
  36. attachment { File.open('spec/fixtures/upload/hello_world.txt') }
  37. end
  38. after(:create) do |answer, context|
  39. Store.add(
  40. object: answer.class.name,
  41. o_id: answer.id,
  42. data: context.attachment.read,
  43. filename: File.basename(context.attachment.path),
  44. preferences: {}
  45. )
  46. end
  47. end
  48. end
  49. end