func TestNewServiceWebsites(t *testing.T) { serviceWebsites := storemock.MustNewService(scope.Option{}, func(ms *storemock.Storage) { ms.MockWebsiteSlice = func() (store.WebsiteSlice, error) { return store.WebsiteSlice{}, nil } 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 wantErr error wantNil bool }{ {serviceWebsites, nil, false}, {serviceWebsites, nil, false}, {storemock.MustNewService(scope.Option{}, func(ms *storemock.Storage) { ms.MockWebsiteSlice = func() (store.WebsiteSlice, error) { return nil, nil } 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}, ) } }), nil, true}, } for _, test := range tests { haveWS, haveErr := test.m.Websites() if test.wantErr != nil { assert.Error(t, haveErr, "%#v", test) assert.Nil(t, haveWS, "%#v", test) } else { assert.NoError(t, haveErr, "%#v", test) if test.wantNil { assert.Nil(t, haveWS, "%#v", test) } else { assert.NotNil(t, haveWS, "%#v", test) } } } assert.False(t, serviceWebsites.IsCacheEmpty()) serviceWebsites.ClearCache() assert.True(t, serviceWebsites.IsCacheEmpty()) }
func TestMustNewService(t *testing.T) { defer func() { if r := recover(); r != nil { assert.EqualError(t, r.(error), store.ErrStoreNotFound.Error()) } else { t.Fatal("Expecting a Panic") } }() tests := []struct { have scope.StoreIDer wantErr error }{ {scope.MockCode("nilSlices"), store.ErrStoreNotFound}, {scope.MockID(2), store.ErrStoreNotFound}, {nil, store.ErrStoreNotFound}, } serviceEmpty := storemock.MustNewService(scope.Option{}) for _, test := range tests { s, err := serviceEmpty.Store(test.have) assert.Nil(t, s) assert.EqualError(t, test.wantErr, err.Error()) } assert.True(t, serviceStoreSimpleTest.IsCacheEmpty()) }
func TestNewServiceGroups(t *testing.T) { serviceGroups := storemock.MustNewService(scope.Option{}, func(ms *storemock.Storage) { ms.MockGroupSlice = func() (store.GroupSlice, error) { return store.GroupSlice{}, nil } 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}, ) } }) // call it twice to test internal caching ss, err := serviceGroups.Groups() assert.NotNil(t, ss) assert.NoError(t, err) assert.Len(t, ss, 0) ss, err = serviceGroups.Groups() assert.NotNil(t, ss) assert.NoError(t, err) assert.Len(t, ss, 0) assert.False(t, serviceGroups.IsCacheEmpty()) serviceGroups.ClearCache() assert.True(t, serviceGroups.IsCacheEmpty()) }
func TestMustNewServiceStores(t *testing.T) { defer func() { if r := recover(); r != nil { assert.EqualError(t, r.(error), store.ErrStoreNotFound.Error()) } else { t.Fatal("Expecting a Panic") } }() ss, err := storemock.MustNewService(scope.Option{}, func(ms *storemock.Storage) { ms.MockStoreSlice = func() (store.StoreSlice, error) { return nil, nil } }).Stores() assert.Nil(t, ss) assert.NoError(t, err) }
func TestNewServiceStores(t *testing.T) { serviceStores := storemock.MustNewService(scope.Option{}, func(ms *storemock.Storage) { ms.MockStore = func() (*store.Store, error) { return store.MustNewStore( &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}, ), nil } ms.MockStoreSlice = func() (store.StoreSlice, error) { return store.StoreSlice{ store.MustNewStore( &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}, ), store.MustNewStore( &store.TableStore{StoreID: 2, Code: dbr.NewNullString("at"), WebsiteID: 1, GroupID: 1, Name: "Österreich", SortOrder: 20, 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}, ), store.MustNewStore( &store.TableStore{StoreID: 3, Code: dbr.NewNullString("ch"), WebsiteID: 1, GroupID: 1, Name: "Schweiz", SortOrder: 30, 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}, ), }, nil } }) // call it twice to test internal caching ss, err := serviceStores.Stores() assert.NotNil(t, ss) assert.NoError(t, err) assert.Equal(t, "at", ss[1].Data.Code.String) ss, err = serviceStores.Stores() assert.NotNil(t, ss) assert.NoError(t, err) assert.NotEmpty(t, ss[2].Data.Code.String) assert.False(t, serviceStores.IsCacheEmpty()) serviceStores.ClearCache() assert.True(t, serviceStores.IsCacheEmpty()) }
func TestNewServiceWebsite(t *testing.T) { var serviceWebsite = storemock.MustNewService(scope.Option{}, func(ms *storemock.Storage) { ms.MockWebsite = func() (*store.Website, error) { return store.NewWebsite( &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.WebsiteIDer wantErr error wantWebsiteCode string }{ {serviceWebsite, scope.MockID(1), nil, "euro"}, {serviceWebsite, scope.MockID(1), nil, "euro"}, {serviceWebsite, scope.MockCode("notImportant"), nil, "euro"}, {serviceWebsite, scope.MockCode("notImportant"), nil, "euro"}, } for _, test := range tests { haveW, haveErr := test.m.Website(test.have) if test.wantErr != nil { assert.Error(t, haveErr, "%#v", test) assert.Nil(t, haveW, "%#v", test) } else { assert.NoError(t, haveErr, "%#v", test) assert.NotNil(t, haveW, "%#v", test) assert.Equal(t, test.wantWebsiteCode, haveW.Data.Code.String) } } assert.False(t, serviceWebsite.IsCacheEmpty()) serviceWebsite.ClearCache() assert.True(t, serviceWebsite.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()) }
// case store.PathSecureBaseURL: // return store.PlaceholderBaseURL // case store.PathUnsecureBaseURL: // return store.PlaceholderBaseURL // case config.PathCSBaseURL: // return "http://cs.io/" // } // return "" // }, nil)) //} var serviceStoreSimpleTest = storemock.MustNewService(scope.Option{}, func(ms *storemock.Storage) { 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}, ) } }) func TestNewServiceStore(t *testing.T) { assert.False(t, serviceStoreSimpleTest.IsCacheEmpty()) for j := 0; j < 3; j++ { s, err := serviceStoreSimpleTest.Store(scope.MockCode("notNil")) assert.NoError(t, err) assert.NotNil(t, s) assert.EqualValues(t, "de", s.Data.Code.String) } assert.False(t, serviceStoreSimpleTest.IsCacheEmpty()) serviceStoreSimpleTest.ClearCache()