yao/sui/storages/local/block_test.go
2023-11-11 12:33:32 +08:00

129 lines
3.3 KiB
Go

package local
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestTemplateBlocks(t *testing.T) {
tests := prepare(t)
defer clean()
tmpl, err := tests.Demo.GetTemplate("tech-blue")
if err != nil {
t.Fatalf("GetTemplate error: %v", err)
}
blocks, err := tmpl.Blocks()
if err != nil {
t.Fatalf("Blocks error: %v", err)
}
if len(blocks) < 3 {
t.Fatalf("Blocks error: %v", len(blocks))
}
assert.Equal(t, "ColumnsTwo", blocks[0].(*Block).ID)
assert.Equal(t, "/ColumnsTwo/ColumnsTwo.html", blocks[0].(*Block).Codes.HTML.File)
assert.Equal(t, "/ColumnsTwo/ColumnsTwo.js", blocks[0].(*Block).Codes.JS.File)
assert.Equal(t, "/ColumnsTwo/ColumnsTwo.ts", blocks[0].(*Block).Codes.TS.File)
assert.Equal(t, "Hero", blocks[1].(*Block).ID)
assert.Equal(t, "/Hero/Hero.html", blocks[1].(*Block).Codes.HTML.File)
assert.Equal(t, "/Hero/Hero.js", blocks[1].(*Block).Codes.JS.File)
assert.Equal(t, "/Hero/Hero.ts", blocks[1].(*Block).Codes.TS.File)
assert.Equal(t, "Image", blocks[2].(*Block).ID)
assert.Equal(t, "/Image/Image.html", blocks[2].(*Block).Codes.HTML.File)
assert.Equal(t, "/Image/Image.js", blocks[2].(*Block).Codes.JS.File)
assert.Equal(t, "/Image/Image.ts", blocks[2].(*Block).Codes.TS.File)
}
func TestTemplateBlockJS(t *testing.T) {
tests := prepare(t)
defer clean()
tmpl, err := tests.Demo.GetTemplate("tech-blue")
if err != nil {
t.Fatalf("GetTemplate error: %v", err)
}
block, err := tmpl.Block("ColumnsTwo")
if err != nil {
t.Fatalf("Blocks error: %v", err)
}
assert.Equal(t, "ColumnsTwo", block.(*Block).ID)
assert.NotEmpty(t, block.(*Block).Codes.HTML.Code)
assert.NotEmpty(t, block.(*Block).Codes.JS.Code)
assert.Contains(t, block.(*Block).Compiled, "window.block__ColumnsTwo")
assert.Contains(t, block.(*Block).Compiled, `<div class="columns-two-left"`)
}
func TestTemplateBlockTS(t *testing.T) {
tests := prepare(t)
defer clean()
tmpl, err := tests.Demo.GetTemplate("tech-blue")
if err != nil {
t.Fatalf("GetTemplate error: %v", err)
}
block, err := tmpl.Block("Hero")
if err != nil {
t.Fatalf("Blocks error: %v", err)
}
assert.Equal(t, "Hero", block.(*Block).ID)
assert.Empty(t, block.(*Block).Codes.HTML.Code)
assert.NotEmpty(t, block.(*Block).Codes.TS.Code)
assert.Contains(t, block.(*Block).Compiled, "window.block__Hero")
assert.Contains(t, block.(*Block).Compiled, `<div data-gjs-type='Nav'></div>`)
}
func TestBlockLayoutItems(t *testing.T) {
tests := prepare(t)
defer clean()
tmpl, err := tests.Demo.GetTemplate("tech-blue")
if err != nil {
t.Fatalf("GetTemplate error: %v", err)
}
items, err := tmpl.BlockLayoutItems()
if err != nil {
t.Fatalf("BlockLayoutItems error: %v", err)
}
assert.Equal(t, 3, len(items.Categories))
tmpl, err = tests.Demo.GetTemplate("website-ai")
if err != nil {
t.Fatalf("GetTemplate error: %v", err)
}
items, err = tmpl.BlockLayoutItems()
if err != nil {
t.Fatalf("BlockLayoutItems error: %v", err)
}
assert.Equal(t, 1, len(items.Categories))
}
func TestBlockMedia(t *testing.T) {
tests := prepare(t)
defer clean()
tmpl, err := tests.Demo.GetTemplate("tech-blue")
if err != nil {
t.Fatalf("GetTemplate error: %v", err)
}
media, err := tmpl.BlockMedia("ColumnsTwo")
if err != nil {
t.Fatalf("BlockMedia error: %v", err)
}
assert.Equal(t, "image/png", media.Type)
}