fba87c1076
The subtitle has been removed because it's difficult to find and error prone to guess at. It is somewhat accessible from the post's previewContent field in GraphQL but that can be truncated.
139 lines
2.8 KiB
Crystal
139 lines
2.8 KiB
Crystal
require "../spec_helper"
|
|
|
|
include Nodes
|
|
|
|
describe PageConverter do
|
|
it "sets the page title" do
|
|
title = "Hello, world!"
|
|
paragraph_json = <<-JSON
|
|
[
|
|
{
|
|
"text": "#{title}",
|
|
"type": "H3",
|
|
"markups": [],
|
|
"iframe": null,
|
|
"layout": null,
|
|
"metadata": null
|
|
}
|
|
]
|
|
JSON
|
|
data_json = default_data_json(title, paragraph_json)
|
|
data = PostResponse::Data.from_json(data_json)
|
|
|
|
page = PageConverter.new.convert(data)
|
|
|
|
page.title.should eq title
|
|
end
|
|
|
|
it "sets the author" do
|
|
data_json = <<-JSON
|
|
{
|
|
"post": {
|
|
"title": "This is a story",
|
|
"createdAt": 0,
|
|
"creator": {
|
|
"id": "abc123",
|
|
"name": "Author"
|
|
},
|
|
"content": {
|
|
"bodyModel": {
|
|
"paragraphs": []
|
|
}
|
|
}
|
|
}
|
|
}
|
|
JSON
|
|
data = PostResponse::Data.from_json(data_json)
|
|
|
|
page = PageConverter.new.convert(data)
|
|
|
|
page.author.name.should eq "Author"
|
|
page.author.id.should eq "abc123"
|
|
end
|
|
|
|
it "sets the publish date/time" do
|
|
data_json = <<-JSON
|
|
{
|
|
"post": {
|
|
"title": "This is a story",
|
|
"createdAt": 1000,
|
|
"creator": {
|
|
"id": "abc123",
|
|
"name": "Author"
|
|
},
|
|
"content": {
|
|
"bodyModel": {
|
|
"paragraphs": []
|
|
}
|
|
}
|
|
}
|
|
}
|
|
JSON
|
|
data = PostResponse::Data.from_json(data_json)
|
|
|
|
page = PageConverter.new.convert(data)
|
|
|
|
page.created_at.should eq Time.utc(1970, 1, 1, 0, 0, 1)
|
|
end
|
|
|
|
it "calls converts the remaining paragraph content" do
|
|
title = "Title"
|
|
paragraph_json = <<-JSON
|
|
[
|
|
{
|
|
"text": "#{title}",
|
|
"type": "H3",
|
|
"markups": [],
|
|
"iframe": null,
|
|
"layout": null,
|
|
"metadata": null
|
|
},
|
|
{
|
|
"text": "Content",
|
|
"type": "P",
|
|
"markups": [],
|
|
"iframe": null,
|
|
"layout": null,
|
|
"metadata": null
|
|
}
|
|
]
|
|
JSON
|
|
data_json = default_data_json(title, paragraph_json)
|
|
data = PostResponse::Data.from_json(data_json)
|
|
|
|
page = PageConverter.new.convert(data)
|
|
|
|
page.nodes.should eq [
|
|
Paragraph.new([
|
|
Text.new("Content"),
|
|
] of Child),
|
|
]
|
|
end
|
|
end
|
|
|
|
def default_paragraph_json
|
|
"[]"
|
|
end
|
|
|
|
def default_data_json(
|
|
title : String = "This is a story",
|
|
paragraph_json : String = default_paragraph_json
|
|
)
|
|
<<-JSON
|
|
{
|
|
"post": {
|
|
"title": "#{title}",
|
|
"createdAt": 1628974309758,
|
|
"creator": {
|
|
"id": "abc123",
|
|
"name": "Author"
|
|
},
|
|
"content": {
|
|
"bodyModel": {
|
|
"paragraphs": #{paragraph_json}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
JSON
|
|
end
|