From 99ea95c28df20d0132e22320ca64b89a2ead466e Mon Sep 17 00:00:00 2001 From: Sam Ford <1584702+samford@users.noreply.github.com> Date: Sun, 20 Dec 2020 01:56:54 -0500 Subject: [PATCH] Sparkle: Expand tests --- .../Homebrew/livecheck/strategy/sparkle.rb | 1 - .../test/livecheck/strategy/sparkle_spec.rb | 58 +++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/livecheck/strategy/sparkle.rb b/Library/Homebrew/livecheck/strategy/sparkle.rb index 6ec8ae4c28..63d61a9a9e 100644 --- a/Library/Homebrew/livecheck/strategy/sparkle.rb +++ b/Library/Homebrew/livecheck/strategy/sparkle.rb @@ -81,7 +81,6 @@ module Homebrew items.max_by(&:bundle_version) end - private_class_method :item_from_content # Checks the content at the URL for new versions. sig { params(url: String, regex: T.nilable(Regexp)).returns(T::Hash[Symbol, T.untyped]) } diff --git a/Library/Homebrew/test/livecheck/strategy/sparkle_spec.rb b/Library/Homebrew/test/livecheck/strategy/sparkle_spec.rb index f9a878c1d4..f98e43ef00 100644 --- a/Library/Homebrew/test/livecheck/strategy/sparkle_spec.rb +++ b/Library/Homebrew/test/livecheck/strategy/sparkle_spec.rb @@ -8,9 +8,67 @@ describe Homebrew::Livecheck::Strategy::Sparkle do let(:url) { "https://www.example.com/example/appcast.xml" } + let(:appcast_data) { + { + title: "Version 1.2.3", + url: "https://www.example.com/example/example.tar.gz", + bundle_version: Homebrew::BundleVersion.new("1.2.3", "1234"), + short_version: "1.2.3", + version: "1234", + } + } + + let(:appcast_item) { + Homebrew::Livecheck::Strategy::Sparkle::Item.new( + { + title: appcast_data[:title], + url: appcast_data[:url], + bundle_version: appcast_data[:bundle_version], + short_version: appcast_data[:bundle_version]&.short_version, + version: appcast_data[:bundle_version]&.version, + }, + ) + } + + let(:appcast_xml) { + <<~EOS + + + + Example Changelog + #{url} + Most recent changes with links to updates. + en + + #{appcast_data[:title]} + 10.10 + https://www.example.com/example/1.2.3.html + + + + + EOS + } + describe "::match?" do it "returns true for any URL" do expect(sparkle.match?(url)).to be true end end + + describe "::item_from_content" do + let(:item_from_appcast_xml) { sparkle.item_from_content(appcast_xml) } + + it "returns nil if content is blank" do + expect(sparkle.item_from_content("")).to be nil + end + + it "returns an Item when given XML data" do + expect(item_from_appcast_xml).to be_a(Homebrew::Livecheck::Strategy::Sparkle::Item) + expect(item_from_appcast_xml.title).to eq(appcast_item.title) + expect(item_from_appcast_xml.url).to eq(appcast_item.url) + expect(item_from_appcast_xml.bundle_version.short_version).to eq(appcast_item.bundle_version.short_version) + expect(item_from_appcast_xml.bundle_version.version).to eq(appcast_item.bundle_version.version) + end + end end