diff --git a/.github/workflows/pr-test.yml b/.github/workflows/pr-test.yml
index a0491420..2095d342 100644
--- a/.github/workflows/pr-test.yml
+++ b/.github/workflows/pr-test.yml
@@ -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 ../
diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml
index 0aeb3274..3fefa043 100644
--- a/.github/workflows/unit-test.yml
+++ b/.github/workflows/unit-test.yml
@@ -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 ../
diff --git a/sui/api/compile_test.go b/sui/api/compile_test.go
index 9a3c844a..2434d1ec 100644
--- a/sui/api/compile_test.go
+++ b/sui/api/compile_test.go
@@ -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, `Link2`)
- assert.Contains(t, html, `Link`)
- 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)
}
diff --git a/sui/api/process_test.go b/sui/api/process_test.go
index 7fe5beca..3e5f3d34 100644
--- a/sui/api/process_test.go
+++ b/sui/api/process_test.go
@@ -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":"
1
", "language":"html"}}`)
+ p, err := process.Of("sui.page.create", "test", "advanced", "/unit-test", `{"uid":"unit-test", "needToSave":{"page":true}, "page":{"source":"1
", "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":"1
", "language":"html"}}`)
+ p, err := process.Of("sui.page.create", "test", "advanced", "/unit-test", `{"uid":"unit-test", "needToSave":{"page":true}, "page":{"source":"1
", "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":"1
", "language":"html"}}`)
+ p, err = process.Of("sui.page.SaveTemp", "test", "advanced", "/unit-test", `{"uid":"unit-test", "needToSave":{"page":true}, "page":{"source":"1
", "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":"1
", "language":"html"}}`)
+ p, err = process.Of("sui.page.Save", "test", "advanced", "/unit-test", `{"uid":"unit-test", "needToSave":{"page":true}, "page":{"source":"1
", "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)
- }
-}
diff --git a/sui/api/sui_test.go b/sui/api/sui_test.go
index 0983b244..318d8dda 100644
--- a/sui/api/sui_test.go
+++ b/sui/api/sui_test.go
@@ -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)
}
diff --git a/sui/core/page_test.go b/sui/core/page_test.go
index 5f478ff8..867cde21 100644
--- a/sui/core/page_test.go
+++ b/sui/core/page_test.go
@@ -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(`
-
-
-
-
-
-
- Document
-
-
-
-
-
- {{ __page }}
-
-
-
- `),
- Codes: SourceCodes{
- HTML: Source{
- File: "test.html",
- Code: `
-
For
-
-
{{ idx }} {{ article.title }}
-
{{ article.desc }}
-
{{ article.type == "article" ? "article" : "others"}}
-
-
IF
-
-
article
-
image
-
others
-
-
-
Nested
-
-
- {{ imgIndex }} {{ image }}
-
-
-
-
-
- IF
-
-
{{ len(articles) > 0 }} articles.length > 0
-
-
-
{{ length > 0 }} len > 0
-
-
- hello space {{ P_('scripts.article.Space', 'hello') }}
-
- showImage
- noImage
- autoImage
- otherImage
- Bind
-
-
{{ input.data }}
-
-
-
-
-
-
-
-
- Import Page
-
- Link
- Item
-
-
-
- Link2
- Item2
-
-
- `,
- },
- 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
-}
diff --git a/sui/core/parser_test.go b/sui/core/parser_test.go
index 1727879f..3f9b65d6 100644
--- a/sui/core/parser_test.go
+++ b/sui/core/parser_test.go
@@ -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")
diff --git a/sui/core/sui_test.go b/sui/core/sui_test.go
new file mode 100644
index 00000000..2c9dce2a
--- /dev/null
+++ b/sui/core/sui_test.go
@@ -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()
+}
diff --git a/sui/storages/local/block_test.go b/sui/storages/local/block_test.go
index 6386c9c6..7d76862e 100644
--- a/sui/storages/local/block_test.go
+++ b/sui/storages/local/block_test.go
@@ -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, ``)
+// }
- 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, ``)
-}
+// 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)
+// }
diff --git a/sui/storages/local/build_test.go b/sui/storages/local/build_test.go
index 5b3ce45e..1cd7a2a9 100644
--- a/sui/storages/local/build_test.go
+++ b/sui/storages/local/build_test.go
@@ -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)
}
diff --git a/sui/storages/local/component_test.go b/sui/storages/local/component_test.go
index 0e7a626d..b4a9c317 100644
--- a/sui/storages/local/component_test.go
+++ b/sui/storages/local/component_test.go
@@ -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, `Card
`)
+// }
- 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, `Card
`)
-}
+// 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, `Box
`)
-}
+// 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, `Box
`)
+// }
diff --git a/sui/storages/local/local.go b/sui/storages/local/local.go
index 99cb8963..7ff8c816 100644
--- a/sui/storages/local/local.go
+++ b/sui/storages/local/local.go
@@ -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 {
diff --git a/sui/storages/local/local_test.go b/sui/storages/local/local_test.go
index 0d4adc72..c539f877 100644
--- a/sui/storages/local/local_test.go
+++ b/sui/storages/local/local_test.go
@@ -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,
}
}
diff --git a/sui/storages/local/page_render_test.go b/sui/storages/local/page_render_test.go
index 3e6506fc..6b9b83d2 100644
--- a/sui/storages/local/page_render_test.go
+++ b/sui/storages/local/page_render_test.go
@@ -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")
}
diff --git a/sui/storages/local/page_test.go b/sui/storages/local/page_test.go
index 2c3f487a..62782835 100644
--- a/sui/storages/local/page_test.go
+++ b/sui/storages/local/page_test.go
@@ -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)
}
diff --git a/sui/storages/local/template.go b/sui/storages/local/template.go
index ca7fb725..835d3457 100644
--- a/sui/storages/local/template.go
+++ b/sui/storages/local/template.go
@@ -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
diff --git a/sui/storages/local/template_test.go b/sui/storages/local/template_test.go
index 99f3a761..0e429605 100644
--- a/sui/storages/local/template_test.go
+++ b/sui/storages/local/template_test.go
@@ -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)
+
}