[READ-ONLY] Mirror of https://github.com/darccio/zas. Most simple static website generator in Golang.
go static-site-generation static-site-generator
Something went wrong. Try again.
zas plain_embed_test.go
3.0 kB · 99 lines
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100package zas
import ( "os" "strings" "testing"
"github.com/PuerkitoBio/goquery")
// Plain embeds must insert the rendered file as a text node. html.Node.Data// holds the tag name for an ElementNode, not its text content, so writing// straight into the parent's Data field renamed the parent tag instead of// inserting text.
func TestPlainEmbedDoesNotRenameParentTag(t *testing.T) { t.Chdir(t.TempDir()) if err := os.WriteFile("note.txt", []byte("hello"), 0o644); err != nil { t.Fatal(err) } doc, err := goquery.NewDocumentFromReader(strings.NewReader( `<div><embed src="note.txt" type="text/plain"></div>`)) if err != nil { t.Fatal(err) } gen := &Generator{} if err := gen.plain(doc.Find("embed"), doc, &ZasData{}); err != nil { t.Fatalf("plain() error = %v, want nil", err) } div := doc.Find("div") if div.Length() != 1 { t.Fatalf("div elements = %d, want 1 (parent tag must survive)", div.Length()) } if got := goquery.NodeName(div); got != "div" { t.Fatalf("parent tag = %q, want %q", got, "div") }}
func TestPlainEmbedInsertsEscapedText(t *testing.T) { t.Chdir(t.TempDir()) if err := os.WriteFile("note.txt", []byte("Hello <b>World</b>"), 0o644); err != nil { t.Fatal(err) } doc, err := goquery.NewDocumentFromReader(strings.NewReader( `<div><embed src="note.txt" type="text/plain"></div>`)) if err != nil { t.Fatal(err) } gen := &Generator{} if err := gen.plain(doc.Find("embed"), doc, &ZasData{}); err != nil { t.Fatalf("plain() error = %v, want nil", err) } div := doc.Find("div") if div.Children().Length() != 0 { t.Fatalf("div has %d child elements, want 0 - embedded text must not become markup", div.Children().Length()) } if got, want := div.Text(), "Hello <b>World</b>"; got != want { t.Fatalf("div.Text() = %q, want %q", got, want) }}
func TestPlainEmbedExecutesTemplate(t *testing.T) { t.Chdir(t.TempDir()) if err := os.WriteFile("note.txt", []byte("path is {{.Path}}"), 0o644); err != nil { t.Fatal(err) } doc, err := goquery.NewDocumentFromReader(strings.NewReader( `<div><embed src="note.txt" type="text/plain"></div>`)) if err != nil { t.Fatal(err) } gen := &Generator{} data := &ZasData{Path: "/about.html"} if err := gen.plain(doc.Find("embed"), doc, data); err != nil { t.Fatalf("plain() error = %v, want nil", err) } if want, got := "path is /about.html", doc.Find("div").Text(); got != want { t.Fatalf("div.Text() = %q, want %q", got, want) }}
func TestPlainEmbedRemovesEmbedTag(t *testing.T) { t.Chdir(t.TempDir()) if err := os.WriteFile("note.txt", []byte("hello"), 0o644); err != nil { t.Fatal(err) } doc, err := goquery.NewDocumentFromReader(strings.NewReader( `<div><embed src="note.txt" type="text/plain"></div>`)) if err != nil { t.Fatal(err) } gen := &Generator{} if err := gen.plain(doc.Find("embed"), doc, &ZasData{}); err != nil { t.Fatalf("plain() error = %v, want nil", err) } if doc.Find("embed").Length() != 0 { t.Fatal("embed tag still present after plain()") }}