Add strategy to livecheck DSL

This commit is contained in:
Sam Ford 2020-08-05 11:54:37 -04:00
parent 0e8962f816
commit 72985277e8
No known key found for this signature in database
GPG Key ID: 95209E46C7FFDEFE
2 changed files with 44 additions and 1 deletions

View File

@ -15,6 +15,7 @@ class Livecheck
@regex = nil
@skip = false
@skip_msg = nil
@strategy = nil
@url = nil
end
@ -40,6 +41,22 @@ class Livecheck
@skip
end
# Sets the strategy instance variable to the provided symbol or returns the
# strategy instance variable when no argument is provided. The strategy
# symbols use snake case (e.g., `:page_match`) and correspond to the strategy
# file name.
# @param symbol [Symbol] symbol for the desired strategy
def strategy(symbol = nil)
case symbol
when nil
@strategy
when Symbol
@strategy = symbol
else
raise TypeError, "Livecheck#strategy expects a Symbol"
end
end
# Sets the url instance variable to the argument given, returns the url
# instance variable when no argument is given.
def url(val = nil)
@ -61,6 +78,7 @@ class Livecheck
"regex" => @regex,
"skip" => @skip,
"skip_msg" => @skip_msg,
"strategy" => @strategy,
"url" => @url,
}
end

View File

@ -44,6 +44,23 @@ describe Livecheck do
end
end
describe "#strategy" do
it "returns nil if not set" do
expect(livecheckable.strategy).to be nil
end
it "returns the Symbol if set" do
livecheckable.strategy(:page_match)
expect(livecheckable.strategy).to eq(:page_match)
end
it "raises a TypeError if the argument isn't a Symbol" do
expect {
livecheckable.strategy("page_match")
}.to raise_error(TypeError, "Livecheck#strategy expects a Symbol")
end
end
describe "#url" do
it "returns nil if unset" do
expect(livecheckable.url).to be nil
@ -57,7 +74,15 @@ describe Livecheck do
describe "#to_hash" do
it "returns a Hash of all instance variables" do
expect(livecheckable.to_hash).to eq({ "regex"=>nil, "skip"=>false, "skip_msg"=>nil, "url"=>nil })
expect(livecheckable.to_hash).to eq(
{
"regex" => nil,
"skip" => false,
"skip_msg" => nil,
"strategy" => nil,
"url" => nil,
},
)
end
end
end