func TestStoreSlice(t *testing.T) { storeSlice := 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("admin"), Name: dbr.NewNullString("Admin"), SortOrder: 0, DefaultGroupID: 0, IsDefault: dbr.NewNullBool(false)}, &store.TableGroup{GroupID: 1, WebsiteID: 1, Name: "Default", RootCategoryID: 0, DefaultStoreID: 0}, ), nil, store.MustNewStore( &store.TableStore{StoreID: 5, Code: dbr.NewNullString("au"), WebsiteID: 2, GroupID: 3, Name: "Australia", SortOrder: 10, IsActive: true}, &store.TableWebsite{WebsiteID: 2, Code: dbr.NewNullString("oz"), Name: dbr.NewNullString("OZ"), SortOrder: 20, DefaultGroupID: 3, IsDefault: dbr.NewNullBool(false)}, &store.TableGroup{GroupID: 3, WebsiteID: 2, Name: "Australia", RootCategoryID: 2, DefaultStoreID: 5}, ), } assert.True(t, storeSlice.Len() == 3) assert.EqualValues(t, utils.Int64Slice{1, 5}, storeSlice.IDs()) assert.EqualValues(t, utils.StringSlice{"de", "au"}, storeSlice.Codes()) assert.EqualValues(t, 5, storeSlice.LastItem().Data.StoreID) assert.Nil(t, (store.StoreSlice{}).LastItem()) storeSlice2 := storeSlice.Filter(func(s *store.Store) bool { return s.Website.Data.WebsiteID == 2 }) assert.True(t, storeSlice2.Len() == 1) assert.Equal(t, "au", storeSlice2[0].Data.Code.String) assert.EqualValues(t, utils.Int64Slice{5}, storeSlice2.IDs()) assert.EqualValues(t, utils.StringSlice{"au"}, storeSlice2.Codes()) assert.Nil(t, (store.StoreSlice{}).IDs()) assert.Nil(t, (store.StoreSlice{}).Codes()) }
func TestStoreCodeFromClaimFullToken(t *testing.T) { s := 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("admin"), Name: dbr.NewNullString("Admin"), SortOrder: 0, DefaultGroupID: 0, IsDefault: dbr.NewNullBool(false)}, &store.TableGroup{GroupID: 1, WebsiteID: 1, Name: "Default", RootCategoryID: 0, DefaultStoreID: 0}, ) token := jwt.New(jwt.SigningMethodHS256) s.AddClaim(token.Claims) so, err := store.CodeFromClaim(token.Claims) assert.NoError(t, err) assert.EqualValues(t, "de", so.StoreCode()) so, err = store.CodeFromClaim(nil) assert.EqualError(t, store.ErrStoreNotFound, err.Error()) assert.Nil(t, so.Website) assert.Nil(t, so.Group) assert.Nil(t, so.Store) token2 := jwt.New(jwt.SigningMethodHS256) token2.Claims[store.ParamName] = "Invalid Cod€" so, err = store.CodeFromClaim(token2.Claims) assert.EqualError(t, store.ErrStoreCodeInvalid, err.Error()) assert.Nil(t, so.Website) assert.Nil(t, so.Group) assert.Nil(t, so.Store) }
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 TestMarshalJSON(t *testing.T) { s := 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("admin"), Name: dbr.NewNullString("Admin"), SortOrder: 0, DefaultGroupID: 0, IsDefault: dbr.NewNullBool(false)}, &store.TableGroup{GroupID: 1, WebsiteID: 1, Name: "Default", RootCategoryID: 0, DefaultStoreID: 0}, ) jdata, err := json.Marshal(s) assert.NoError(t, err) have := []byte(`{"StoreID":1,"Code":"de","WebsiteID":1,"GroupID":1,"Name":"Germany","SortOrder":10,"IsActive":true}`) assert.Equal(t, have, jdata, "Have: %s\nWant: %s", have, jdata) }
package store_test import ( "bytes" "encoding/json" "testing" "github.com/corestoreio/csfw/storage/dbr" "github.com/corestoreio/csfw/store" ) var benchmarkJSON []byte var benchmarkJSONStore = 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("admin"), Name: dbr.NewNullString("Admin"), SortOrder: 0, DefaultGroupID: 0, IsDefault: dbr.NewNullBool(false)}, &store.TableGroup{GroupID: 1, WebsiteID: 1, Name: "Default", RootCategoryID: 0, DefaultStoreID: 0}, ) // BenchmarkJSONMarshal-4 300000 4343 ns/op 1032 B/op 12 allocs/op func BenchmarkJSONMarshal(b *testing.B) { b.ReportAllocs() for i := 0; i < b.N; i++ { var err error benchmarkJSON, err = json.Marshal(benchmarkJSONStore) if err != nil { b.Error(err) } } }