Store pointer to data instead of serialized form (#1196)
## Description Remove JSON [de]serialization from mock model store and just use assignments. Model Store tests check that all fields are properly filled out so using JSON here is not required. Unblocks #1089 as mock model store no longer relies on JSON serialization (and tags associated with models) ## Type of change <!--- Please check the type of change your PR introduces: ---> - [ ] 🌻 Feature - [ ] 🐛 Bugfix - [ ] 🗺️ Documentation - [ ] 🤖 Test - [ ] 💻 CI/Deployment - [x] 🐹 Trivial/Minor ## Issue(s) * #1085 ## Test Plan <!-- How will this be tested prior to merging.--> - [ ] 💪 Manual - [x] ⚡ Unit test - [ ] 💚 E2E
This commit is contained in:
parent
4800904b04
commit
0a91a3e097
@ -2,7 +2,6 @@ package mock
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
|
||||||
|
|
||||||
"github.com/kopia/kopia/repo/manifest"
|
"github.com/kopia/kopia/repo/manifest"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
@ -17,29 +16,19 @@ import (
|
|||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
|
|
||||||
type MockModelStore struct {
|
type MockModelStore struct {
|
||||||
backup []byte
|
backup *backup.Backup
|
||||||
details []byte
|
details *details.Details
|
||||||
err error
|
err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMock(b *backup.Backup, d *details.Details, err error) *MockModelStore {
|
func NewMock(b *backup.Backup, d *details.Details, err error) *MockModelStore {
|
||||||
return &MockModelStore{
|
return &MockModelStore{
|
||||||
backup: marshal(b),
|
backup: b,
|
||||||
details: marshal(d),
|
details: d,
|
||||||
err: err,
|
err: err,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func marshal(a any) []byte {
|
|
||||||
bs, _ := json.Marshal(a)
|
|
||||||
return bs
|
|
||||||
}
|
|
||||||
|
|
||||||
func unmarshal(b []byte, a any) {
|
|
||||||
//nolint:errcheck
|
|
||||||
json.Unmarshal(b, a)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
// deleter iface
|
// deleter iface
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
@ -68,9 +57,13 @@ func (mms *MockModelStore) Get(
|
|||||||
|
|
||||||
switch s {
|
switch s {
|
||||||
case model.BackupSchema:
|
case model.BackupSchema:
|
||||||
unmarshal(mms.backup, data)
|
bm := data.(*backup.Backup)
|
||||||
|
*bm = *mms.backup
|
||||||
|
|
||||||
case model.BackupDetailsSchema:
|
case model.BackupDetailsSchema:
|
||||||
unmarshal(mms.details, data)
|
dm := data.(*details.Details)
|
||||||
|
dm.DetailsModel = mms.details.DetailsModel
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return errors.Errorf("schema %s not supported by mock Get", s)
|
return errors.Errorf("schema %s not supported by mock Get", s)
|
||||||
}
|
}
|
||||||
@ -89,13 +82,12 @@ func (mms *MockModelStore) GetIDsForType(
|
|||||||
|
|
||||||
switch s {
|
switch s {
|
||||||
case model.BackupSchema:
|
case model.BackupSchema:
|
||||||
b := backup.Backup{}
|
b := *mms.backup
|
||||||
unmarshal(mms.backup, &b)
|
|
||||||
|
|
||||||
return []*model.BaseModel{&b.BaseModel}, nil
|
return []*model.BaseModel{&b.BaseModel}, nil
|
||||||
|
|
||||||
case model.BackupDetailsSchema:
|
case model.BackupDetailsSchema:
|
||||||
d := details.Details{}
|
d := details.Details{}
|
||||||
unmarshal(mms.backup, &d)
|
d.DetailsModel = mms.details.DetailsModel
|
||||||
|
|
||||||
return []*model.BaseModel{&d.BaseModel}, nil
|
return []*model.BaseModel{&d.BaseModel}, nil
|
||||||
}
|
}
|
||||||
@ -115,9 +107,13 @@ func (mms *MockModelStore) GetWithModelStoreID(
|
|||||||
|
|
||||||
switch s {
|
switch s {
|
||||||
case model.BackupSchema:
|
case model.BackupSchema:
|
||||||
unmarshal(mms.backup, data)
|
bm := data.(*backup.Backup)
|
||||||
|
*bm = *mms.backup
|
||||||
|
|
||||||
case model.BackupDetailsSchema:
|
case model.BackupDetailsSchema:
|
||||||
unmarshal(mms.details, data)
|
dm := data.(*details.Details)
|
||||||
|
dm.DetailsModel = mms.details.DetailsModel
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return errors.Errorf("schema %s not supported by mock GetWithModelStoreID", s)
|
return errors.Errorf("schema %s not supported by mock GetWithModelStoreID", s)
|
||||||
}
|
}
|
||||||
@ -132,9 +128,13 @@ func (mms *MockModelStore) GetWithModelStoreID(
|
|||||||
func (mms *MockModelStore) Put(ctx context.Context, s model.Schema, m model.Model) error {
|
func (mms *MockModelStore) Put(ctx context.Context, s model.Schema, m model.Model) error {
|
||||||
switch s {
|
switch s {
|
||||||
case model.BackupSchema:
|
case model.BackupSchema:
|
||||||
mms.backup = marshal(m)
|
bm := m.(*backup.Backup)
|
||||||
|
mms.backup = bm
|
||||||
|
|
||||||
case model.BackupDetailsSchema:
|
case model.BackupDetailsSchema:
|
||||||
mms.details = marshal(m)
|
dm := m.(*details.Details)
|
||||||
|
mms.details = dm
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return errors.Errorf("schema %s not supported by mock Put", s)
|
return errors.Errorf("schema %s not supported by mock Put", s)
|
||||||
}
|
}
|
||||||
@ -145,9 +145,13 @@ func (mms *MockModelStore) Put(ctx context.Context, s model.Schema, m model.Mode
|
|||||||
func (mms *MockModelStore) Update(ctx context.Context, s model.Schema, m model.Model) error {
|
func (mms *MockModelStore) Update(ctx context.Context, s model.Schema, m model.Model) error {
|
||||||
switch s {
|
switch s {
|
||||||
case model.BackupSchema:
|
case model.BackupSchema:
|
||||||
mms.backup = marshal(m)
|
bm := m.(*backup.Backup)
|
||||||
|
mms.backup = bm
|
||||||
|
|
||||||
case model.BackupDetailsSchema:
|
case model.BackupDetailsSchema:
|
||||||
mms.details = marshal(m)
|
dm := m.(*details.Details)
|
||||||
|
mms.details = dm
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return errors.Errorf("schema %s not supported by mock Update", s)
|
return errors.Errorf("schema %s not supported by mock Update", s)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user