From a435b1ad6e64a663e87aea3d4a6f32eee40566e0 Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 4 Jul 2024 17:06:42 +0800 Subject: [PATCH] [chore] Update sui test cases --- .github/workflows/pr-test.yml | 9 -- .github/workflows/unit-test.yml | 9 -- sui/api/compile_test.go | 11 +- sui/api/process_test.go | 214 +++++++++++-------------- sui/api/sui_test.go | 22 +-- sui/core/page_test.go | 132 +-------------- sui/core/parser_test.go | 10 +- sui/core/sui_test.go | 48 ++++++ sui/storages/local/block_test.go | 198 +++++++++++------------ sui/storages/local/build_test.go | 2 +- sui/storages/local/component_test.go | 128 +++++++-------- sui/storages/local/local.go | 2 +- sui/storages/local/local_test.go | 100 +++++++----- sui/storages/local/page_render_test.go | 21 +-- sui/storages/local/page_test.go | 76 +++++---- sui/storages/local/template.go | 6 +- sui/storages/local/template_test.go | 56 +++++-- 17 files changed, 464 insertions(+), 580 deletions(-) create mode 100644 sui/core/sui_test.go 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) + }