Skip to content

Commit

Permalink
Merge pull request #301 from qor5/feat-pagebuilder
Browse files Browse the repository at this point in the history
Feat pagebuilder
  • Loading branch information
zhangshanwen authored Jul 5, 2024
2 parents 1eb2892 + 9107416 commit 7cb14ae
Show file tree
Hide file tree
Showing 9 changed files with 598 additions and 513 deletions.
15 changes: 14 additions & 1 deletion cmd/qor5/website-template/admin/integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"net/http/httptest"
"testing"

"github.com/qor5/admin/v3/pagebuilder"

"github.com/qor5/admin/v3/cmd/qor5/website-template/admin"
"github.com/qor5/web/v3/multipartestutils"
"github.com/theplant/gofixtures"
Expand Down Expand Up @@ -63,7 +65,18 @@ func TestAll(t *testing.T) {
BuildEventFuncRequest()
return req
},
ExpectRunScriptContainsInOrder: []string{"page_builder_ReloadRenderPageOrTemplateEvent"},
EventResponseMatch: func(t *testing.T, er *multipartestutils.TestEventResponse) {
var container pagebuilder.Container
if err := TestDB.First(&container).Error; err != nil {
t.Error("containers not add", er)
}
if container.ModelName != "MyHeader" {
t.Error("containers not add", container.ModelName)
}
if container.PageModelName != "pages" {
t.Error("containers not add for page model name", container.PageModelName)
}
},
},
{
Name: "add menu items to header",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,17 @@ INSERT INTO public.my_contents (id,text) values (1,'my-contents');
INSERT INTO public.campaign_contents (id,title,banner) values (1,'campaign-contents','banner');
INSERT INTO public.product_contents (id,name) values (1,'demo-product-contents');
INSERT INTO public.page_builder_containers (id, created_at, updated_at, deleted_at, page_id, page_version, page_model_name, model_name, model_id, display_order, shared, hidden, display_name, locale_code, localize_from_model_id) VALUES (1, '2024-06-05 07:20:58.435363 +00:00', '2024-06-05 07:20:58.435363 +00:00', null, 1, '2024-05-20-v01', 'campaigns', 'MyContent', 1, 1, false, false, 'MyContent', '', 0);
`, []string{"campaigns", "campaign_products", "my_contents", "campaign_contents", "product_contents", "page_builder_containers"}))

var pageBuilderDemoData = gofixtures.Data(gofixtures.Sql(`
INSERT INTO public.campaigns (id, created_at, updated_at, deleted_at, title, status, online_url, scheduled_start_at, scheduled_end_at, actual_start_at, actual_end_at, version, version_name, parent_version) VALUES (1, '2024-05-19 22:11:53.645941 +00:00', '2024-05-19 22:11:53.645941 +00:00', null, 'Hello Campaign', 'draft', '', null, null, null, null, '2024-05-20-v01', '2024-05-20-v01','');
INSERT INTO public.campaigns (id, created_at, updated_at, deleted_at, title, status, online_url, scheduled_start_at, scheduled_end_at, actual_start_at, actual_end_at, version, version_name, parent_version) VALUES (2, '2024-05-19 22:11:53.645941 +00:00', '2024-05-19 22:11:53.645941 +00:00', null, 'UnPublish Campaign', 'online', 'campaigns/2/index.html', null, null, null, null, '2024-05-20-v01', '2024-05-20-v01','');
INSERT INTO public.campaign_products (id, created_at, updated_at, deleted_at, name, status, online_url, scheduled_start_at, scheduled_end_at, actual_start_at, actual_end_at, version, version_name, parent_version) VALUES (1, '2024-05-19 22:11:53.645941 +00:00', '2024-05-19 22:11:53.645941 +00:00', null, 'Hello Product', 'draft', '', null, null, null, null, '2024-05-20-v01', '2024-05-20-v01','');
INSERT INTO public.my_contents (id,text) values (1,'my-contents');
INSERT INTO public.campaign_contents (id,title,banner) values (1,'campaign-contents','banner');
INSERT INTO public.product_contents (id,name) values (1,'demo-product-contents');
INSERT INTO public.page_builder_containers (id, created_at, updated_at, deleted_at, page_id, page_version, page_model_name, model_name, model_id, display_order, shared, hidden, display_name, locale_code, localize_from_model_id) VALUES (1, '2024-06-05 07:20:58.435363 +00:00', '2024-06-05 07:20:58.435363 +00:00', null, 1, '2024-05-20-v01', 'campaigns', 'MyContent', 1, 1, false, false, 'MyContent', '', 0);
INSERT INTO page_builder_demo_containers (id, created_at, updated_at, deleted_at, model_name, model_id, locale_code) VALUES (1, '2024-06-25 02:21:41.014915 +00:00', '2024-06-25 02:21:41.014915 +00:00', null, 'ProductContent', 1, '');
`, []string{"campaigns", "campaign_products", "my_contents", "campaign_contents", "product_contents", "page_builder_containers", "page_builder_demo_containers"}))
Expand Down Expand Up @@ -110,14 +121,14 @@ func TestPageBuilderCampaign(t *testing.T) {
ExpectPageBodyContainsInOrder: []string{"publish_EventPublish", "iframe", "ProductDetail"},
},
{
Name: "Campaign editor",
Name: "Campaign editor NewContainerDialog",
Debug: true,
ReqFunc: func() *http.Request {
pageBuilderData.TruncatePut(dbr)
return httptest.NewRequest("GET", "/page_builder/campaigns-editors/1_2024-05-20-v01", nil)
return httptest.NewRequest("GET", "/page_builder/campaigns-editors/1_2024-05-20-v01?__execute_event__=page_builder_NewContainerDialogEvent", nil)
},
ExpectPageBodyContainsInOrder: []string{"MyContent", "CampaignContent"},
ExpectPageBodyNotContains: []string{"ProductContent"},
ExpectPortalUpdate0ContainsInOrder: []string{"MyContent", "CampaignContent"},
ExpectPortalUpdate0NotContains: []string{"ProductContent"},
},
{
Name: "Campaign My Contents",
Expand Down Expand Up @@ -375,7 +386,7 @@ func TestPageBuilderCampaign(t *testing.T) {
Name: "CampaignProduct Add New Demo Container",
Debug: true,
ReqFunc: func() *http.Request {
pageBuilderData.TruncatePut(dbr)
pageBuilderDemoData.TruncatePut(dbr)
req := NewMultipartBuilder().
PageURL("/page_builder/campaign-products-editors/1_2024-05-20-v01").
EventFunc(pagebuilder.AddContainerEvent).
Expand Down Expand Up @@ -412,7 +423,7 @@ func TestPageBuilderCampaign(t *testing.T) {
Name: "Edit Demo Container",
Debug: true,
ReqFunc: func() *http.Request {
pageBuilderData.TruncatePut(dbr)
pageBuilderDemoData.TruncatePut(dbr)
return NewMultipartBuilder().
PageURL("/page_builder/product-contents?__execute_event__=presets_Update&id=1").
AddField("Name", "demo-product-contents2").
Expand Down
84 changes: 75 additions & 9 deletions example/integration/pagebuilder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,15 @@ SELECT setval('container_list_content_id_seq', 10, true);
INSERT INTO public.container_headers (id, color) VALUES (10, 'black');
SELECT setval('container_headers_id_seq', 10, true);
`, []string{"page_builder_pages", "page_builder_containers", "container_list_content", "container_headers"}))

var pageBuilderDemoContainerTestData = gofixtures.Data(gofixtures.Sql(`
INSERT INTO public.page_builder_pages (id, created_at, updated_at, deleted_at, title, slug, category_id, seo, status, online_url, scheduled_start_at, scheduled_end_at, actual_start_at, actual_end_at, version, version_name, parent_version, locale_code) VALUES
(10, '2024-05-21 01:54:45.280106 +00:00', '2024-05-21 01:54:57.983233 +00:00', null, '1234567', '12313', 0, '{"OpenGraphImageFromMediaLibrary":{"ID":0,"Url":"","VideoLink":"","FileName":"","Description":""}}', 'draft', '', null, null, null, null, '2024-05-21-v01', '2024-05-21-v01', '', 'International');
SELECT setval('page_builder_pages_id_seq', 10, true);
INSERT INTO public.container_in_numbers (id, add_top_space, add_bottom_space, anchor_id, heading, items) VALUES (1, false, false, 'test1', '', 'null');
INSERT INTO public.page_builder_demo_containers (id, created_at, updated_at, deleted_at, model_name, model_id, locale_code) VALUES (1, '2024-06-25 02:21:41.014915 +00:00', '2024-06-25 02:21:41.014915 +00:00', null, 'InNumbers', 1, 'International');
`, []string{"page_builder_pages", "page_builder_containers", "container_list_content", "container_headers", "container_in_numbers", "page_builder_demo_containers"}))
`, []string{"page_builder_pages", "page_builder_containers", "container_in_numbers", "page_builder_demo_containers"}))

func TestPageBuilder(t *testing.T) {
h := admin.TestHandler(TestDB, nil)
Expand Down Expand Up @@ -121,14 +125,44 @@ func TestPageBuilder(t *testing.T) {
var page pagebuilder.Page
TestDB.First(&page, "slug = ?", "/hello4")
if page.LocaleCode != "International" {
t.Errorf("wrong locale code, expected International, got %#+v", page)
t.Errorf("wrong locale code, expected International, got %#+v", page.LocaleCode)
}
},
},

{
Name: "Page Builder Editor Duplicate A Page",
Debug: true,
ReqFunc: func() *http.Request {
pageBuilderContainerTestData.TruncatePut(dbr)
req := NewMultipartBuilder().
PageURL("/page_builder/pages-editors/10_2024-05-21-v01_International?__execute_event__=publish_EventDuplicateVersion").
BuildEventFuncRequest()

return req
},
EventResponseMatch: func(t *testing.T, er *TestEventResponse) {
var pages []*pagebuilder.Page
TestDB.Order("id DESC, version DESC").Find(&pages)
if len(pages) != 2 {
t.Fatalf("Page not duplicated %v", pages)
return
}
if pages[0].Slug != pages[1].Slug {
t.Fatalf("Page not duplicated %v", pages)
return
}
var containers []*pagebuilder.Container
TestDB.Find(&containers, "page_id = ? AND page_version = ?", pages[0].ID,
pages[0].Version.Version)
if len(containers) == 0 {
t.Error("Container not duplicated", containers)
}
},
},

{
Name: "Page Builder Detail Duplicate A Page",
Debug: true,
ReqFunc: func() *http.Request {
pageBuilderContainerTestData.TruncatePut(dbr)
req := NewMultipartBuilder().
Expand All @@ -142,6 +176,11 @@ func TestPageBuilder(t *testing.T) {
TestDB.Order("id DESC, version DESC").Find(&pages)
if len(pages) != 2 {
t.Fatal("Page not duplicated", pages)
return
}
if pages[0].Slug != pages[1].Slug {
t.Fatalf("Page not duplicated %v", pages)
return
}
var containers []*pagebuilder.Container
TestDB.Find(&containers, "page_id = ? AND page_version = ?", pages[0].ID,
Expand Down Expand Up @@ -170,6 +209,7 @@ func TestPageBuilder(t *testing.T) {
},
ExpectPortalUpdate0ContainsInOrder: []string{"@change-debounced"},
},

{
Name: "Page Builder add container",
Debug: true,
Expand Down Expand Up @@ -399,7 +439,7 @@ func TestPageBuilder(t *testing.T) {
Name: "Add New Demo Container",
Debug: true,
ReqFunc: func() *http.Request {
pageBuilderContainerTestData.TruncatePut(dbr)
pageBuilderDemoContainerTestData.TruncatePut(dbr)
return NewMultipartBuilder().
PageURL("/page_builder/pages-editors/1_v1_International").
EventFunc(pagebuilder.AddContainerEvent).
Expand All @@ -410,8 +450,8 @@ func TestPageBuilder(t *testing.T) {
EventResponseMatch: func(t *testing.T, er *TestEventResponse) {
var cons []*pagebuilder.Container
TestDB.Order("id desc").Find(&cons)
if len(cons) != 3 {
t.Fatalf("add container failed, expected 3 cons, got %d", len(cons))
if len(cons) != 1 {
t.Fatalf("add container failed, expected 1 cons, got %d", len(cons))
return
}
if cons[0].ModelName != "InNumbers" {
Expand All @@ -434,7 +474,7 @@ func TestPageBuilder(t *testing.T) {
Name: "Edit Demo Container",
Debug: true,
ReqFunc: func() *http.Request {
pageBuilderContainerTestData.TruncatePut(dbr)
pageBuilderDemoContainerTestData.TruncatePut(dbr)
return NewMultipartBuilder().
PageURL("/page_builder/in-numbers?__execute_event__=presets_Update&id=1").
AddField("AnchorID", "test_in_numbers").
Expand Down Expand Up @@ -490,6 +530,32 @@ func TestPageBuilder(t *testing.T) {
}
},
},
{
Name: "Page Builder add container dialog",
Debug: true,
ReqFunc: func() *http.Request {
pageBuilderContainerTestData.TruncatePut(dbr)
req := NewMultipartBuilder().
PageURL("/page_builder/pages-editors/10_2024-05-21-v01_International?__execute_event__=page_builder_NewContainerDialogEvent").
BuildEventFuncRequest()

return req
},
ExpectPortalUpdate0ContainsInOrder: []string{"Navigation"},
},
{
Name: "Page Builder preview demo container ",
Debug: true,
ReqFunc: func() *http.Request {
pageBuilderDemoContainerTestData.TruncatePut(dbr)
req := NewMultipartBuilder().
PageURL("/page_builder/pages-editors/10_2024-05-21-v01_International?__execute_event__=page_builder_ContainerPreviewEvent&modelName=InNumbers").
BuildEventFuncRequest()

return req
},
ExpectPortalUpdate0ContainsInOrder: []string{"test1"},
},
}

for _, c := range cases {
Expand Down
Loading

0 comments on commit 7cb14ae

Please sign in to comment.