[chore] Update sui test cases
This commit is contained in:
parent
e266ab438f
commit
a435b1ad6e
17 changed files with 464 additions and 580 deletions
9
.github/workflows/pr-test.yml
vendored
9
.github/workflows/pr-test.yml
vendored
|
|
@ -55,7 +55,6 @@ env:
|
|||
YAO_EXTENSION_ROOT: ${{ github.WORKSPACE }}/../extension
|
||||
YAO_TEST_APPLICATION: ${{ github.WORKSPACE }}/../app
|
||||
YAO_SUI_TEST_APPLICATION: ${{ github.WORKSPACE }}/../yao-startup-webapp
|
||||
YAO_TEST_BUILDER_APPLICATION: ${{ github.WORKSPACE }}/../page-builder-app
|
||||
|
||||
## Runtime
|
||||
YAO_RUNTIME_MIN: 3
|
||||
|
|
@ -160,13 +159,6 @@ jobs:
|
|||
token: ${{ secrets.YAO_TEST_TOKEN }}
|
||||
path: yao-startup-webapp
|
||||
|
||||
- name: Checkout Page Builder App
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: yaoapp/page-builder-app
|
||||
token: ${{ secrets.YAO_TEST_TOKEN }}
|
||||
path: page-builder-app
|
||||
|
||||
- name: Checkout Extension
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
|
|
@ -181,7 +173,6 @@ jobs:
|
|||
mv v8go ../
|
||||
mv app ../
|
||||
mv extension ../
|
||||
mv page-builder-app ../
|
||||
mv yao-startup-webapp ../
|
||||
ls -l .
|
||||
ls -l ../
|
||||
|
|
|
|||
9
.github/workflows/unit-test.yml
vendored
9
.github/workflows/unit-test.yml
vendored
|
|
@ -59,7 +59,6 @@ env:
|
|||
YAO_EXTENSION_ROOT: ${{ github.WORKSPACE }}/../extension
|
||||
YAO_TEST_APPLICATION: ${{ github.WORKSPACE }}/../app
|
||||
YAO_SUI_TEST_APPLICATION: ${{ github.WORKSPACE }}/../yao-startup-webapp
|
||||
YAO_TEST_BUILDER_APPLICATION: ${{ github.WORKSPACE }}/../page-builder-app
|
||||
|
||||
## Runtime
|
||||
YAO_RUNTIME_MIN: 3
|
||||
|
|
@ -118,13 +117,6 @@ jobs:
|
|||
token: ${{ secrets.YAO_TEST_TOKEN }}
|
||||
path: yao-startup-webapp
|
||||
|
||||
- name: Checkout Page Builder App
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: yaoapp/page-builder-app
|
||||
token: ${{ secrets.YAO_TEST_TOKEN }}
|
||||
path: page-builder-app
|
||||
|
||||
- name: Checkout Extension
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
|
|
@ -139,7 +131,6 @@ jobs:
|
|||
mv v8go ../
|
||||
mv app ../
|
||||
mv extension ../
|
||||
mv page-builder-app ../
|
||||
mv yao-startup-webapp ../
|
||||
ls -l .
|
||||
ls -l ../
|
||||
|
|
|
|||
|
|
@ -10,26 +10,23 @@ import (
|
|||
func TestCompile(t *testing.T) {
|
||||
prepare(t)
|
||||
defer clean()
|
||||
loadTestSui(t)
|
||||
|
||||
page := testPage(t)
|
||||
html, err := page.Compile(nil, &core.BuildOption{KeepPageTag: false})
|
||||
if err != nil {
|
||||
t.Fatalf("Compile error: %v", err)
|
||||
}
|
||||
assert.Contains(t, html, `<a href="Link2">Link2</a>`)
|
||||
assert.Contains(t, html, `<a href="Link">Link</a>`)
|
||||
assert.Contains(t, html, "input.data")
|
||||
assert.Contains(t, html, `The basic test cases`)
|
||||
}
|
||||
|
||||
func testPage(t *testing.T) *core.Page {
|
||||
|
||||
sui := core.SUIs["demo"]
|
||||
sui := core.SUIs["test"]
|
||||
if sui == nil {
|
||||
t.Fatal("SUI demo not found")
|
||||
t.Fatal("SUI test not found")
|
||||
}
|
||||
|
||||
tmpl, err := sui.GetTemplate("tech-blue")
|
||||
tmpl, err := sui.GetTemplate("basic")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,17 +9,16 @@ import (
|
|||
"github.com/gin-gonic/gin"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/yaoapp/gou/process"
|
||||
"github.com/yaoapp/yao/config"
|
||||
"github.com/yaoapp/yao/sui/core"
|
||||
"github.com/yaoapp/yao/sui/storages/local"
|
||||
)
|
||||
|
||||
func TestTemplateGet(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.template.get", "demo")
|
||||
p, err := process.Of("sui.template.get", "test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -30,15 +29,15 @@ func TestTemplateGet(t *testing.T) {
|
|||
}
|
||||
|
||||
assert.IsType(t, []core.ITemplate{}, res)
|
||||
assert.Equal(t, 3, len(res.([]core.ITemplate)))
|
||||
assert.Equal(t, 2, len(res.([]core.ITemplate)))
|
||||
}
|
||||
|
||||
func TestTemplateFind(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.template.find", "demo", "tech-blue")
|
||||
p, err := process.Of("sui.template.find", "test", "advanced")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -49,15 +48,15 @@ func TestTemplateFind(t *testing.T) {
|
|||
}
|
||||
|
||||
assert.IsType(t, &local.Template{}, res)
|
||||
assert.Equal(t, "tech-blue", res.(*local.Template).ID)
|
||||
assert.Equal(t, "advanced", res.(*local.Template).ID)
|
||||
}
|
||||
|
||||
func TestTemplateAsset(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.template.asset", "demo", "tech-blue", "/css/tailwind.css")
|
||||
p, err := process.Of("sui.template.asset", "test", "advanced", "/css/app.css")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -73,11 +72,11 @@ func TestTemplateAsset(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestTemplateLocaleGet(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.locale.get", "demo", "tech-blue")
|
||||
p, err := process.Of("sui.locale.get", "test", "advanced")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -89,17 +88,17 @@ func TestTemplateLocaleGet(t *testing.T) {
|
|||
|
||||
assert.IsType(t, []core.SelectOption{}, res)
|
||||
assert.Equal(t, 3, len(res.([]core.SelectOption)))
|
||||
assert.Equal(t, "ar", res.([]core.SelectOption)[0].Value)
|
||||
assert.Equal(t, "ja-jp", res.([]core.SelectOption)[0].Value)
|
||||
assert.Equal(t, "zh-cn", res.([]core.SelectOption)[1].Value)
|
||||
assert.Equal(t, "zh-tw", res.([]core.SelectOption)[2].Value)
|
||||
assert.Equal(t, "zh-hk", res.([]core.SelectOption)[2].Value)
|
||||
}
|
||||
|
||||
func TestTemplateThemeGet(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.theme.get", "demo", "tech-blue")
|
||||
p, err := process.Of("sui.theme.get", "test", "advanced")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -111,16 +110,16 @@ func TestTemplateThemeGet(t *testing.T) {
|
|||
|
||||
assert.IsType(t, []core.SelectOption{}, res)
|
||||
assert.Equal(t, 2, len(res.([]core.SelectOption)))
|
||||
assert.Equal(t, "dark", res.([]core.SelectOption)[0].Value)
|
||||
assert.Equal(t, "light", res.([]core.SelectOption)[1].Value)
|
||||
assert.Equal(t, "light", res.([]core.SelectOption)[0].Value)
|
||||
assert.Equal(t, "dark", res.([]core.SelectOption)[1].Value)
|
||||
}
|
||||
|
||||
func TestBlockGet(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.block.get", "demo", "tech-blue")
|
||||
p, err := process.Of("sui.block.get", "test", "advanced")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -131,75 +130,61 @@ func TestBlockGet(t *testing.T) {
|
|||
}
|
||||
|
||||
assert.IsType(t, []core.IBlock{}, res)
|
||||
assert.Equal(t, 7, len(res.([]core.IBlock)))
|
||||
assert.Equal(t, "ColumnsTwo", res.([]core.IBlock)[0].(*local.Block).ID)
|
||||
assert.Equal(t, "Hero", res.([]core.IBlock)[1].(*local.Block).ID)
|
||||
assert.Equal(t, "Image", res.([]core.IBlock)[2].(*local.Block).ID)
|
||||
assert.Equal(t, "Section", res.([]core.IBlock)[3].(*local.Block).ID)
|
||||
assert.Equal(t, 0, len(res.([]core.IBlock)))
|
||||
}
|
||||
|
||||
func TestBlockFind(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.block.find", "demo", "tech-blue", "ColumnsTwo")
|
||||
p, err := process.Of("sui.block.find", "test", "advanced", "not-found")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
res, err := p.Exec()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
assert.IsType(t, "", res)
|
||||
assert.Contains(t, res.(string), "window.block__ColumnsTwo=")
|
||||
_, err = p.Exec()
|
||||
assert.NotNil(t, err)
|
||||
}
|
||||
|
||||
func TestBlockExport(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.block.export", "demo", "tech-blue")
|
||||
p, err := process.Of("sui.block.export", "test", "advanced")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
res, err := p.Exec()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
assert.IsType(t, &core.BlockLayoutItems{}, res)
|
||||
assert.Equal(t, 3, len(res.(*core.BlockLayoutItems).Categories))
|
||||
_, err = p.Exec()
|
||||
assert.Nil(t, err)
|
||||
}
|
||||
|
||||
func TestBlockMedia(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.block.media", "demo", "tech-blue", "ColumnsTwo")
|
||||
p, err := process.Of("sui.block.media", "test", "advanced", "not-found")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
res, err := p.Exec()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
assert.IsType(t, map[string]interface{}{}, res)
|
||||
assert.Equal(t, "image/png", res.(map[string]interface{})["type"])
|
||||
assert.NotEmpty(t, res.(map[string]interface{})["content"])
|
||||
_, err = p.Exec()
|
||||
assert.NotNil(t, err)
|
||||
|
||||
// assert.IsType(t, map[string]interface{}{}, res)
|
||||
// assert.Equal(t, "image/png", res.(map[string]interface{})["type"])
|
||||
// assert.NotEmpty(t, res.(map[string]interface{})["content"])
|
||||
}
|
||||
|
||||
func TestTemplateComponentGet(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.component.get", "demo", "tech-blue")
|
||||
p, err := process.Of("sui.component.get", "test", "advanced")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -210,37 +195,29 @@ func TestTemplateComponentGet(t *testing.T) {
|
|||
}
|
||||
|
||||
assert.IsType(t, []core.IComponent{}, res)
|
||||
assert.Equal(t, 6, len(res.([]core.IComponent)))
|
||||
assert.Equal(t, "Box", res.([]core.IComponent)[0].(*local.Component).ID)
|
||||
assert.Equal(t, "Card", res.([]core.IComponent)[1].(*local.Component).ID)
|
||||
assert.Equal(t, "Nav", res.([]core.IComponent)[2].(*local.Component).ID)
|
||||
assert.Equal(t, 0, len(res.([]core.IComponent)))
|
||||
}
|
||||
|
||||
func TestTemplateComponentFind(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.component.find", "demo", "tech-blue", "Box")
|
||||
p, err := process.Of("sui.component.find", "test", "advanced", "not-found")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
res, err := p.Exec()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
assert.IsType(t, "", res)
|
||||
assert.Contains(t, res.(string), "window.component__Box=")
|
||||
_, err = p.Exec()
|
||||
assert.NotNil(t, err)
|
||||
}
|
||||
|
||||
func TestPageTree(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.page.tree", "demo", "tech-blue")
|
||||
p, err := process.Of("sui.page.tree", "test", "advanced")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -251,17 +228,15 @@ func TestPageTree(t *testing.T) {
|
|||
}
|
||||
|
||||
assert.IsType(t, []*core.PageTreeNode{}, res)
|
||||
assert.Equal(t, 6, len(res.([]*core.PageTreeNode)))
|
||||
assert.Equal(t, "error", res.([]*core.PageTreeNode)[0].Name)
|
||||
assert.Equal(t, "footer", res.([]*core.PageTreeNode)[1].Name)
|
||||
assert.GreaterOrEqual(t, len(res.([]*core.PageTreeNode)), 2)
|
||||
}
|
||||
|
||||
func TestPageGet(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.page.get", "demo", "tech-blue", "/index/[invite]")
|
||||
p, err := process.Of("sui.page.get", "test", "advanced", "/page/[id]")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -273,7 +248,7 @@ func TestPageGet(t *testing.T) {
|
|||
|
||||
pages := res.([]core.IPage)
|
||||
assert.IsType(t, []core.IPage{}, pages)
|
||||
assert.Equal(t, 9, len(pages))
|
||||
assert.GreaterOrEqual(t, len(pages), 2)
|
||||
for _, page := range pages {
|
||||
assert.IsType(t, &local.Page{}, page)
|
||||
}
|
||||
|
|
@ -281,11 +256,11 @@ func TestPageGet(t *testing.T) {
|
|||
|
||||
func TestPageExist(t *testing.T) {
|
||||
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.page.exist", "demo", "tech-blue", "/index/[invite]")
|
||||
p, err := process.Of("sui.page.exist", "test", "advanced", "/page/[id]")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -297,7 +272,7 @@ func TestPageExist(t *testing.T) {
|
|||
assert.IsType(t, true, res)
|
||||
assert.Equal(t, true, res.(bool))
|
||||
|
||||
p, err = process.Of("sui.page.exist", "demo", "tech-blue", "/index/[invite]/[invite]")
|
||||
p, err = process.Of("sui.page.exist", "test", "advanced", "/page/[id]/[id]")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -312,16 +287,16 @@ func TestPageExist(t *testing.T) {
|
|||
|
||||
func TestPageCreate(t *testing.T) {
|
||||
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
defer func() {
|
||||
_, err := process.New("sui.page.remove", "demo", "tech-blue", "/unit-test").Exec()
|
||||
_, err := process.New("sui.page.remove", "test", "advanced", "/unit-test").Exec()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}()
|
||||
// test demo
|
||||
p, err := process.Of("sui.page.create", "demo", "tech-blue", "/unit-test")
|
||||
p, err := process.Of("sui.page.create", "test", "advanced", "/unit-test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -335,17 +310,17 @@ func TestPageCreate(t *testing.T) {
|
|||
|
||||
func TestPageRename(t *testing.T) {
|
||||
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
defer func() {
|
||||
_, err := process.New("sui.page.remove", "demo", "tech-blue", "/unit-test-2").Exec()
|
||||
_, err := process.New("sui.page.remove", "test", "advanced", "/unit-test-2").Exec()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.page.create", "demo", "tech-blue", "/unit-test")
|
||||
p, err := process.Of("sui.page.create", "test", "advanced", "/unit-test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -358,7 +333,7 @@ func TestPageRename(t *testing.T) {
|
|||
assert.Nil(t, res)
|
||||
|
||||
// rename
|
||||
p, err = process.Of("sui.page.rename", "demo", "tech-blue", "/unit-test", map[string]interface{}{"route": "/unit-test-2"})
|
||||
p, err = process.Of("sui.page.rename", "test", "advanced", "/unit-test", map[string]interface{}{"route": "/unit-test-2"})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -372,17 +347,17 @@ func TestPageRename(t *testing.T) {
|
|||
|
||||
func TestPageDuplicate(t *testing.T) {
|
||||
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
defer func() {
|
||||
_, err := process.New("sui.page.remove", "demo", "tech-blue", "/unit-test").Exec()
|
||||
_, err := process.New("sui.page.remove", "test", "advanced", "/unit-test").Exec()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.page.duplicate", "demo", "tech-blue", "/page/[id]", map[string]interface{}{"title": "hello", "route": "/unit-test"})
|
||||
p, err := process.Of("sui.page.duplicate", "test", "advanced", "/page/[id]", map[string]interface{}{"title": "hello", "route": "/unit-test"})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -396,11 +371,11 @@ func TestPageDuplicate(t *testing.T) {
|
|||
|
||||
func TestPageCreateSaveThenRemove(t *testing.T) {
|
||||
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.page.create", "demo", "tech-blue", "/unit-test", `{"uid":"unit-test", "needToSave":{"page":true}, "page":{"source":"<div>1</div>", "language":"html"}}`)
|
||||
p, err := process.Of("sui.page.create", "test", "advanced", "/unit-test", `{"uid":"unit-test", "needToSave":{"page":true}, "page":{"source":"<div>1</div>", "language":"html"}}`)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -412,7 +387,7 @@ func TestPageCreateSaveThenRemove(t *testing.T) {
|
|||
assert.Nil(t, res)
|
||||
|
||||
// test demo
|
||||
p, err = process.Of("sui.page.remove", "demo", "tech-blue", "/unit-test")
|
||||
p, err = process.Of("sui.page.remove", "test", "advanced", "/unit-test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -426,11 +401,11 @@ func TestPageCreateSaveThenRemove(t *testing.T) {
|
|||
|
||||
func TestPageSaveThenRemove(t *testing.T) {
|
||||
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.page.create", "demo", "tech-blue", "/unit-test", `{"uid":"unit-test", "needToSave":{"page":true}, "page":{"source":"<div>1</div>", "language":"html"}}`)
|
||||
p, err := process.Of("sui.page.create", "test", "advanced", "/unit-test", `{"uid":"unit-test", "needToSave":{"page":true}, "page":{"source":"<div>1</div>", "language":"html"}}`)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -442,7 +417,7 @@ func TestPageSaveThenRemove(t *testing.T) {
|
|||
assert.Nil(t, res)
|
||||
|
||||
// test demo
|
||||
p, err = process.Of("sui.page.SaveTemp", "demo", "tech-blue", "/unit-test", `{"uid":"unit-test", "needToSave":{"page":true}, "page":{"source":"<div>1</div>", "language":"html"}}`)
|
||||
p, err = process.Of("sui.page.SaveTemp", "test", "advanced", "/unit-test", `{"uid":"unit-test", "needToSave":{"page":true}, "page":{"source":"<div>1</div>", "language":"html"}}`)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -454,7 +429,7 @@ func TestPageSaveThenRemove(t *testing.T) {
|
|||
assert.Nil(t, res)
|
||||
|
||||
// test demo
|
||||
p, err = process.Of("sui.page.Save", "demo", "tech-blue", "/unit-test", `{"uid":"unit-test", "needToSave":{"page":true}, "page":{"source":"<div>1</div>", "language":"html"}}`)
|
||||
p, err = process.Of("sui.page.Save", "test", "advanced", "/unit-test", `{"uid":"unit-test", "needToSave":{"page":true}, "page":{"source":"<div>1</div>", "language":"html"}}`)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -466,7 +441,7 @@ func TestPageSaveThenRemove(t *testing.T) {
|
|||
assert.Nil(t, res)
|
||||
|
||||
// test demo
|
||||
p, err = process.Of("sui.page.remove", "demo", "tech-blue", "/unit-test")
|
||||
p, err = process.Of("sui.page.remove", "test", "advanced", "/unit-test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -482,7 +457,7 @@ func TestGetSource(t *testing.T) {
|
|||
|
||||
// *core.RequestSource
|
||||
var payload interface{} = &core.RequestSource{UID: "unit-test"}
|
||||
args := []interface{}{"demo", "tech-blue", "/index/[invite]", payload}
|
||||
args := []interface{}{"test", "advanced", "/index/[invite]", payload}
|
||||
p, err := process.Of("sui.page.Save", args...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
|
@ -574,11 +549,11 @@ func TestGetSource(t *testing.T) {
|
|||
|
||||
func TestPageAssetJS(t *testing.T) {
|
||||
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.page.asset", "demo", "tech-blue", "/page/404/404.js")
|
||||
p, err := process.Of("sui.page.asset", "test", "advanced", "/page/[id]/404/404.js")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -593,11 +568,11 @@ func TestPageAssetJS(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestPageAssetTS(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.page.asset", "demo", "tech-blue", "/page/404/404.ts")
|
||||
p, err := process.Of("sui.page.asset", "test", "advanced", "/page/[id]/404/404.ts")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -612,11 +587,11 @@ func TestPageAssetTS(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestPageAssetCSS(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.page.asset", "demo", "tech-blue", "/page/[id]/[id].css")
|
||||
p, err := process.Of("sui.page.asset", "test", "advanced", "/page/[id]/[id].css")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -631,11 +606,11 @@ func TestPageAssetCSS(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestEditorRender(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.editor.render", "demo", "tech-blue", "/index")
|
||||
p, err := process.Of("sui.editor.render", "test", "advanced", "/index")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -651,12 +626,12 @@ func TestEditorRender(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestEditorPageSource(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
sources := []string{"page", "script", "style", "data"}
|
||||
for _, source := range sources {
|
||||
p, err := process.Of("sui.editor.source", "demo", "tech-blue", "/index", source)
|
||||
p, err := process.Of("sui.editor.source", "test", "advanced", "/index", source)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -665,6 +640,7 @@ func TestEditorPageSource(t *testing.T) {
|
|||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
assert.IsType(t, core.SourceData{}, res)
|
||||
assert.NotEmpty(t, res.(core.SourceData).Source)
|
||||
assert.NotEmpty(t, res.(core.SourceData).Language)
|
||||
|
|
@ -672,11 +648,11 @@ func TestEditorPageSource(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestEditorRenderWithQuery(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.editor.render", "demo", "tech-blue", "/index", map[string]interface{}{
|
||||
p, err := process.Of("sui.editor.render", "test", "advanced", "/index", map[string]interface{}{
|
||||
"method": "POST",
|
||||
})
|
||||
if err != nil {
|
||||
|
|
@ -693,11 +669,11 @@ func TestEditorRenderWithQuery(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestPreviewRender(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.preview.render", "demo", "tech-blue", "/index")
|
||||
p, err := process.Of("sui.preview.render", "test", "advanced", "/index")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -712,11 +688,11 @@ func TestPreviewRender(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestBuildAll(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.build.all", "demo", "tech-blue", map[string]interface{}{"ssr": true})
|
||||
p, err := process.Of("sui.build.all", "test", "advanced", map[string]interface{}{"ssr": true})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -730,11 +706,11 @@ func TestBuildAll(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestBuildPage(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.build.page", "demo", "tech-blue", "/index", map[string]interface{}{"ssr": true})
|
||||
p, err := process.Of("sui.build.page", "test", "advanced", "/index", map[string]interface{}{"ssr": true})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -748,11 +724,11 @@ func TestBuildPage(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestSyncAssetFile(t *testing.T) {
|
||||
load(t)
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.sync.assetfile", "demo", "tech-blue", "/images/about/ab01.jpg", map[string]interface{}{"ssr": true})
|
||||
p, err := process.Of("sui.sync.assetfile", "test", "advanced", "/images/logos/wordmark.svg", map[string]interface{}{"ssr": true})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -764,11 +740,3 @@ func TestSyncAssetFile(t *testing.T) {
|
|||
|
||||
assert.Nil(t, res)
|
||||
}
|
||||
|
||||
func load(t *testing.T) {
|
||||
prepare(t)
|
||||
err := Load(config.Conf)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,12 +12,6 @@ import (
|
|||
func TestLoad(t *testing.T) {
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
err := Load(config.Conf)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
check(t)
|
||||
}
|
||||
|
||||
|
|
@ -26,20 +20,14 @@ func check(t *testing.T) {
|
|||
for id := range core.SUIs {
|
||||
ids[id] = true
|
||||
}
|
||||
assert.False(t, ids["azure"])
|
||||
assert.True(t, ids["demo"])
|
||||
assert.True(t, ids["screen"])
|
||||
assert.False(t, ids["not-exist"])
|
||||
assert.True(t, ids["test"])
|
||||
assert.True(t, ids["web"])
|
||||
}
|
||||
|
||||
func prepare(t *testing.T) {
|
||||
test.Prepare(t, config.Conf, "YAO_TEST_BUILDER_APPLICATION")
|
||||
}
|
||||
|
||||
func loadTestSui(t *testing.T) {
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
_, err := loadFile("suis/demo.sui.yao", "demo")
|
||||
test.Prepare(t, config.Conf, "YAO_SUI_TEST_APPLICATION")
|
||||
err := Load(config.Conf)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,15 +5,13 @@ import (
|
|||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/yaoapp/kun/any"
|
||||
"github.com/yaoapp/yao/config"
|
||||
"github.com/yaoapp/yao/test"
|
||||
)
|
||||
|
||||
func TestPageExec(t *testing.T) {
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
page := testPage(t)
|
||||
page := testDataPage(t)
|
||||
request := &Request{
|
||||
URL: ReqeustURL{Path: "/test/path"},
|
||||
Query: map[string][]string{"show": {"yes"}},
|
||||
|
|
@ -33,131 +31,3 @@ func TestPageExec(t *testing.T) {
|
|||
assert.Equal(t, "Article Search", res.Get("articles.data[0].description"))
|
||||
assert.Equal(t, "/test/path", res.Get("url.path"))
|
||||
}
|
||||
|
||||
func prepare(t *testing.T) {
|
||||
test.Prepare(t, config.Conf, "YAO_TEST_BUILDER_APPLICATION")
|
||||
}
|
||||
|
||||
func clean() {
|
||||
test.Clean()
|
||||
}
|
||||
|
||||
func testPage(t *testing.T) *Page {
|
||||
|
||||
page := &Page{
|
||||
Name: "test",
|
||||
Route: "test",
|
||||
Document: []byte(`
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||
<title>Document</title>
|
||||
<link rel="stylesheet" href="/assets/css/tailwind.css" />
|
||||
<link rel="stylesheet" href="/assets/css/app.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
{{ __page }}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
`),
|
||||
Codes: SourceCodes{
|
||||
HTML: Source{
|
||||
File: "test.html",
|
||||
Code: `<div class="p-10">
|
||||
<div>For</div>
|
||||
<div s:for="articles.data" s:for-item="article" s:for-index="idx">
|
||||
<div>{{ idx }} {{ article.title }}</div>
|
||||
<div>{{ article.desc }}</div>
|
||||
<div>{{ article.type == "article" ? "article" : "others"}}</div>
|
||||
|
||||
<div class="mt-10">IF</div>
|
||||
<div class="p-5">
|
||||
<div s:if="article.type == 'article'">article</div>
|
||||
<div s:elif="article.type == 'image'">image</div>
|
||||
<div s:else>others</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-10">Nested</div>
|
||||
<div
|
||||
s:for="article.images"
|
||||
s:for-item="image"
|
||||
s:for-index="imgIndex"
|
||||
class="p-5"
|
||||
>
|
||||
<div s:if="imgIndex == 1 || imgIndex == 2" class="p-5">
|
||||
{{ imgIndex }} {{ image }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="mt-10">IF</div>
|
||||
<div s:if="len(articles) > 0" :name="input.data">
|
||||
<div>{{ len(articles) > 0 }} articles.length > 0</div>
|
||||
</div>
|
||||
<div s:if="length > 0" :name="input.data">
|
||||
<div>{{ length > 0 }} len > 0</div>
|
||||
</div>
|
||||
<div s:if="P_('scripts.article.Space', 'hello') == 'hello space'" >
|
||||
hello space {{ P_('scripts.article.Space', 'hello') }}
|
||||
</div>
|
||||
<div s:if="showImage == 'yes'">showImage</div>
|
||||
<div s:elif="showImage == 'no'">noImage</div>
|
||||
<div s:elif="showImage == 'auto'">autoImage</div>
|
||||
<div s:else>otherImage</div>
|
||||
<div class="mt-10">Bind</div>
|
||||
<div>
|
||||
<div class="w-200">{{ input.data }}</div>
|
||||
<div class="mt-5">
|
||||
<input type="text" s:bind="input.data" placeholder="Bind Input Data"
|
||||
class="w-200 p-2 bg-purple-900 text-white" />
|
||||
</div>
|
||||
<div class="mt-5">
|
||||
<input type="button" value="Change" s:click="changeInput"
|
||||
class="text-blue-600 p-2" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-10">Import Page</div>
|
||||
<page is="/footer">
|
||||
<slot is="link"> Link </slot>
|
||||
<slot is="item"> Item </slot>
|
||||
</page>
|
||||
|
||||
<page is="/footer" no-style>
|
||||
<slot is="link"> Link2 </slot>
|
||||
<slot is="item"> Item2 </slot>
|
||||
</page>
|
||||
|
||||
</div>`,
|
||||
},
|
||||
DATA: Source{
|
||||
File: "test.json",
|
||||
Code: `{
|
||||
"$articles": "scripts.article.Search",
|
||||
"$showImage": {
|
||||
"process": "scripts.article.ShowImage",
|
||||
"args": ["$query.show"]
|
||||
},
|
||||
"length": 20,
|
||||
"array": [
|
||||
"item-1",
|
||||
"$scripts.article.Setting",
|
||||
{"$images": "scripts.article.Images"},
|
||||
{"process": "scripts.article.Thumbs", "args": ["$query.show"], "__exec": true }
|
||||
],
|
||||
"input": { "data": "hello world" },
|
||||
"url": {"path":"$url.path"}
|
||||
}
|
||||
`,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
return page
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,20 +1,20 @@
|
|||
package core
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/yaoapp/kun/utils"
|
||||
)
|
||||
|
||||
func TestRender(t *testing.T) {
|
||||
prepare(t)
|
||||
defer clean()
|
||||
|
||||
page := testPage(t)
|
||||
page := testDataPage(t)
|
||||
request := &Request{
|
||||
Query: map[string][]string{"show": {"no"}},
|
||||
Locale: "zh-CN",
|
||||
Locale: "zh-cn",
|
||||
Theme: "dark",
|
||||
}
|
||||
|
||||
|
|
@ -30,7 +30,9 @@ func TestRender(t *testing.T) {
|
|||
t.Fatalf("Render error: %v", err)
|
||||
}
|
||||
|
||||
utils.Dump(html)
|
||||
for i, err := range parser.errors {
|
||||
fmt.Println(i, err)
|
||||
}
|
||||
|
||||
assert.NotEmpty(t, html)
|
||||
assert.Contains(t, html, "hello space")
|
||||
|
|
|
|||
48
sui/core/sui_test.go
Normal file
48
sui/core/sui_test.go
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
package core
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/yaoapp/gou/application"
|
||||
"github.com/yaoapp/yao/config"
|
||||
"github.com/yaoapp/yao/test"
|
||||
)
|
||||
|
||||
func testDataPage(t *testing.T) *Page {
|
||||
root := "/data/test-cases/basic"
|
||||
path := filepath.Join(root, "data")
|
||||
|
||||
document, err := application.App.Read(root + "/__document.html")
|
||||
if err != nil {
|
||||
t.Fatalf("Read error: %v", err)
|
||||
}
|
||||
|
||||
html, err := application.App.Read(path + "/data.html")
|
||||
if err != nil {
|
||||
t.Fatalf("Read error: %v", err)
|
||||
}
|
||||
|
||||
data, err := application.App.Read(path + "/data.json")
|
||||
if err != nil {
|
||||
t.Fatalf("Read error: %v", err)
|
||||
}
|
||||
|
||||
return &Page{
|
||||
Name: "data",
|
||||
Route: "data",
|
||||
Document: document,
|
||||
Codes: SourceCodes{
|
||||
HTML: Source{File: "data.html", Code: string(html)},
|
||||
DATA: Source{File: "data.json", Code: string(data)},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func prepare(t *testing.T) {
|
||||
test.Prepare(t, config.Conf, "YAO_SUI_TEST_APPLICATION")
|
||||
}
|
||||
|
||||
func clean() {
|
||||
test.Clean()
|
||||
}
|
||||
|
|
@ -1,129 +1,123 @@
|
|||
package local
|
||||
|
||||
import (
|
||||
"testing"
|
||||
// func TestTemplateBlocks(t *testing.T) {
|
||||
// tests := prepare(t)
|
||||
// defer clean()
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
// tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
// if err != nil {
|
||||
// t.Fatalf("GetTemplate error: %v", err)
|
||||
// }
|
||||
|
||||
func TestTemplateBlocks(t *testing.T) {
|
||||
tests := prepare(t)
|
||||
defer clean()
|
||||
// blocks, err := tmpl.Blocks()
|
||||
// if err != nil {
|
||||
// t.Fatalf("Blocks error: %v", err)
|
||||
// }
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
// if len(blocks) < 3 {
|
||||
// t.Fatalf("Blocks error: %v", len(blocks))
|
||||
// }
|
||||
|
||||
blocks, err := tmpl.Blocks()
|
||||
if err != nil {
|
||||
t.Fatalf("Blocks error: %v", err)
|
||||
}
|
||||
// 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)
|
||||
|
||||
if len(blocks) < 3 {
|
||||
t.Fatalf("Blocks error: %v", len(blocks))
|
||||
}
|
||||
// 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, "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, "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)
|
||||
// }
|
||||
|
||||
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)
|
||||
// func TestTemplateBlockJS(t *testing.T) {
|
||||
// tests := prepare(t)
|
||||
// defer clean()
|
||||
|
||||
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)
|
||||
}
|
||||
// tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
// if err != nil {
|
||||
// t.Fatalf("GetTemplate error: %v", err)
|
||||
// }
|
||||
|
||||
func TestTemplateBlockJS(t *testing.T) {
|
||||
tests := prepare(t)
|
||||
defer clean()
|
||||
// block, err := tmpl.Block("ColumnsTwo")
|
||||
// if err != nil {
|
||||
// t.Fatalf("Blocks error: %v", err)
|
||||
// }
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate 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"`)
|
||||
// }
|
||||
|
||||
block, err := tmpl.Block("ColumnsTwo")
|
||||
if err != nil {
|
||||
t.Fatalf("Blocks error: %v", err)
|
||||
}
|
||||
// func TestTemplateBlockTS(t *testing.T) {
|
||||
// tests := prepare(t)
|
||||
// defer clean()
|
||||
|
||||
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"`)
|
||||
}
|
||||
// tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
// if err != nil {
|
||||
// t.Fatalf("GetTemplate error: %v", err)
|
||||
// }
|
||||
|
||||
func TestTemplateBlockTS(t *testing.T) {
|
||||
tests := prepare(t)
|
||||
defer clean()
|
||||
// block, err := tmpl.Block("Hero")
|
||||
// if err != nil {
|
||||
// t.Fatalf("Blocks error: %v", err)
|
||||
// }
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate 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>`)
|
||||
// }
|
||||
|
||||
block, err := tmpl.Block("Hero")
|
||||
if err != nil {
|
||||
t.Fatalf("Blocks error: %v", err)
|
||||
}
|
||||
// func TestBlockLayoutItems(t *testing.T) {
|
||||
// tests := prepare(t)
|
||||
// defer clean()
|
||||
|
||||
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>`)
|
||||
}
|
||||
// tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
// if err != nil {
|
||||
// t.Fatalf("GetTemplate error: %v", err)
|
||||
// }
|
||||
|
||||
func TestBlockLayoutItems(t *testing.T) {
|
||||
tests := prepare(t)
|
||||
defer clean()
|
||||
// items, err := tmpl.BlockLayoutItems()
|
||||
// if err != nil {
|
||||
// t.Fatalf("BlockLayoutItems error: %v", err)
|
||||
// }
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
// assert.Equal(t, 3, len(items.Categories))
|
||||
|
||||
items, err := tmpl.BlockLayoutItems()
|
||||
if err != nil {
|
||||
t.Fatalf("BlockLayoutItems error: %v", err)
|
||||
}
|
||||
// tmpl, err = tests.Demo.GetTemplate("website-ai")
|
||||
// if err != nil {
|
||||
// t.Fatalf("GetTemplate error: %v", err)
|
||||
// }
|
||||
|
||||
assert.Equal(t, 3, len(items.Categories))
|
||||
// items, err = tmpl.BlockLayoutItems()
|
||||
// if err != nil {
|
||||
// t.Fatalf("BlockLayoutItems error: %v", err)
|
||||
// }
|
||||
|
||||
tmpl, err = tests.Demo.GetTemplate("website-ai")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
// assert.Equal(t, 1, len(items.Categories))
|
||||
// }
|
||||
|
||||
items, err = tmpl.BlockLayoutItems()
|
||||
if err != nil {
|
||||
t.Fatalf("BlockLayoutItems error: %v", err)
|
||||
}
|
||||
// func TestBlockMedia(t *testing.T) {
|
||||
// tests := prepare(t)
|
||||
// defer clean()
|
||||
|
||||
assert.Equal(t, 1, len(items.Categories))
|
||||
}
|
||||
// tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
// if err != nil {
|
||||
// t.Fatalf("GetTemplate error: %v", err)
|
||||
// }
|
||||
|
||||
func TestBlockMedia(t *testing.T) {
|
||||
tests := prepare(t)
|
||||
defer clean()
|
||||
// media, err := tmpl.BlockMedia("ColumnsTwo")
|
||||
// if err != nil {
|
||||
// t.Fatalf("BlockMedia error: %v", err)
|
||||
// }
|
||||
|
||||
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)
|
||||
}
|
||||
// assert.Equal(t, "image/png", media.Type)
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ func TestTemplateBuild(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,83 +1,77 @@
|
|||
package local
|
||||
|
||||
import (
|
||||
"testing"
|
||||
// func TestTemplateComponents(t *testing.T) {
|
||||
// tests := prepare(t)
|
||||
// defer clean()
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
// tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
// if err != nil {
|
||||
// t.Fatalf("GetTemplate error: %v", err)
|
||||
// }
|
||||
|
||||
func TestTemplateComponents(t *testing.T) {
|
||||
tests := prepare(t)
|
||||
defer clean()
|
||||
// components, err := tmpl.Components()
|
||||
// if err != nil {
|
||||
// t.Fatalf("Components error: %v", err)
|
||||
// }
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
// if len(components) < 2 {
|
||||
// t.Fatalf("Components error: %v", len(components))
|
||||
// }
|
||||
// assert.Equal(t, "Box", components[0].(*Component).ID)
|
||||
// assert.Equal(t, "/Box/Box.html", components[0].(*Component).Codes.HTML.File)
|
||||
// assert.Equal(t, "/Box/Box.js", components[0].(*Component).Codes.JS.File)
|
||||
// assert.Equal(t, "/Box/Box.ts", components[0].(*Component).Codes.TS.File)
|
||||
|
||||
components, err := tmpl.Components()
|
||||
if err != nil {
|
||||
t.Fatalf("Components error: %v", err)
|
||||
}
|
||||
// assert.Equal(t, "Card", components[1].(*Component).ID)
|
||||
// assert.Equal(t, "/Card/Card.html", components[1].(*Component).Codes.HTML.File)
|
||||
// assert.Equal(t, "/Card/Card.js", components[1].(*Component).Codes.JS.File)
|
||||
// assert.Equal(t, "/Card/Card.ts", components[1].(*Component).Codes.TS.File)
|
||||
|
||||
if len(components) < 2 {
|
||||
t.Fatalf("Components error: %v", len(components))
|
||||
}
|
||||
assert.Equal(t, "Box", components[0].(*Component).ID)
|
||||
assert.Equal(t, "/Box/Box.html", components[0].(*Component).Codes.HTML.File)
|
||||
assert.Equal(t, "/Box/Box.js", components[0].(*Component).Codes.JS.File)
|
||||
assert.Equal(t, "/Box/Box.ts", components[0].(*Component).Codes.TS.File)
|
||||
// assert.Equal(t, "Nav", components[2].(*Component).ID)
|
||||
// assert.Equal(t, "/Nav/Nav.html", components[2].(*Component).Codes.HTML.File)
|
||||
// assert.Equal(t, "/Nav/Nav.js", components[2].(*Component).Codes.JS.File)
|
||||
// assert.Equal(t, "/Nav/Nav.ts", components[2].(*Component).Codes.TS.File)
|
||||
|
||||
assert.Equal(t, "Card", components[1].(*Component).ID)
|
||||
assert.Equal(t, "/Card/Card.html", components[1].(*Component).Codes.HTML.File)
|
||||
assert.Equal(t, "/Card/Card.js", components[1].(*Component).Codes.JS.File)
|
||||
assert.Equal(t, "/Card/Card.ts", components[1].(*Component).Codes.TS.File)
|
||||
// }
|
||||
|
||||
assert.Equal(t, "Nav", components[2].(*Component).ID)
|
||||
assert.Equal(t, "/Nav/Nav.html", components[2].(*Component).Codes.HTML.File)
|
||||
assert.Equal(t, "/Nav/Nav.js", components[2].(*Component).Codes.JS.File)
|
||||
assert.Equal(t, "/Nav/Nav.ts", components[2].(*Component).Codes.TS.File)
|
||||
// func TestTemplateComponentJS(t *testing.T) {
|
||||
// tests := prepare(t)
|
||||
// defer clean()
|
||||
|
||||
}
|
||||
// tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
// if err != nil {
|
||||
// t.Fatalf("GetTemplate error: %v", err)
|
||||
// }
|
||||
|
||||
func TestTemplateComponentJS(t *testing.T) {
|
||||
tests := prepare(t)
|
||||
defer clean()
|
||||
// component, err := tmpl.Component("Card")
|
||||
// if err != nil {
|
||||
// t.Fatalf("Components error: %v", err)
|
||||
// }
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
// assert.Equal(t, "Card", component.(*Component).ID)
|
||||
// assert.NotEmpty(t, component.(*Component).Codes.HTML.Code)
|
||||
// assert.NotEmpty(t, component.(*Component).Codes.JS.Code)
|
||||
// assert.Contains(t, component.(*Component).Compiled, "window.component__Card")
|
||||
// assert.Contains(t, component.(*Component).Compiled, `<h1>Card</h1>`)
|
||||
// }
|
||||
|
||||
component, err := tmpl.Component("Card")
|
||||
if err != nil {
|
||||
t.Fatalf("Components error: %v", err)
|
||||
}
|
||||
// func TestTemplateComponentTS(t *testing.T) {
|
||||
// tests := prepare(t)
|
||||
// defer clean()
|
||||
|
||||
assert.Equal(t, "Card", component.(*Component).ID)
|
||||
assert.NotEmpty(t, component.(*Component).Codes.HTML.Code)
|
||||
assert.NotEmpty(t, component.(*Component).Codes.JS.Code)
|
||||
assert.Contains(t, component.(*Component).Compiled, "window.component__Card")
|
||||
assert.Contains(t, component.(*Component).Compiled, `<h1>Card</h1>`)
|
||||
}
|
||||
// tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
// if err != nil {
|
||||
// t.Fatalf("GetTemplate error: %v", err)
|
||||
// }
|
||||
|
||||
func TestTemplateComponentTS(t *testing.T) {
|
||||
tests := prepare(t)
|
||||
defer clean()
|
||||
// component, err := tmpl.Component("Box")
|
||||
// if err != nil {
|
||||
// t.Fatalf("Components error: %v", err)
|
||||
// }
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
||||
component, err := tmpl.Component("Box")
|
||||
if err != nil {
|
||||
t.Fatalf("Components error: %v", err)
|
||||
}
|
||||
|
||||
assert.Equal(t, "Box", component.(*Component).ID)
|
||||
assert.NotEmpty(t, component.(*Component).Codes.HTML.Code)
|
||||
assert.NotEmpty(t, component.(*Component).Codes.TS.Code)
|
||||
assert.Contains(t, component.(*Component).Compiled, "window.component__Box")
|
||||
assert.Contains(t, component.(*Component).Compiled, `<div>Box</div>`)
|
||||
}
|
||||
// assert.Equal(t, "Box", component.(*Component).ID)
|
||||
// assert.NotEmpty(t, component.(*Component).Codes.HTML.Code)
|
||||
// assert.NotEmpty(t, component.(*Component).Codes.TS.Code)
|
||||
// assert.Contains(t, component.(*Component).Compiled, "window.component__Box")
|
||||
// assert.Contains(t, component.(*Component).Compiled, `<div>Box</div>`)
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ func (local *Local) getTemplate(id string, path string) (*Template, error) {
|
|||
}}
|
||||
|
||||
// load the template.json
|
||||
configFile := filepath.Join(path, fmt.Sprintf("%s.json", id))
|
||||
configFile := filepath.Join(path, "template.json")
|
||||
if local.fs.IsFile(configFile) {
|
||||
configBytes, err := local.fs.ReadFile(configFile)
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -9,86 +9,108 @@ import (
|
|||
"github.com/yaoapp/yao/test"
|
||||
)
|
||||
|
||||
type TestCase struct {
|
||||
Test *Local
|
||||
Web *Local
|
||||
}
|
||||
|
||||
func TestGetTemplates(t *testing.T) {
|
||||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
dempTmpls, err := tests.Demo.GetTemplates()
|
||||
testTmpls, err := tests.Test.GetTemplates()
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplates error: %v", err)
|
||||
}
|
||||
|
||||
if len(dempTmpls) < 3 {
|
||||
t.Fatalf("The demo templates less than 3 (%v<3)", len(dempTmpls))
|
||||
if len(testTmpls) != 2 {
|
||||
t.Fatalf("The test templates not equal 2 (%v!=2)", len(testTmpls))
|
||||
}
|
||||
|
||||
assert.Equal(t, "tech-blue", dempTmpls[0].(*Template).ID)
|
||||
assert.Equal(t, "Tech Blue DEMO", dempTmpls[0].(*Template).Name)
|
||||
assert.Equal(t, true, len(dempTmpls[1].(*Template).Screenshots) > 0)
|
||||
assert.Equal(t, 1, dempTmpls[0].(*Template).Version)
|
||||
assert.Equal(t, "Tech Blue DEMO", dempTmpls[0].(*Template).Descrption)
|
||||
// Advanced Template
|
||||
assert.Equal(t, "advanced", testTmpls[0].(*Template).ID)
|
||||
assert.Equal(t, "The advanced template", testTmpls[0].(*Template).Name)
|
||||
assert.Len(t, testTmpls[0].Themes(), 2)
|
||||
assert.Len(t, testTmpls[0].Locales(), 3)
|
||||
assert.Len(t, testTmpls[0].(*Template).Template.Themes, 2)
|
||||
assert.Len(t, testTmpls[0].(*Template).Template.Locales, 4)
|
||||
|
||||
assert.Equal(t, "website-ai", dempTmpls[1].(*Template).ID)
|
||||
assert.Equal(t, "Website DEMO", dempTmpls[1].(*Template).Name)
|
||||
assert.Equal(t, true, len(dempTmpls[1].(*Template).Screenshots) > 0)
|
||||
assert.Equal(t, 2, dempTmpls[1].(*Template).Version)
|
||||
assert.Equal(t, "AI Website DEMO", dempTmpls[1].(*Template).Descrption)
|
||||
// Basic Template
|
||||
assert.Equal(t, "basic", testTmpls[1].(*Template).ID)
|
||||
assert.Equal(t, "The basic template", testTmpls[1].(*Template).Name)
|
||||
assert.Len(t, testTmpls[1].Themes(), 0)
|
||||
assert.Len(t, testTmpls[1].Locales(), 0)
|
||||
assert.Len(t, testTmpls[1].(*Template).Template.Themes, 0)
|
||||
assert.Len(t, testTmpls[1].(*Template).Template.Locales, 0)
|
||||
|
||||
assert.Equal(t, "wechat-web", dempTmpls[2].(*Template).ID)
|
||||
assert.Equal(t, "WECHAT-WEB", dempTmpls[2].(*Template).Name)
|
||||
assert.Equal(t, []string{}, dempTmpls[2].(*Template).Screenshots)
|
||||
assert.Equal(t, 1, dempTmpls[2].(*Template).Version)
|
||||
assert.Equal(t, "", dempTmpls[2].(*Template).Descrption)
|
||||
// Default Template ( Application )
|
||||
webTmpls, err := tests.Web.GetTemplates()
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplates error: %v", err)
|
||||
}
|
||||
|
||||
if len(webTmpls) != 1 {
|
||||
t.Fatalf("The web templates not equal 1 (%v!=1)", len(webTmpls))
|
||||
}
|
||||
|
||||
// Default Template
|
||||
assert.Equal(t, "default", webTmpls[0].(*Template).ID)
|
||||
assert.Equal(t, "Yao Startup Webapp", webTmpls[0].(*Template).Name)
|
||||
assert.Len(t, webTmpls[0].Themes(), 2)
|
||||
assert.Len(t, webTmpls[0].Locales(), 3)
|
||||
assert.Len(t, webTmpls[0].(*Template).Template.Themes, 2)
|
||||
assert.Len(t, webTmpls[0].(*Template).Template.Locales, 2)
|
||||
}
|
||||
|
||||
func TestGetTemplate(t *testing.T) {
|
||||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
websiteAI, err := tests.Demo.GetTemplate("website-ai")
|
||||
basicTmpl, err := tests.Test.GetTemplate("basic")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
||||
assert.Equal(t, "website-ai", websiteAI.(*Template).ID)
|
||||
assert.Equal(t, "Website DEMO", websiteAI.(*Template).Name)
|
||||
assert.Equal(t, true, len(websiteAI.(*Template).Screenshots) > 0)
|
||||
assert.Equal(t, 2, websiteAI.(*Template).Version)
|
||||
assert.Equal(t, "AI Website DEMO", websiteAI.(*Template).Descrption)
|
||||
assert.Equal(t, "basic", basicTmpl.(*Template).ID)
|
||||
|
||||
advancedTmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
assert.Equal(t, "advanced", advancedTmpl.(*Template).ID)
|
||||
|
||||
defaultTmpl, err := tests.Web.GetTemplate("default")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
assert.Equal(t, "default", defaultTmpl.(*Template).ID)
|
||||
}
|
||||
|
||||
func prepare(t *testing.T) struct {
|
||||
Demo *Local
|
||||
Screen *Local
|
||||
} {
|
||||
func prepare(t *testing.T) TestCase {
|
||||
|
||||
test.Prepare(t, config.Conf, "YAO_TEST_BUILDER_APPLICATION")
|
||||
demoDSL, err := core.Load("/suis/demo.sui.yao", "demo")
|
||||
test.Prepare(t, config.Conf, "YAO_SUI_TEST_APPLICATION")
|
||||
webDSL, err := core.Load("/suis/web.sui.yao", "web")
|
||||
if err != nil {
|
||||
t.Fatalf("Load error: %v", err)
|
||||
}
|
||||
|
||||
demo, err := New(demoDSL)
|
||||
web, err := New(webDSL)
|
||||
if err != nil {
|
||||
t.Fatalf("New error: %v", err)
|
||||
}
|
||||
|
||||
screenDSL, err := core.Load("/suis/screen.sui.yao", "screen")
|
||||
testDSL, err := core.Load("/suis/test.sui.yao", "test")
|
||||
if err != nil {
|
||||
t.Fatalf("Load error: %v", err)
|
||||
}
|
||||
|
||||
screen, err := New(screenDSL)
|
||||
test, err := New(testDSL)
|
||||
if err != nil {
|
||||
t.Fatalf("New error: %v", err)
|
||||
}
|
||||
return struct {
|
||||
Demo *Local
|
||||
Screen *Local
|
||||
}{
|
||||
Demo: demo,
|
||||
Screen: screen,
|
||||
return TestCase{
|
||||
Test: test,
|
||||
Web: web,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ func TestPageEditorRender(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
@ -30,17 +30,9 @@ func TestPageEditorRender(t *testing.T) {
|
|||
assert.NotEmpty(t, res.CSS)
|
||||
assert.NotEmpty(t, res.Scripts)
|
||||
assert.NotEmpty(t, res.Styles)
|
||||
assert.Equal(t, 3, len(res.Scripts))
|
||||
assert.Equal(t, 4, len(res.Styles))
|
||||
assert.GreaterOrEqual(t, len(res.Styles), 1)
|
||||
assert.GreaterOrEqual(t, len(res.Scripts), 2)
|
||||
|
||||
assert.Equal(t, "@assets/libs/tiny-slider/min/tiny-slider.js", res.Scripts[0])
|
||||
assert.Equal(t, "@assets/libs/feather-icons/feather.min.js", res.Scripts[1])
|
||||
assert.Equal(t, "@assets/js/plugins.init.js", res.Scripts[2])
|
||||
|
||||
assert.Equal(t, "@assets/libs/tiny-slider/tiny-slider.css", res.Styles[0])
|
||||
assert.Equal(t, "@assets/libs/@iconscout/unicons/css/line.css", res.Styles[1])
|
||||
assert.Equal(t, "@assets/libs/@mdi/font/css/materialdesignicons.min.css", res.Styles[2])
|
||||
assert.Equal(t, "@assets/css/tailwind.css", res.Styles[3])
|
||||
}
|
||||
|
||||
func TestPagePreviewRender(t *testing.T) {
|
||||
|
|
@ -48,7 +40,7 @@ func TestPagePreviewRender(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
@ -64,7 +56,6 @@ func TestPagePreviewRender(t *testing.T) {
|
|||
}
|
||||
|
||||
assert.NotEmpty(t, html)
|
||||
assert.Contains(t, html, "function Hello()")
|
||||
// assert.Contains(t, html, "color: #2c3e50;")
|
||||
assert.Contains(t, html, "/api/__yao/sui/v1/demo/asset/tech-blue/@assets")
|
||||
assert.Contains(t, html, "var __sui_data")
|
||||
assert.Contains(t, html, "/api/__yao/sui/v1/test/asset/advanced/@assets")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ func TestTemplatePages(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
@ -23,7 +23,7 @@ func TestTemplatePages(t *testing.T) {
|
|||
t.Fatalf("Pages error: %v", err)
|
||||
}
|
||||
|
||||
if len(pages) < 8 {
|
||||
if len(pages) < 1 {
|
||||
t.Fatalf("Pages error: %v", len(pages))
|
||||
}
|
||||
|
||||
|
|
@ -50,32 +50,30 @@ func TestTemplatePageTree(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
||||
pages, err := tmpl.PageTree("/page/[id]")
|
||||
pages, err := tmpl.PageTree("/")
|
||||
if err != nil {
|
||||
t.Fatalf("Pages error: %v", err)
|
||||
}
|
||||
|
||||
assert.Equal(t, 6, len(pages))
|
||||
assert.Equal(t, "error", pages[0].Name)
|
||||
assert.Equal(t, true, pages[0].IsDir)
|
||||
assert.Equal(t, "error", pages[0].Children[0].Name)
|
||||
assert.Equal(t, "/error", pages[0].Children[0].IPage.(*Page).Route)
|
||||
assert.Equal(t, "error", pages[0].Children[0].IPage.(*Page).Name)
|
||||
if len(pages) < 2 {
|
||||
t.Fatalf("Pages error: %v", len(pages))
|
||||
}
|
||||
|
||||
assert.Equal(t, "index", pages[2].Name)
|
||||
assert.Equal(t, true, pages[1].IsDir)
|
||||
assert.Equal(t, "[invite]", pages[2].Children[0].Name)
|
||||
assert.Equal(t, true, pages[2].Children[0].IsDir)
|
||||
assert.Equal(t, "/index/[invite]", pages[2].Children[0].Children[0].IPage.(*Page).Route)
|
||||
assert.Equal(t, "[invite]", pages[2].Children[0].Children[0].IPage.(*Page).Name)
|
||||
assert.Equal(t, "/index", pages[2].Children[1].IPage.(*Page).Route)
|
||||
assert.Equal(t, "index", pages[2].Children[1].IPage.(*Page).Name)
|
||||
assert.NotEmpty(t, pages)
|
||||
assert.NotEmpty(t, pages[1].Children)
|
||||
if len(pages[1].Children) < 2 {
|
||||
t.Fatalf("Pages error: %v", len(pages[1].Children))
|
||||
}
|
||||
|
||||
assert.NotEmpty(t, pages[1].Children[0].Children)
|
||||
if len(pages[1].Children[0].Children) < 2 {
|
||||
t.Fatalf("Pages error: %v", len(pages[1].Children[0].Children))
|
||||
}
|
||||
}
|
||||
|
||||
func TestTemplatePageTS(t *testing.T) {
|
||||
|
|
@ -83,7 +81,7 @@ func TestTemplatePageTS(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
@ -96,7 +94,7 @@ func TestTemplatePageTS(t *testing.T) {
|
|||
page := ipage.(*Page)
|
||||
|
||||
assert.Equal(t, "/page/[id]", page.Route)
|
||||
assert.Equal(t, "/templates/tech-blue/page/[id]", page.Path)
|
||||
assert.Equal(t, "/test-cases/advanced/page/[id]", page.Path)
|
||||
assert.Equal(t, "[id].css", page.Codes.CSS.File)
|
||||
assert.Equal(t, "[id].html", page.Codes.HTML.File)
|
||||
assert.Equal(t, "[id].js", page.Codes.JS.File)
|
||||
|
|
@ -119,19 +117,19 @@ func TestTemplatePageJS(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
||||
ipage, err := tmpl.Page("/page/404")
|
||||
ipage, err := tmpl.Page("/page/[id]/404")
|
||||
if err != nil {
|
||||
t.Fatalf("Page error: %v", err)
|
||||
}
|
||||
|
||||
page := ipage.(*Page)
|
||||
assert.Equal(t, "/page/404", page.Route)
|
||||
assert.Equal(t, "/templates/tech-blue/page/404", page.Path)
|
||||
assert.Equal(t, "/page/[id]/404", page.Route)
|
||||
assert.Equal(t, "/test-cases/advanced/page/[id]/404", page.Path)
|
||||
assert.Equal(t, "404.css", page.Codes.CSS.File)
|
||||
assert.Equal(t, "404.html", page.Codes.HTML.File)
|
||||
assert.Equal(t, "404.js", page.Codes.JS.File)
|
||||
|
|
@ -154,7 +152,7 @@ func TestPageSaveTempBoard(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
@ -194,7 +192,7 @@ func TestPageSaveTempPage(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
@ -237,7 +235,7 @@ func TestPageSaveTempStyle(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
@ -280,7 +278,7 @@ func TestPageSaveTempScriptJS(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
@ -323,7 +321,7 @@ func TestPageSaveTempScriptTS(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
@ -366,7 +364,7 @@ func TestPageSaveTempData(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
@ -409,7 +407,7 @@ func TestPageSaveTempSetting(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
@ -447,7 +445,7 @@ func TestPageSave(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
@ -495,7 +493,7 @@ func TestPageGetPageFromAsset(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
@ -507,7 +505,7 @@ func TestPageGetPageFromAsset(t *testing.T) {
|
|||
}
|
||||
|
||||
assert.Equal(t, "/index", page.Get().Route)
|
||||
assert.Equal(t, "/templates/tech-blue/index", page.Get().Path)
|
||||
assert.Equal(t, "/test-cases/advanced/index", page.Get().Path)
|
||||
assert.Equal(t, "index", page.Get().Name)
|
||||
|
||||
file = "/page/404/404.js"
|
||||
|
|
@ -517,7 +515,7 @@ func TestPageGetPageFromAsset(t *testing.T) {
|
|||
}
|
||||
|
||||
assert.Equal(t, "/page/404", page.Get().Route)
|
||||
assert.Equal(t, "/templates/tech-blue/page/404", page.Get().Path)
|
||||
assert.Equal(t, "/test-cases/advanced/page/404", page.Get().Path)
|
||||
assert.Equal(t, "404", page.Get().Name)
|
||||
}
|
||||
|
||||
|
|
@ -525,12 +523,12 @@ func TestPageAssetScriptJS(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
||||
file := "/page/404/404.js"
|
||||
file := "/page/[id]/404/404.js"
|
||||
page, err := tmpl.GetPageFromAsset(file)
|
||||
if err != nil {
|
||||
t.Fatalf("GetPageFromAsset error: %v", err)
|
||||
|
|
@ -549,7 +547,7 @@ func TestPageAssetScriptTS(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
@ -573,7 +571,7 @@ func TestPageAssetStyle(t *testing.T) {
|
|||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -298,8 +298,8 @@ func (tmpl *Template) Asset(file string, width, height uint) (*core.Asset, error
|
|||
|
||||
file = filepath.Join(tmpl.Root, "__assets", file)
|
||||
if exist, _ := tmpl.local.fs.Exists(file); exist {
|
||||
|
||||
if width > 0 || height > 0 {
|
||||
ext := strings.ToLower(filepath.Ext(file))
|
||||
if (width > 0 || height > 0) && (ext == ".jpg" || ext == ".jpeg" || ext == ".png" || ext == ".gif" || ext == ".bmp") {
|
||||
return tmpl.assetThumb(file, width, height)
|
||||
}
|
||||
|
||||
|
|
@ -309,7 +309,7 @@ func (tmpl *Template) Asset(file string, width, height uint) (*core.Asset, error
|
|||
}
|
||||
|
||||
typ := "text/plain"
|
||||
switch filepath.Ext(file) {
|
||||
switch ext {
|
||||
case ".css":
|
||||
typ = "text/css; charset=utf-8"
|
||||
break
|
||||
|
|
|
|||
|
|
@ -4,33 +4,34 @@ import (
|
|||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/yaoapp/gou/application"
|
||||
)
|
||||
|
||||
func TestTemplateThemes(t *testing.T) {
|
||||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
||||
themes := tmpl.Themes()
|
||||
if len(themes) < 2 {
|
||||
if len(themes) != 2 {
|
||||
t.Fatalf("Themes error: %v", len(themes))
|
||||
}
|
||||
|
||||
assert.Equal(t, "dark", themes[0].Value)
|
||||
assert.Equal(t, "暗色主题", themes[0].Label)
|
||||
assert.Equal(t, "light", themes[1].Value)
|
||||
assert.Equal(t, "明亮主题", themes[1].Label)
|
||||
assert.Equal(t, "light", themes[0].Value)
|
||||
assert.Equal(t, "Light", themes[0].Label)
|
||||
assert.Equal(t, "dark", themes[1].Value)
|
||||
assert.Equal(t, "Dark", themes[1].Label)
|
||||
}
|
||||
|
||||
func TestTemplateLocales(t *testing.T) {
|
||||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
|
@ -40,31 +41,60 @@ func TestTemplateLocales(t *testing.T) {
|
|||
t.Fatalf("Locales error: %v", len(locales))
|
||||
}
|
||||
|
||||
assert.Equal(t, "ar", locales[0].Label)
|
||||
assert.Equal(t, "ar", locales[0].Value)
|
||||
assert.Equal(t, "ja-JP", locales[0].Label)
|
||||
assert.Equal(t, "ja-jp", locales[0].Value)
|
||||
|
||||
assert.Equal(t, "zh-CN", locales[1].Label)
|
||||
assert.Equal(t, "zh-cn", locales[1].Value)
|
||||
|
||||
assert.Equal(t, "zh-TW", locales[2].Label)
|
||||
assert.Equal(t, "zh-tw", locales[2].Value)
|
||||
assert.Equal(t, "zh-HK", locales[2].Label)
|
||||
assert.Equal(t, "zh-hk", locales[2].Value)
|
||||
}
|
||||
|
||||
func TestTemplateAsset(t *testing.T) {
|
||||
tests := prepare(t)
|
||||
defer clean()
|
||||
|
||||
tmpl, err := tests.Demo.GetTemplate("tech-blue")
|
||||
tmpl, err := tests.Test.GetTemplate("advanced")
|
||||
if err != nil {
|
||||
t.Fatalf("GetTemplate error: %v", err)
|
||||
}
|
||||
|
||||
asset, err := tmpl.Asset("/css/tailwind.css", 0, 0)
|
||||
// JavaScript
|
||||
asset, err := tmpl.Asset("/js/yao.js", 0, 0)
|
||||
if err != nil {
|
||||
t.Fatalf("Asset error: %v", err)
|
||||
}
|
||||
|
||||
assert.Equal(t, "application/javascript; charset=utf-8", asset.Type)
|
||||
assert.NotEmpty(t, asset.Content)
|
||||
|
||||
// CSS
|
||||
asset, err = tmpl.Asset("/css/app.css", 0, 0)
|
||||
if err != nil {
|
||||
t.Fatalf("Asset error: %v", err)
|
||||
}
|
||||
assert.Equal(t, "text/css; charset=utf-8", asset.Type)
|
||||
assert.NotEmpty(t, asset.Content)
|
||||
|
||||
// IMAGE
|
||||
asset, err = tmpl.Asset("/images/icons/app.png", 100, 100)
|
||||
if err != nil {
|
||||
t.Fatalf("Asset error: %v", err)
|
||||
}
|
||||
assert.Equal(t, "image/png", asset.Type)
|
||||
assert.NotEmpty(t, asset.Content)
|
||||
exists, err := application.App.Exists("/data/test-cases/advanced/__assets/.cache/100x100/test-cases/advanced/__assets/images/icons/app.png")
|
||||
if err != nil {
|
||||
t.Fatalf("Asset error: %v", err)
|
||||
}
|
||||
assert.True(t, exists)
|
||||
|
||||
// IMAGE SVG
|
||||
asset, err = tmpl.Asset("/images/logos/logo_color.svg", 100, 100)
|
||||
if err != nil {
|
||||
t.Fatalf("Asset error: %v", err)
|
||||
}
|
||||
assert.Equal(t, "image/svg+xml", asset.Type)
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue