2022-01-09 21:08:38 +01:00
package main
import (
2022-01-26 12:02:12 +01:00
"bytes"
2022-01-09 21:08:38 +01:00
"os"
"strings"
"testing"
"github.com/PuerkitoBio/goquery"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
2022-02-22 16:52:03 +01:00
"go.goblog.app/app/pkgs/bufferpool"
2022-08-12 12:48:16 +02:00
"go.goblog.app/app/pkgs/htmlbuilder"
2022-01-09 21:08:38 +01:00
)
func Test_renderPostTax ( t * testing . T ) {
app := & goBlog {
cfg : createDefaultTestConfig ( t ) ,
}
2022-07-17 07:35:39 +02:00
2022-07-16 21:09:43 +02:00
_ = app . initConfig ( false )
2022-07-17 10:54:03 +02:00
app . initMarkdown ( )
2022-01-09 21:08:38 +01:00
p := & post {
Parameters : map [ string ] [ ] string {
"tags" : { "Foo" , "Bar" } ,
} ,
}
2022-02-22 16:52:03 +01:00
buf := bufferpool . Get ( )
defer bufferpool . Put ( buf )
2022-08-12 12:48:16 +02:00
hb := htmlbuilder . NewHtmlBuilder ( buf )
2022-01-26 12:02:12 +01:00
app . renderPostTax ( hb , p , app . cfg . Blogs [ "default" ] )
2022-02-22 16:52:03 +01:00
_ , err := goquery . NewDocumentFromReader ( strings . NewReader ( buf . String ( ) ) )
2022-01-09 21:08:38 +01:00
require . NoError ( t , err )
2022-02-22 16:52:03 +01:00
assert . Equal ( t , "<p><strong>Tags</strong>: <a class=\"p-category\" rel=\"tag\" href=\"/tags/bar\">Bar</a>, <a class=\"p-category\" rel=\"tag\" href=\"/tags/foo\">Foo</a></p>" , buf . String ( ) )
2022-01-09 21:08:38 +01:00
}
func Test_renderOldContentWarning ( t * testing . T ) {
app := & goBlog {
cfg : createDefaultTestConfig ( t ) ,
}
2022-07-17 07:35:39 +02:00
2022-07-16 21:09:43 +02:00
_ = app . initConfig ( false )
2022-07-17 10:54:03 +02:00
_ = app . initTemplateStrings ( )
2022-01-09 21:08:38 +01:00
p := & post {
Published : "2018-01-01" ,
}
2022-01-26 12:02:12 +01:00
buf := & bytes . Buffer { }
2022-08-12 12:48:16 +02:00
hb := htmlbuilder . NewHtmlBuilder ( buf )
2022-01-26 12:02:12 +01:00
app . renderOldContentWarning ( hb , p , app . cfg . Blogs [ "default" ] )
res := buf . String ( )
_ , err := goquery . NewDocumentFromReader ( strings . NewReader ( res ) )
2022-01-09 21:08:38 +01:00
require . NoError ( t , err )
2022-01-26 12:02:12 +01:00
assert . Equal ( t , "<strong class=\"p border-top border-bottom\">⚠️ This entry is already over one year old. It may no longer be up to date. Opinions may have changed.</strong>" , res )
2022-01-09 21:08:38 +01:00
}
func Test_renderInteractions ( t * testing . T ) {
var err error
app := & goBlog {
cfg : createDefaultTestConfig ( t ) ,
}
app . cfg . Server . PublicAddress = "https://example.com"
2022-07-16 21:09:43 +02:00
_ = app . initConfig ( false )
2022-07-17 10:54:03 +02:00
_ = app . initCache ( )
app . initMarkdown ( )
_ = app . initTemplateStrings ( )
2022-07-16 21:09:43 +02:00
2022-02-22 10:14:48 +01:00
app . d = app . buildRouter ( )
2022-01-09 21:08:38 +01:00
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 )
2022-01-26 12:02:12 +01:00
buf := & bytes . Buffer { }
2022-08-12 12:48:16 +02:00
hb := htmlbuilder . NewHtmlBuilder ( buf )
2022-01-26 12:02:12 +01:00
2022-01-30 16:40:53 +01:00
app . renderInteractions ( hb , & renderData {
Blog : app . cfg . Blogs [ "default" ] ,
Canonical : "https://example.com/testpost1" ,
} )
2022-01-26 12:02:12 +01:00
res := buf . Bytes ( )
_ , err = goquery . NewDocumentFromReader ( bytes . NewReader ( res ) )
2022-01-09 21:08:38 +01:00
require . NoError ( t , err )
expected , err := os . ReadFile ( "testdata/interactionstest.html" )
require . NoError ( t , err )
2022-01-26 12:02:12 +01:00
assert . Equal ( t , expected , res )
2022-01-09 21:08:38 +01:00
}
func Test_renderAuthor ( t * testing . T ) {
2022-11-27 15:06:43 +01:00
t . SkipNow ( )
// TODO: Add back some checks for image
2022-01-09 21:08:38 +01:00
app := & goBlog {
cfg : createDefaultTestConfig ( t ) ,
}
2022-11-27 15:06:43 +01:00
// app.cfg.User.Picture = "https://example.com/picture.jpg"
2022-01-09 21:08:38 +01:00
app . cfg . User . Name = "John Doe"
2022-07-16 21:09:43 +02:00
_ = app . initConfig ( false )
2022-01-09 21:08:38 +01:00
2022-01-26 12:02:12 +01:00
buf := & bytes . Buffer { }
2022-08-12 12:48:16 +02:00
hb := htmlbuilder . NewHtmlBuilder ( buf )
2022-01-26 12:02:12 +01:00
app . renderAuthor ( hb )
res := buf . String ( )
_ , err := goquery . NewDocumentFromReader ( strings . NewReader ( res ) )
2022-01-09 21:08:38 +01:00
require . NoError ( t , err )
2022-01-26 12:02:12 +01:00
assert . Equal ( t , "<div class=\"p-author h-card hide\"><data class=\"u-photo\" value=\"https://example.com/picture.jpg\"></data><a class=\"p-name u-url\" rel=\"me\" href=\"/\">John Doe</a></div>" , res )
2022-01-09 21:08:38 +01:00
}