FactoryBot.define do
  factory :host_report do
    host
    sequence(:proxy) { |n| FactoryBot.create(:smart_proxy, url: "http://proxy#{n}.example.com", features: [FactoryBot.create(:feature, name: 'Reports')]) }
    reported_at { Time.now.utc }
    change { 0 }
    nochange { 0 }
    failure { 0 }
    body { '{}' }
  end

  trait :puppet_format do
    format { 'puppet' }
  end

  trait :ansible_format do
    format { 'ansible' }
  end

  trait :with_keyword do
    transient do
      name { 'HasError' }
    end
    after(:build) do |report, evaluator|
      report.report_keyword_ids = [FactoryBot.create(:report_keyword, name: evaluator.name).id]
    end
  end

  factory :report_keyword do
    sequence(:name) { |n| "Keyword-#{n}" }
  end
end