本文整理汇总了Golang中github.com/corestoreio/csfw/store/scope.MockID函数的典型用法代码示例。如果您正苦于以下问题:Golang MockID函数的具体用法?Golang MockID怎么用?Golang MockID使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了MockID函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Store
// Store creates a new Store which contains the the store, its group and website
// according to the interface definition.
func (st *Storage) Store(r scope.StoreIDer) (*Store, error) {
s, err := st.store(r)
if err != nil {
return nil, errgo.Mask(err)
}
w, err := st.website(scope.MockID(s.WebsiteID))
if err != nil {
return nil, errgo.Mask(err)
}
g, err := st.group(scope.MockID(s.GroupID))
if err != nil {
return nil, errgo.Mask(err)
}
ns, err := NewStore(s, w, g, WithStoreConfig(st.cr))
if err != nil {
return nil, errgo.Mask(err)
}
if _, err := ns.Website.ApplyOptions(SetWebsiteGroupsStores(st.groups, st.stores)); err != nil {
return nil, errgo.Mask(err)
}
if _, err := ns.Group.ApplyOptions(SetGroupStores(st.stores, w)); err != nil {
return nil, errgo.Mask(err)
}
return ns, nil
}
示例2: DefaultStoreView
// DefaultStoreView traverses through the websites to find the default website and gets
// the default group which has the default store id assigned to. Only one website can be the default one.
func (st *Storage) DefaultStoreView() (*Store, error) {
for _, website := range st.websites {
if website.IsDefault.Bool && website.IsDefault.Valid {
g, err := st.group(scope.MockID(website.DefaultGroupID))
if err != nil {
return nil, errgo.Mask(err)
}
return st.Store(scope.MockID(g.DefaultStoreID))
}
}
return nil, ErrStoreNotFound
}
示例3: TestNewServiceRequestedStore_ScopeGroup
func TestNewServiceRequestedStore_ScopeGroup(t *testing.T) {
initScope := scope.Option{Group: scope.MockID(1)}
sm := getInitializedStoreService(initScope)
if haveStore, haveErr := sm.RequestedStore(initScope); haveErr != nil {
t.Fatal(haveErr)
} else {
assert.NoError(t, haveErr)
assert.Exactly(t, int64(2), haveStore.StoreID())
}
if s, err := sm.Store(); err == nil {
assert.EqualValues(t, "at", s.Data.Code.String)
} else {
assert.EqualError(t, err, store.ErrStoreNotFound.Error())
t.Fail()
}
if g, err := sm.Group(); err == nil {
assert.EqualValues(t, 1, g.Data.GroupID)
} else {
assert.EqualError(t, err, store.ErrStoreNotFound.Error())
t.Fail()
}
// // we're testing here against Group ID = 1
tests := []testNewServiceRequestedStore{
{scope.Option{Group: scope.MockID(232)}, "", store.ErrIDNotFoundTableGroupSlice},
{scope.Option{Store: scope.MockID(232)}, "", store.ErrIDNotFoundTableStoreSlice},
{scope.Option{Store: scope.MockCode("\U0001f631")}, "", store.ErrIDNotFoundTableStoreSlice},
{scope.Option{Store: scope.MockID(6)}, "nz", store.ErrStoreChangeNotAllowed},
{scope.Option{Store: scope.MockCode("ch")}, "", store.ErrStoreNotActive},
{scope.Option{Store: scope.MockCode("de")}, "de", nil},
{scope.Option{Store: scope.MockID(2)}, "at", nil},
{scope.Option{Store: scope.MockID(2)}, "at", nil},
{scope.Option{Store: scope.MockCode("au")}, "au", store.ErrStoreChangeNotAllowed},
{scope.Option{Store: scope.MockCode("ch")}, "", store.ErrStoreNotActive},
{scope.Option{Group: scope.MockCode("ch")}, "", store.ErrIDNotFoundTableGroupSlice},
{scope.Option{Group: scope.MockID(2)}, "", store.ErrStoreChangeNotAllowed},
{scope.Option{Group: scope.MockID(1)}, "at", nil},
{scope.Option{Website: scope.MockCode("xxxx")}, "", store.ErrIDNotFoundTableWebsiteSlice},
{scope.Option{Website: scope.MockID(2)}, "", store.ErrStoreChangeNotAllowed},
{scope.Option{Website: scope.MockID(1)}, "at", nil},
}
runTestsRequestedStore(t, sm, tests)
}
示例4: TestApplyID
func TestApplyID(t *testing.T) {
tests := []struct {
wantWebsiteID scope.WebsiteIDer
wantGroupID scope.GroupIDer
wantStoreID scope.StoreIDer
haveID int64
s scope.Scope
err error
}{
{scope.MockID(1), nil, nil, 1, scope.WebsiteID, nil},
{nil, scope.MockID(3), nil, 3, scope.GroupID, nil},
{nil, nil, scope.MockID(2), 2, scope.StoreID, nil},
{nil, nil, nil, 4, scope.AbsentID, scope.ErrUnsupportedScopeID},
}
for _, test := range tests {
so, err := scope.SetByID(test.haveID, test.s)
assert.NotNil(t, so)
if test.err != nil {
assert.EqualError(t, err, test.err.Error())
assert.Nil(t, so.Website)
assert.Nil(t, so.Group)
assert.Nil(t, so.Store)
} else {
assert.NoError(t, err)
assert.Equal(t, test.s, so.Scope())
assert.Equal(t, "", so.StoreCode())
assert.Equal(t, "", so.WebsiteCode())
if test.wantWebsiteID != nil {
assert.Equal(t, test.wantWebsiteID.WebsiteID(), so.Website.WebsiteID())
} else {
assert.Nil(t, test.wantWebsiteID)
}
if test.wantGroupID != nil {
assert.Equal(t, test.wantGroupID.GroupID(), so.Group.GroupID())
} else {
assert.Nil(t, test.wantGroupID)
}
if test.wantStoreID != nil {
assert.Equal(t, test.wantStoreID.StoreID(), so.Store.StoreID())
} else {
assert.Nil(t, test.wantStoreID)
}
}
}
}
示例5: TestMustNewService
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())
}
示例6: TestApplyStore
func TestApplyStore(t *testing.T) {
so := scope.Option{Store: scope.MockID(3)}
assert.NotNil(t, so)
assert.Equal(t, int64(3), so.Store.StoreID())
assert.Nil(t, so.Website)
assert.Nil(t, so.Group)
assert.Exactly(t, scope.StoreID.String(), so.String())
}
示例7: TestNewServiceGroup
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())
}
示例8: TestNewServiceWebsite
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())
}
示例9: Stores
// Stores creates a new store slice. Can return an error when the website or
// the group cannot be found.
func (st *Storage) Stores() (StoreSlice, error) {
stores := make(StoreSlice, len(st.stores), len(st.stores))
for i, s := range st.stores {
var err error
if stores[i], err = st.Store(scope.MockID(s.StoreID)); err != nil {
return nil, errgo.Mask(err)
}
}
return stores, nil
}
示例10: TestNewServiceReInit
func TestNewServiceReInit(t *testing.T) {
t.Skip(TODO_Better_Test_Data)
// quick implement, use mock of dbr.SessionRunner and remove connection
dbc := csdb.MustConnectTest()
defer func() { assert.NoError(t, dbc.Close()) }()
dbrSess := dbc.NewSession()
storeService := store.MustNewService(scope.Option{}, store.MustNewStorage(nil /* trick it*/))
if err := storeService.ReInit(dbrSess); err != nil {
t.Fatal(err)
}
tests := []struct {
have scope.StoreIDer
wantErr error
}{
{scope.MockCode("dede"), nil},
{scope.MockCode("czcz"), store.ErrIDNotFoundTableStoreSlice},
{scope.MockID(1), nil},
{scope.MockID(100), store.ErrStoreNotFound},
{mockIDCode{1, "dede"}, nil},
{mockIDCode{2, "czfr"}, store.ErrStoreNotFound},
{mockIDCode{2, ""}, nil},
}
for _, test := range tests {
s, err := storeService.Store(test.have)
if test.wantErr == nil {
assert.NoError(t, err, "No Err; for test: %#v", test)
assert.NotNil(t, s)
// assert.NotEmpty(t, s.Data.Code.String, "%#v", s.Data)
} else {
assert.Error(t, err, "Err for test: %#v", test)
assert.EqualError(t, test.wantErr, err.Error(), "EqualErr for test: %#v", test)
assert.Nil(t, s)
}
}
assert.False(t, storeService.IsCacheEmpty())
storeService.ClearCache()
assert.True(t, storeService.IsCacheEmpty())
}
示例11: TestWithInitStoreByToken
func TestWithInitStoreByToken(t *testing.T) {
var newReq = func(i int) *http.Request {
req, err := http.NewRequest(httputil.MethodGet, fmt.Sprintf("https://corestore.io/store/list/%d", i), nil)
if err != nil {
t.Fatal(err)
}
return req
}
tests := []struct {
ctx context.Context
wantStoreCode string
wantErr error
}{
{store.WithContextReader(context.Background(), nil), "de", store.ErrContextServiceNotFound},
{store.WithContextReader(context.Background(), getInitializedStoreService(scope.Option{Store: scope.MockCode("de")})), "de", ctxjwt.ErrContextJWTNotFound},
{newStoreServiceWithTokenCtx(scope.Option{Store: scope.MockCode("de")}, "de"), "de", nil},
{newStoreServiceWithTokenCtx(scope.Option{Store: scope.MockCode("at")}, "ch"), "at", store.ErrStoreNotActive},
{newStoreServiceWithTokenCtx(scope.Option{Store: scope.MockCode("de")}, "at"), "at", nil},
{newStoreServiceWithTokenCtx(scope.Option{Store: scope.MockCode("de")}, "a$t"), "de", store.ErrStoreCodeInvalid},
{newStoreServiceWithTokenCtx(scope.Option{Store: scope.MockCode("at")}, ""), "at", store.ErrStoreCodeInvalid},
{newStoreServiceWithTokenCtx(scope.Option{Group: scope.MockID(1)}, "de"), "de", nil},
{newStoreServiceWithTokenCtx(scope.Option{Group: scope.MockID(1)}, "ch"), "at", store.ErrStoreNotActive},
{newStoreServiceWithTokenCtx(scope.Option{Group: scope.MockID(1)}, " ch"), "at", store.ErrStoreCodeInvalid},
{newStoreServiceWithTokenCtx(scope.Option{Group: scope.MockID(1)}, "uk"), "at", store.ErrStoreChangeNotAllowed},
{newStoreServiceWithTokenCtx(scope.Option{Website: scope.MockID(2)}, "uk"), "au", store.ErrStoreChangeNotAllowed},
{newStoreServiceWithTokenCtx(scope.Option{Website: scope.MockID(2)}, "nz"), "nz", nil},
{newStoreServiceWithTokenCtx(scope.Option{Website: scope.MockID(2)}, "n z"), "au", store.ErrStoreCodeInvalid},
{newStoreServiceWithTokenCtx(scope.Option{Website: scope.MockID(2)}, "au"), "au", nil},
{newStoreServiceWithTokenCtx(scope.Option{Website: scope.MockID(2)}, ""), "au", store.ErrStoreCodeInvalid},
}
for i, test := range tests {
mw := store.WithInitStoreByToken()(finalInitStoreHandler(t, test.wantStoreCode))
rec := httptest.NewRecorder()
surfErr := mw.ServeHTTPContext(test.ctx, rec, newReq(i))
if test.wantErr != nil {
assert.EqualError(t, surfErr, test.wantErr.Error(), "Index %d", i)
continue
}
assert.NoError(t, surfErr, "Index %d", i)
}
}
示例12: TestStorageStore
func TestStorageStore(t *testing.T) {
tests := []struct {
have scope.StoreIDer
err error
wantCode string
}{
{nil, store.ErrStoreNotFound, ""},
{scope.MockID(2015), store.ErrIDNotFoundTableStoreSlice, ""},
{scope.MockID(1), nil, "de"},
{scope.MockCode("asia"), store.ErrIDNotFoundTableStoreSlice, ""},
{scope.MockCode("nz"), nil, "nz"},
{mockIDCode{4, "nz"}, nil, "nz"},
{mockIDCode{4, "auuuuu"}, store.ErrIDNotFoundTableStoreSlice, ""},
}
for i, test := range tests {
s, err := testStorage.Store(test.have)
if test.err != nil {
assert.Nil(t, s, "%#v", test)
assert.EqualError(t, err, test.err.Error(), "Index: %d", i)
} else {
assert.NotNil(t, s, "%#v", test)
assert.NoError(t, err, "%#v", test)
assert.Equal(t, test.wantCode, s.Data.Code.String)
}
}
s, err := testStorage.Store(scope.MockCode("at"))
assert.NoError(t, err)
assert.NotNil(t, s)
assert.EqualValues(t, "DACH Group", s.Group.Data.Name)
assert.EqualValues(t, "euro", s.Website.Data.Code.String)
wg, err := s.Website.DefaultGroup()
assert.NotNil(t, wg)
assert.EqualValues(t, "DACH Group", wg.Data.Name)
wgs, err := wg.DefaultStore()
assert.NoError(t, err)
assert.EqualValues(t, "at", wgs.Data.Code.String)
}
示例13: TestStorageWebsite
func TestStorageWebsite(t *testing.T) {
tests := []struct {
have scope.WebsiteIDer
err error
wantWCode string
}{
{nil, store.ErrWebsiteNotFound, ""},
{scope.MockID(2015), store.ErrIDNotFoundTableWebsiteSlice, ""},
{scope.MockID(1), nil, "euro"},
{scope.MockCode("asia"), store.ErrIDNotFoundTableWebsiteSlice, ""},
{scope.MockCode("oz"), nil, "oz"},
{mockIDCode{1, "oz"}, nil, "oz"},
{mockIDCode{1, "ozzz"}, store.ErrIDNotFoundTableWebsiteSlice, ""},
}
for _, test := range tests {
w, err := testStorage.Website(test.have)
if test.err != nil {
assert.Nil(t, w)
assert.EqualError(t, test.err, err.Error())
} else {
assert.NotNil(t, w, "Test: %#v", test)
assert.NoError(t, err, "Test: %#v", test)
assert.Equal(t, test.wantWCode, w.Data.Code.String, "Test: %#v", test)
}
}
w, err := testStorage.Website(scope.MockCode("euro"))
assert.NoError(t, err)
assert.NotNil(t, w)
dGroup, err := w.DefaultGroup()
assert.NoError(t, err)
assert.EqualValues(t, "DACH Group", dGroup.Data.Name)
assert.NotNil(t, w.Groups)
assert.EqualValues(t, util.Int64Slice{1, 2}, w.Groups.IDs())
assert.NotNil(t, w.Stores)
assert.EqualValues(t, util.StringSlice{"de", "uk", "at", "ch"}, w.Stores.Codes())
}
示例14: BenchmarkStorageGroupGetDefaultStore
// MBA mid 2012 CPU: Intel Core i5-3427U CPU @ 1.80GHz
// BenchmarkStorageGroupGetDefaultStore 1000000 1916 ns/op 464 B/op 14 allocs/op
// BenchmarkStorageGroupGetDefaultStore-4 300000 5387 ns/op 2880 B/op 64 allocs/op
func BenchmarkStorageGroupGetDefaultStore(b *testing.B) {
b.ReportAllocs()
for i := 0; i < b.N; i++ {
var err error
benchmarkStorageGroup, err = testStorage.Group(scope.MockID(3))
if err != nil {
b.Error(err)
}
benchmarkStorageGroupDefaultStore, err = benchmarkStorageGroup.DefaultStore()
if err != nil {
b.Error(err)
}
}
}
示例15: Group
// Group creates a new Group which contains all related stores and its website according to the
// interface definition.
func (st *Storage) Group(id scope.GroupIDer) (*Group, error) {
g, err := st.group(id)
if err != nil {
return nil, errgo.Mask(err)
}
w, err := st.website(scope.MockID(g.WebsiteID))
if err != nil {
if PkgLog.IsDebug() {
PkgLog.Debug("store.Storage.Group.website", "err", err, "websiteID", g.WebsiteID, "groupID", id.GroupID())
}
return nil, errgo.Mask(err)
}
return NewGroup(g, SetGroupConfig(st.cr), SetGroupWebsite(w), SetGroupStores(st.stores, nil))
}