56 lines
1 KiB
Go
56 lines
1 KiB
Go
|
|
package html
|
||
|
|
|
||
|
|
import (
|
||
|
|
"strings"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
i18n "forge.lthn.ai/core/go-i18n"
|
||
|
|
"forge.lthn.ai/core/go-i18n/reversal"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestIntegration_RenderThenReverse(t *testing.T) {
|
||
|
|
svc, _ := i18n.New()
|
||
|
|
i18n.SetDefault(svc)
|
||
|
|
ctx := NewContext()
|
||
|
|
|
||
|
|
page := NewLayout("HCF").
|
||
|
|
H(El("h1", Text("Building project"))).
|
||
|
|
C(El("p", Text("Files deleted successfully"))).
|
||
|
|
F(El("small", Text("Completed")))
|
||
|
|
|
||
|
|
rendered := page.Render(ctx)
|
||
|
|
text := stripTags(rendered)
|
||
|
|
|
||
|
|
tok := reversal.NewTokeniser()
|
||
|
|
tokens := tok.Tokenise(text)
|
||
|
|
imp := reversal.NewImprint(tokens)
|
||
|
|
|
||
|
|
if imp.UniqueVerbs == 0 {
|
||
|
|
t.Error("reversal found no verbs in rendered page")
|
||
|
|
}
|
||
|
|
if imp.TokenCount == 0 {
|
||
|
|
t.Error("reversal produced empty imprint")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// stripTags removes HTML tags for plain text extraction.
|
||
|
|
func stripTags(html string) string {
|
||
|
|
var b strings.Builder
|
||
|
|
inTag := false
|
||
|
|
for _, r := range html {
|
||
|
|
if r == '<' {
|
||
|
|
inTag = true
|
||
|
|
b.WriteByte(' ')
|
||
|
|
continue
|
||
|
|
}
|
||
|
|
if r == '>' {
|
||
|
|
inTag = false
|
||
|
|
continue
|
||
|
|
}
|
||
|
|
if !inTag {
|
||
|
|
b.WriteRune(r)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return strings.TrimSpace(b.String())
|
||
|
|
}
|