require "../spec_helper" include Nodes describe PageContent do it "renders a single parent/child node structure" do page = Page.new( title: "Title", subtitle: nil, author: "Author", created_at: Time.local, nodes: [ Paragraph.new(children: [ Text.new(content: "hi"), ] of Child), ] of Child ) html = PageContent.new(page: page).render_to_string html.should eq %(
hi
) end it "renders multiple childrens" do page = Page.new( title: "Title", subtitle: nil, author: "Author", created_at: Time.local, nodes: [ Paragraph.new(children: [ Text.new(content: "Hello, "), Emphasis.new(children: [ Text.new(content: "World!"), ] of Child), ] of Child), UnorderedList.new(children: [ ListItem.new(children: [ Text.new(content: "List!"), ] of Child), ListItem.new(children: [ Text.new(content: "Again!"), ] of Child), ] of Child), ] of Child ) html = PageContent.new(page: page).render_to_string html.should eq %(Hello, World!
Wayne Gretzky. Michael Scott.) end it "renders code" do page = Page.new( title: "Title", subtitle: nil, author: "Author", created_at: Time.local, nodes: [ Code.new(children: [ Text.new("foo = bar"), ] of Child), ] of Child ) html = PageContent.new(page: page).render_to_string html.should eq %(
foo = bar
)
end
it "renders empasis" do
page = Page.new(
title: "Title",
subtitle: nil,
author: "Author",
created_at: Time.local,
nodes: [
Paragraph.new(children: [
Text.new(content: "This is "),
Emphasis.new(children: [
Text.new(content: "neat!"),
] of Child),
] of Child),
] of Child
)
html = PageContent.new(page: page).render_to_string
html.should eq %(This is neat!
) end it "renders a figure and figure caption" do children = [Text.new("A caption")] of Child page = Page.new( title: "Title", subtitle: nil, author: "Author", created_at: Time.local, nodes: [ Figure.new(children: [ Image.new(src: "image.png", originalWidth: 100, originalHeight: 200), FigureCaption.new(children: children), ] of Child), ] of Child ) html = PageContent.new(page: page).render_to_string html.should eq stripped_html <<-HTML HTML end it "renders an H3" do page = Page.new( title: "Title", subtitle: nil, author: "Author", created_at: Time.local, nodes: [ Heading2.new(children: [ Text.new(content: "Title!"), ] of Child), ] of Child ) html = PageContent.new(page: page).render_to_string html.should eq %(HTML end it "renders an iframe container" do page = Page.new( title: "Title", subtitle: nil, author: "Author", created_at: Time.local, nodes: [ Paragraph.new(children: [ IFrame.new(href: "https://example.com"), ] of Child), ] of Child ) html = PageContent.new(page: page).render_to_string html.should eq stripped_html <<-HTML
HTML end it "renders an mixtape embed container" do page = Page.new( title: "Title", subtitle: nil, author: "Author", created_at: Time.local, nodes: [ Paragraph.new(children: [ MixtapeEmbed.new(children: [ Anchor.new( children: [Text.new("Mixtape")] of Child, href: "https://example.com" ), ] of Child), ] of Child), ] of Child ) html = PageContent.new(page: page).render_to_string html.should eq stripped_html <<-HTML
HTML end it "renders an ordered list" do page = Page.new( title: "Title", subtitle: nil, author: "Author", created_at: Time.local, nodes: [ OrderedList.new(children: [ ListItem.new(children: [Text.new("One")] of Child), ListItem.new(children: [Text.new("Two")] of Child), ] of Child), ] of Child ) html = PageContent.new(page: page).render_to_string html.should eq %(
Hello, world!
) end it "renders an preformatted text" do page = Page.new( title: "Title", subtitle: nil, author: "Author", created_at: Time.local, nodes: [ Preformatted.new(children: [ Text.new("New\nline"), ] of Child), ] of Child ) html = PageContent.new(page: page).render_to_string html.should eq %(New\nline) end it "renders strong text" do page = Page.new( title: "Title", subtitle: nil, author: "Author", created_at: Time.local, nodes: [ Strong.new(children: [ Text.new("Oh yeah!"), ] of Child), ] of Child ) html = PageContent.new(page: page).render_to_string html.should eq %(Oh yeah!) end it "renders an unordered list" do page = Page.new( title: "Title", subtitle: nil, author: "Author", created_at: Time.local, nodes: [ UnorderedList.new(children: [ ListItem.new(children: [Text.new("Apple")] of Child), ListItem.new(children: [Text.new("Banana")] of Child), ] of Child), ] of Child ) html = PageContent.new(page: page).render_to_string html.should eq %(