45 lines
1.2 KiB
Ruby
45 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "helper"
|
|
|
|
class TestDrop < JekyllUnitTest
|
|
context "a document drop" do
|
|
setup do
|
|
@site = fixture_site({
|
|
"collections" => ["methods"],
|
|
})
|
|
@site.process
|
|
@document = @site.collections["methods"].docs.detect do |d|
|
|
d.relative_path == "_methods/configuration.md"
|
|
end
|
|
@drop = @document.to_liquid
|
|
end
|
|
|
|
should "raise KeyError if key is not found and no default provided" do
|
|
assert_raises KeyError do
|
|
@drop.fetch("not_existing_key")
|
|
end
|
|
end
|
|
|
|
should "fetch value without default" do
|
|
assert_equal "Jekyll.configuration", @drop.fetch("title")
|
|
end
|
|
|
|
should "fetch default if key is not found" do
|
|
assert_equal "default", @drop.fetch("not_existing_key", "default")
|
|
end
|
|
|
|
should "fetch default boolean value correctly" do
|
|
assert_equal false, @drop.fetch("bar", false)
|
|
end
|
|
|
|
should "fetch default value from block if key is not found" do
|
|
assert_equal "default bar", @drop.fetch("bar") { |el| "default #{el}" }
|
|
end
|
|
|
|
should "fetch default value from block first if both argument and block given" do
|
|
assert_equal "baz", @drop.fetch("bar", "default") { "baz" }
|
|
end
|
|
end
|
|
end
|