51 lines
1.5 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
require "livecheck/strategy/npm"
describe Homebrew::Livecheck::Strategy::Npm do
subject(:npm) { described_class }
let(:npm_urls) do
{
typical: "https://registry.npmjs.org/abc/-/def-1.2.3.tgz",
org_scoped: "https://registry.npmjs.org/@example/abc/-/def-1.2.3.tgz",
}
end
let(:non_npm_url) { "https://brew.sh/test" }
let(:generated) do
{
typical: {
url: "https://www.npmjs.com/package/abc?activeTab=versions",
regex: %r{href=.*?/package/abc/v/(\d+(?:\.\d+)+)"}i,
},
org_scoped: {
url: "https://www.npmjs.com/package/@example/abc?activeTab=versions",
regex: %r{href=.*?/package/@example/abc/v/(\d+(?:\.\d+)+)"}i,
},
}
end
describe "::match?" do
it "returns true for an npm URL" do
expect(npm.match?(npm_urls[:typical])).to be true
expect(npm.match?(npm_urls[:org_scoped])).to be true
end
it "returns false for a non-npm URL" do
expect(npm.match?(non_npm_url)).to be false
end
end
describe "::generate_input_values" do
it "returns a hash containing url and regex for an npm URL" do
expect(npm.generate_input_values(npm_urls[:typical])).to eq(generated[:typical])
expect(npm.generate_input_values(npm_urls[:org_scoped])).to eq(generated[:org_scoped])
end
it "returns an empty hash for a non-npm URL" do
expect(npm.generate_input_values(non_npm_url)).to eq({})
end
end
end