# typed: true
# frozen_string_literal: true

require "cmd/shared_examples/args_parse"
require "dev-cmd/create"

RSpec.describe Homebrew::DevCmd::Create do
  let(:url) { "file://#{TEST_FIXTURE_DIR}/tarballs/testball-0.1.tbz" }
  let(:formula_file) { CoreTap.instance.new_formula_path("testball") }

  it_behaves_like "parseable arguments"

  it "creates a new Formula file for a given URL", :integration_test do
    brew "create", "--set-name=Testball", url, "HOMEBREW_EDITOR" => "/bin/cat"

    expect(formula_file).to exist
    expect(formula_file.read).to match(%Q(sha256 "#{TESTBALL_SHA256}"))
  end

  it "generates valid cask tokens" do
    t = Cask::Utils.token_from("A FooBar_Baz++!")
    expect(t).to eq("a-foobar-baz-plus-plus")
  end

  it "retains @ in cask tokens" do
    t = Cask::Utils.token_from("test@preview")
    expect(t).to eq("test@preview")
  end
end
