func TestNewManagerGroupInit(t *testing.T) { err := getTestManager(func(ms *mockStorage) { ms.g = func() (*store.Group, error) { return store.NewGroup( &store.TableGroup{GroupID: 1, WebsiteID: 1, Name: "DACH Group", RootCategoryID: 2, DefaultStoreID: 2}, store.SetGroupWebsite(&store.TableWebsite{WebsiteID: 1, Code: dbr.NullString{NullString: sql.NullString{String: "euro", Valid: true}}, Name: dbr.NullString{NullString: sql.NullString{String: "Europe", Valid: true}}, SortOrder: 0, DefaultGroupID: 1, IsDefault: dbr.NullBool{NullBool: sql.NullBool{Bool: true, Valid: true}}}), ), nil } }).Init(config.ScopeID(1), config.ScopeGroupID) assert.EqualError(t, store.ErrGroupDefaultStoreNotFound, err.Error(), "Incorrect DefaultStore for a Group") err = getTestManager().Init(config.ScopeID(21), config.ScopeGroupID) assert.EqualError(t, store.ErrGroupNotFound, err.Error()) tm3 := getTestManager(func(ms *mockStorage) { ms.g = func() (*store.Group, error) { return store.NewGroup( &store.TableGroup{GroupID: 1, WebsiteID: 1, Name: "DACH Group", RootCategoryID: 2, DefaultStoreID: 2}, store.SetGroupWebsite(&store.TableWebsite{WebsiteID: 1, Code: dbr.NullString{NullString: sql.NullString{String: "euro", Valid: true}}, Name: dbr.NullString{NullString: sql.NullString{String: "Europe", Valid: true}}, SortOrder: 0, DefaultGroupID: 1, IsDefault: dbr.NullBool{NullBool: sql.NullBool{Bool: true, Valid: true}}}), ).SetStores(store.TableStoreSlice{ &store.TableStore{StoreID: 2, Code: dbr.NullString{NullString: sql.NullString{String: "at", Valid: true}}, WebsiteID: 1, GroupID: 1, Name: "Österreich", SortOrder: 20, IsActive: true}, }, nil), nil } }) err = tm3.Init(config.ScopeID(1), config.ScopeGroupID) assert.NoError(t, err) g, err := tm3.Group() assert.NoError(t, err) assert.NotNil(t, g) assert.Equal(t, int64(2), g.Data.DefaultStoreID) }
func TestNewGroupPanicWebsiteIncorrect(t *testing.T) { ng, err := store.NewGroup( &store.TableGroup{GroupID: 1, WebsiteID: 1, Name: "DACH Group", RootCategoryID: 2, DefaultStoreID: 2}, store.SetGroupWebsite(&store.TableWebsite{WebsiteID: 2, Code: dbr.NewNullString("oz"), Name: dbr.NewNullString("OZ"), SortOrder: 20, DefaultGroupID: 3, IsDefault: dbr.NewNullBool(false)}), ) assert.Nil(t, ng) assert.EqualError(t, store.ErrGroupWebsiteNotFound, err.Error()) }
func TestNewManagerGroup(t *testing.T) { var managerGroupSimpleTest = getTestManager(func(ms *mockStorage) { ms.g = func() (*store.Group, error) { return store.NewGroup( &store.TableGroup{GroupID: 1, WebsiteID: 1, Name: "DACH Group", RootCategoryID: 2, DefaultStoreID: 2}, store.SetGroupWebsite(&store.TableWebsite{WebsiteID: 1, Code: dbr.NullString{NullString: sql.NullString{String: "euro", Valid: true}}, Name: dbr.NullString{NullString: sql.NullString{String: "Europe", Valid: true}}, SortOrder: 0, DefaultGroupID: 1, IsDefault: dbr.NullBool{NullBool: sql.NullBool{Bool: true, Valid: true}}}), ), nil } ms.s = func() (*store.Store, error) { return store.NewStore( &store.TableStore{StoreID: 1, Code: dbr.NullString{NullString: sql.NullString{String: "de", Valid: true}}, WebsiteID: 1, GroupID: 1, Name: "Germany", SortOrder: 10, IsActive: true}, &store.TableWebsite{WebsiteID: 1, Code: dbr.NullString{NullString: sql.NullString{String: "euro", Valid: true}}, Name: dbr.NullString{NullString: sql.NullString{String: "Europe", Valid: true}}, SortOrder: 0, DefaultGroupID: 1, IsDefault: dbr.NullBool{NullBool: sql.NullBool{Bool: true, Valid: true}}}, &store.TableGroup{GroupID: 1, WebsiteID: 1, Name: "DACH Group", RootCategoryID: 2, DefaultStoreID: 2}, ), nil } }) tests := []struct { m *store.Manager have config.ScopeIDer wantErr error wantGroupName string wantWebsiteCode string }{ {managerGroupSimpleTest, nil, store.ErrAppStoreNotSet, "", ""}, {getTestManager(), config.ScopeID(20), store.ErrGroupNotFound, "", ""}, {managerGroupSimpleTest, config.ScopeID(1), nil, "DACH Group", "euro"}, {managerGroupSimpleTest, config.ScopeID(1), nil, "DACH Group", "euro"}, } for _, test := range tests { g, err := test.m.Group(test.have) if test.wantErr != nil { assert.Nil(t, g) assert.EqualError(t, test.wantErr, err.Error(), "test %#v", test) } else { assert.NotNil(t, g, "test %#v", test) assert.NoError(t, err, "test %#v", test) assert.Equal(t, test.wantGroupName, g.Data.Name) assert.Equal(t, test.wantWebsiteCode, g.Website.Data.Code.String) } } assert.False(t, managerGroupSimpleTest.IsCacheEmpty()) managerGroupSimpleTest.ClearCache() assert.True(t, managerGroupSimpleTest.IsCacheEmpty()) }
func TestNewServiceGroup(t *testing.T) { var serviceGroupSimpleTest = storemock.MustNewService(scope.Option{}, func(ms *storemock.Storage) { ms.MockGroup = func() (*store.Group, error) { return store.NewGroup( &store.TableGroup{GroupID: 1, WebsiteID: 1, Name: "DACH Group", RootCategoryID: 2, DefaultStoreID: 2}, store.SetGroupWebsite(&store.TableWebsite{WebsiteID: 1, Code: dbr.NewNullString("euro"), Name: dbr.NewNullString("Europe"), SortOrder: 0, DefaultGroupID: 1, IsDefault: dbr.NewNullBool(true)}), ) } ms.MockStore = func() (*store.Store, error) { return store.NewStore( &store.TableStore{StoreID: 1, Code: dbr.NewNullString("de"), WebsiteID: 1, GroupID: 1, Name: "Germany", SortOrder: 10, IsActive: true}, &store.TableWebsite{WebsiteID: 1, Code: dbr.NewNullString("euro"), Name: dbr.NewNullString("Europe"), SortOrder: 0, DefaultGroupID: 1, IsDefault: dbr.NewNullBool(true)}, &store.TableGroup{GroupID: 1, WebsiteID: 1, Name: "DACH Group", RootCategoryID: 2, DefaultStoreID: 2}, ) } }) tests := []struct { m *store.Service have scope.GroupIDer wantErr error wantGroupName string wantWebsiteCode string }{ {serviceGroupSimpleTest, scope.MockID(20), nil, "DACH Group", "euro"}, {serviceGroupSimpleTest, scope.MockID(1), nil, "DACH Group", "euro"}, {serviceGroupSimpleTest, scope.MockID(1), nil, "DACH Group", "euro"}, } for i, test := range tests { g, err := test.m.Group(test.have) if test.wantErr != nil { assert.Nil(t, g, "Index %d", i) assert.EqualError(t, test.wantErr, err.Error(), "test %#v", test) } else { assert.NotNil(t, g, "test %#v", test) assert.NoError(t, err, "test %#v", test) assert.Equal(t, test.wantGroupName, g.Data.Name) assert.Equal(t, test.wantWebsiteCode, g.Website.Data.Code.String) } } assert.False(t, serviceGroupSimpleTest.IsCacheEmpty()) serviceGroupSimpleTest.ClearCache() assert.True(t, serviceGroupSimpleTest.IsCacheEmpty()) }
func TestNewGroupPanicWebsiteIncorrect(t *testing.T) { defer func() { if r := recover(); r != nil { if err, ok := r.(error); ok { assert.EqualError(t, store.ErrGroupWebsiteNotFound, err.Error()) } else { t.Errorf("Failed to convert to type error: %#v", err) } } else { t.Error("Cannot find panic") } }() _ = store.NewGroup( &store.TableGroup{GroupID: 1, WebsiteID: 1, Name: "DACH Group", RootCategoryID: 2, DefaultStoreID: 2}, store.SetGroupWebsite(&store.TableWebsite{WebsiteID: 2, Code: dbr.NullString{NullString: sql.NullString{String: "oz", Valid: true}}, Name: dbr.NullString{NullString: sql.NullString{String: "OZ", Valid: true}}, SortOrder: 20, DefaultGroupID: 3, IsDefault: dbr.NullBool{NullBool: sql.NullBool{Bool: false, Valid: true}}}), ) }