brew/Library/Homebrew/test/api/cask_spec.rb
apainintheneck 226239da4c tests: remove unnecessary cache clearing
This PR removes all remaining unnecessary cache clearing in tests
from the codebase since we now clear all cachable classes between
tests making this functionally unnecessary.

Original PR to automatically clear caches:
- https://github.com/Homebrew/brew/pull/16746

I also moved the `Utils::Analytics` module to use cachable so
that we don't have to clear caches specifically in tests anymore.
2024-03-31 18:38:03 -07:00

73 lines
2.0 KiB
Ruby

# frozen_string_literal: true
require "api"
RSpec.describe Homebrew::API::Cask do
let(:cache_dir) { mktmpdir }
before do
stub_const("Homebrew::API::HOMEBREW_CACHE_API", cache_dir)
end
def mock_curl_download(stdout:)
allow(Utils::Curl).to receive(:curl_download) do |*_args, **kwargs|
kwargs[:to].write stdout
end
allow(Homebrew::API).to receive(:verify_and_parse_jws) do |json_data|
[true, json_data]
end
end
describe "::all_casks" do
let(:casks_json) do
<<~EOS
[{
"token": "foo",
"url": "https://brew.sh/foo"
}, {
"token": "bar",
"url": "https://brew.sh/bar"
}]
EOS
end
let(:casks_hash) do
{
"foo" => { "url" => "https://brew.sh/foo" },
"bar" => { "url" => "https://brew.sh/bar" },
}
end
it "returns the expected cask JSON list" do
mock_curl_download stdout: casks_json
casks_output = described_class.all_casks
expect(casks_output).to eq casks_hash
end
end
describe "::source_download", :needs_macos do
let(:cask) do
cask = Cask::CaskLoader::FromAPILoader.new(
"everything",
from_json: JSON.parse((TEST_FIXTURE_DIR/"cask/everything.json").read.strip),
).load(config: nil)
cask
end
before do
allow_any_instance_of(Homebrew::API::Download).to receive(:fetch)
allow_any_instance_of(Homebrew::API::Download).to receive(:symlink_location).and_return(
TEST_FIXTURE_DIR/"cask/Casks/everything.rb",
)
end
it "specifies the correct URL and sha256" do
expect(Homebrew::API::Download).to receive(:new).with(
"https://raw.githubusercontent.com/Homebrew/homebrew-cask/abcdef1234567890abcdef1234567890abcdef12/Casks/everything.rb",
Checksum.new("d8d0d6b2e5ff65388eccb82236fd3aa157b4a29bb043a1f72b97f0e9b70e8320"),
any_args,
).and_call_original
described_class.source_download(cask)
end
end
end