# frozen_string_literal: true require "livecheck/strategy/xorg" RSpec.describe Homebrew::Livecheck::Strategy::Xorg do subject(:xorg) { described_class } let(:xorg_urls) do { app: "https://www.x.org/archive/individual/app/abc-1.2.3.tar.bz2", font: "https://www.x.org/archive/individual/font/abc-1.2.3.tar.bz2", lib: "https://www.x.org/archive/individual/lib/libabc-1.2.3.tar.bz2", ftp_lib: "https://ftp.x.org/archive/individual/lib/libabc-1.2.3.tar.bz2", pub_doc: "https://www.x.org/pub/individual/doc/abc-1.2.3.tar.bz2", } end let(:non_xorg_url) { "https://brew.sh/test" } let(:generated) do { app: { url: "https://www.x.org/archive/individual/app/", regex: /href=.*?abc[._-]v?(\d+(?:\.\d+)+)\.t/i, }, font: { url: "https://www.x.org/archive/individual/font/", regex: /href=.*?abc[._-]v?(\d+(?:\.\d+)+)\.t/i, }, lib: { url: "https://www.x.org/archive/individual/lib/", regex: /href=.*?libabc[._-]v?(\d+(?:\.\d+)+)\.t/i, }, ftp_lib: { url: "https://ftp.x.org/archive/individual/lib/", regex: /href=.*?libabc[._-]v?(\d+(?:\.\d+)+)\.t/i, }, pub_doc: { url: "https://www.x.org/archive/individual/doc/", regex: /href=.*?abc[._-]v?(\d+(?:\.\d+)+)\.t/i, }, } end describe "::match?" do it "returns true for an X.Org URL" do expect(xorg.match?(xorg_urls[:app])).to be true expect(xorg.match?(xorg_urls[:font])).to be true expect(xorg.match?(xorg_urls[:lib])).to be true expect(xorg.match?(xorg_urls[:ftp_lib])).to be true expect(xorg.match?(xorg_urls[:pub_doc])).to be true end it "returns false for a non-X.Org URL" do expect(xorg.match?(non_xorg_url)).to be false end end describe "::generate_input_values" do it "returns a hash containing url and regex for an X.org URL" do expect(xorg.generate_input_values(xorg_urls[:app])).to eq(generated[:app]) expect(xorg.generate_input_values(xorg_urls[:font])).to eq(generated[:font]) expect(xorg.generate_input_values(xorg_urls[:lib])).to eq(generated[:lib]) expect(xorg.generate_input_values(xorg_urls[:ftp_lib])).to eq(generated[:ftp_lib]) expect(xorg.generate_input_values(xorg_urls[:pub_doc])).to eq(generated[:pub_doc]) end it "returns an empty hash for a non-X.org URL" do expect(xorg.generate_input_values(non_xorg_url)).to eq({}) end end end