# frozen_string_literal: true

describe "ZapierWebhook" do
  fab!(:topic)

  fab!(:automation) { Fabricate(:automation, script: DiscourseAutomation::Scripts::ZAPIER_WEBHOOK) }

  context "with valid webhook url" do
    before do
      automation.upsert_field!(
        "webhook_url",
        "text",
        { value: "https://hooks.zapier.com/hooks/catch/foo/bar" },
      )
    end

    it "enqueues the zapier call" do
      expect { automation.trigger! }.to change {
        Jobs::DiscourseAutomation::CallZapierWebhook.jobs.length
      }.by(1)
    end
  end

  context "with invalid webhook url" do
    let(:fake_logger) { FakeLogger.new }

    before { Rails.logger.broadcast_to(fake_logger) }

    after { Rails.logger.stop_broadcasting_to(fake_logger) }

    it "logs an error and do nothing" do
      expect { automation.trigger! }.not_to change {
        Jobs::DiscourseAutomation::CallZapierWebhook.jobs.length
      }

      expect(Rails.logger.warnings.first).to match(/is not a valid Zapier/)
    end
  end
end