brew/Library/Homebrew/test/api/formula_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

67 lines
1.7 KiB
Ruby

# frozen_string_literal: true
require "api"
RSpec.describe Homebrew::API::Formula 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_formulae" do
let(:formulae_json) do
<<~EOS
[{
"name": "foo",
"url": "https://brew.sh/foo",
"aliases": ["foo-alias1", "foo-alias2"]
}, {
"name": "bar",
"url": "https://brew.sh/bar",
"aliases": ["bar-alias"]
}, {
"name": "baz",
"url": "https://brew.sh/baz",
"aliases": []
}]
EOS
end
let(:formulae_hash) do
{
"foo" => { "url" => "https://brew.sh/foo", "aliases" => ["foo-alias1", "foo-alias2"] },
"bar" => { "url" => "https://brew.sh/bar", "aliases" => ["bar-alias"] },
"baz" => { "url" => "https://brew.sh/baz", "aliases" => [] },
}
end
let(:formulae_aliases) do
{
"foo-alias1" => "foo",
"foo-alias2" => "foo",
"bar-alias" => "bar",
}
end
it "returns the expected formula JSON list" do
mock_curl_download stdout: formulae_json
formulae_output = described_class.all_formulae
expect(formulae_output).to eq formulae_hash
end
it "returns the expected formula alias list" do
mock_curl_download stdout: formulae_json
aliases_output = described_class.all_aliases
expect(aliases_output).to eq formulae_aliases
end
end
end