parent
22a160cb32
commit
9cb1ad0bd6
|
@ -21,7 +21,8 @@ module Jekyll
|
|||
private :logo
|
||||
|
||||
VALID_ENTITY_TYPES = %w(BlogPosting CreativeWork).freeze
|
||||
private_constant :VALID_ENTITY_TYPES
|
||||
VALID_AUTHOR_TYPES = %w(Organization Person).freeze
|
||||
private_constant :VALID_ENTITY_TYPES, :VALID_AUTHOR_TYPES
|
||||
|
||||
# page_drop should be an instance of Jekyll::SeoTag::Drop
|
||||
def initialize(page_drop)
|
||||
|
@ -38,8 +39,11 @@ module Jekyll
|
|||
def author
|
||||
return unless page_drop.author["name"]
|
||||
|
||||
author_type = page_drop.author["type"]
|
||||
return if author_type && !VALID_AUTHOR_TYPES.include?(author_type)
|
||||
|
||||
{
|
||||
"@type" => "Person",
|
||||
"@type" => author_type || "Person",
|
||||
"name" => page_drop.author["name"],
|
||||
}
|
||||
end
|
||||
|
|
|
@ -72,6 +72,29 @@ RSpec.describe Jekyll::SeoTag::JSONLDDrop do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "when type Organization" do
|
||||
let(:author) { { "name" => "organization", "type" => "Organization" } }
|
||||
|
||||
it "returns the author with type" do
|
||||
expect(subject).to have_key("author")
|
||||
expect(subject["author"]).to be_a(Hash)
|
||||
expect(subject["author"]).to have_key("@type")
|
||||
expect(subject["author"]["@type"]).to eql("Organization")
|
||||
expect(subject["author"]).to have_key("name")
|
||||
expect(subject["author"]["name"]).to be_a(String)
|
||||
expect(subject["author"]["name"]).to eql("organization")
|
||||
end
|
||||
end
|
||||
|
||||
context "when invalid type" do
|
||||
let(:author) { { "name" => "organization", "type" => "Invalid" } }
|
||||
|
||||
it "returns the author with type" do
|
||||
expect(subject).to have_key("author")
|
||||
expect(subject["author"]).to be nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "image" do
|
||||
|
|
Loading…
Reference in New Issue