package main import ( "bytes" "io" "os" "strings" "testing" "github.com/PuerkitoBio/goquery" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.goblog.app/app/pkgs/bufferpool" ) var _ io.Writer = &htmlBuilder{} var _ io.StringWriter = &htmlBuilder{} func Test_renderPostTax(t *testing.T) { app := &goBlog{ cfg: createDefaultTestConfig(t), } _ = app.initConfig() _ = app.initDatabase(false) defer app.db.close() app.initComponents(false) p := &post{ Parameters: map[string][]string{ "tags": {"Foo", "Bar"}, }, } buf := bufferpool.Get() defer bufferpool.Put(buf) hb := newHtmlBuilder(buf) app.renderPostTax(hb, p, app.cfg.Blogs["default"]) _, err := goquery.NewDocumentFromReader(strings.NewReader(buf.String())) require.NoError(t, err) assert.Equal(t, "

Tags: Bar, Foo

", buf.String()) } func Test_renderOldContentWarning(t *testing.T) { app := &goBlog{ cfg: createDefaultTestConfig(t), } _ = app.initConfig() _ = app.initDatabase(false) defer app.db.close() app.initComponents(false) p := &post{ Published: "2018-01-01", } buf := &bytes.Buffer{} hb := newHtmlBuilder(buf) app.renderOldContentWarning(hb, p, app.cfg.Blogs["default"]) res := buf.String() _, err := goquery.NewDocumentFromReader(strings.NewReader(res)) require.NoError(t, err) assert.Equal(t, "⚠️ This entry is already over one year old. It may no longer be up to date. Opinions may have changed.", res) } func Test_renderInteractions(t *testing.T) { var err error app := &goBlog{ cfg: createDefaultTestConfig(t), } app.cfg.Server.PublicAddress = "https://example.com" _ = app.initConfig() _ = app.initDatabase(false) defer app.db.close() app.initComponents(false) app.d = app.buildRouter() err = app.createPost(&post{ Path: "/testpost1", }) require.NoError(t, err) err = app.createPost(&post{ Path: "/testpost2", Content: "[Test](/testpost1)", Parameters: map[string][]string{ "title": {"Test-Title"}, }, }) require.NoError(t, err) err = app.verifyMention(&mention{ Source: "https://example.com/testpost2", Target: "https://example.com/testpost1", }) require.NoError(t, err) err = app.db.approveWebmentionId(1) require.NoError(t, err) err = app.createPost(&post{ Path: "/testpost3", Content: "[Test](/testpost2)", Parameters: map[string][]string{ "title": {"Test-Title"}, }, }) require.NoError(t, err) err = app.verifyMention(&mention{ Source: "https://example.com/testpost3", Target: "https://example.com/testpost2", }) require.NoError(t, err) err = app.db.approveWebmentionId(2) require.NoError(t, err) buf := &bytes.Buffer{} hb := newHtmlBuilder(buf) app.renderInteractions(hb, &renderData{ Blog: app.cfg.Blogs["default"], Canonical: "https://example.com/testpost1", }) res := buf.Bytes() _, err = goquery.NewDocumentFromReader(bytes.NewReader(res)) require.NoError(t, err) expected, err := os.ReadFile("testdata/interactionstest.html") require.NoError(t, err) assert.Equal(t, expected, res) } func Test_renderAuthor(t *testing.T) { app := &goBlog{ cfg: createDefaultTestConfig(t), } app.cfg.User.Picture = "https://example.com/picture.jpg" app.cfg.User.Name = "John Doe" _ = app.initConfig() _ = app.initDatabase(false) defer app.db.close() app.initComponents(false) buf := &bytes.Buffer{} hb := newHtmlBuilder(buf) app.renderAuthor(hb) res := buf.String() _, err := goquery.NewDocumentFromReader(strings.NewReader(res)) require.NoError(t, err) assert.Equal(t, "
John Doe
", res) }