# typed: true
# frozen_string_literal: true

require "rubocops/class"

RSpec.describe RuboCop::Cop::FormulaAudit::ClassName do
  subject(:cop) { described_class.new }

  let(:corrected_source) do
    <<~RUBY
      class Foo < Formula
        url 'https://brew.sh/foo-1.0.tgz'
      end
    RUBY
  end

  it "reports and corrects an offense when using ScriptFileFormula" do
    expect_offense(<<~RUBY)
      class Foo < ScriptFileFormula
                  ^^^^^^^^^^^^^^^^^ FormulaAudit/ClassName: `ScriptFileFormula` is deprecated, use `Formula` instead
        url 'https://brew.sh/foo-1.0.tgz'
      end
    RUBY
    expect_correction(corrected_source)
  end

  it "reports and corrects an offense when using GithubGistFormula" do
    expect_offense(<<~RUBY)
      class Foo < GithubGistFormula
                  ^^^^^^^^^^^^^^^^^ FormulaAudit/ClassName: `GithubGistFormula` is deprecated, use `Formula` instead
        url 'https://brew.sh/foo-1.0.tgz'
      end
    RUBY
    expect_correction(corrected_source)
  end

  it "reports and corrects an offense when using AmazonWebServicesFormula" do
    expect_offense(<<~RUBY)
      class Foo < AmazonWebServicesFormula
                  ^^^^^^^^^^^^^^^^^^^^^^^^ FormulaAudit/ClassName: `AmazonWebServicesFormula` is deprecated, use `Formula` instead
        url 'https://brew.sh/foo-1.0.tgz'
      end
    RUBY
    expect_correction(corrected_source)
  end
end
