128 lines
3.5 KiB
Go
128 lines
3.5 KiB
Go
package peer_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/mock"
|
|
|
|
"cloud.o-forge.io/core/oc-lib/dbs"
|
|
"cloud.o-forge.io/core/oc-lib/models/peer"
|
|
"cloud.o-forge.io/core/oc-lib/models/utils"
|
|
)
|
|
|
|
type MockAccessor struct {
|
|
mock.Mock
|
|
utils.AbstractAccessor
|
|
}
|
|
|
|
func (m *MockAccessor) DeleteOne(id string) (utils.DBObject, int, error) {
|
|
args := m.Called(id)
|
|
return args.Get(0).(utils.DBObject), args.Int(1), args.Error(2)
|
|
}
|
|
|
|
func (m *MockAccessor) UpdateOne(set utils.DBObject, id string) (utils.DBObject, int, error) {
|
|
args := m.Called(set, id)
|
|
return args.Get(0).(utils.DBObject), args.Int(1), args.Error(2)
|
|
}
|
|
|
|
func (m *MockAccessor) StoreOne(data utils.DBObject) (utils.DBObject, int, error) {
|
|
args := m.Called(data)
|
|
return args.Get(0).(utils.DBObject), args.Int(1), args.Error(2)
|
|
}
|
|
|
|
func (m *MockAccessor) LoadOne(id string) (utils.DBObject, int, error) {
|
|
args := m.Called(id)
|
|
return args.Get(0).(utils.DBObject), args.Int(1), args.Error(2)
|
|
}
|
|
|
|
func (m *MockAccessor) LoadAll(isDraft bool) ([]utils.ShallowDBObject, int, error) {
|
|
args := m.Called(isDraft)
|
|
return args.Get(0).([]utils.ShallowDBObject), args.Int(1), args.Error(2)
|
|
}
|
|
|
|
func (m *MockAccessor) Search(filters *dbs.Filters, search string, isDraft bool) ([]utils.ShallowDBObject, int, error) {
|
|
args := m.Called(filters, search, isDraft)
|
|
return args.Get(0).([]utils.ShallowDBObject), args.Int(1), args.Error(2)
|
|
}
|
|
|
|
func newTestPeer() *peer.Peer {
|
|
return &peer.Peer{
|
|
Url: "http://localhost",
|
|
WalletAddress: "0x123",
|
|
PublicKey: "pubkey",
|
|
State: peer.SELF,
|
|
}
|
|
}
|
|
|
|
func TestDeleteOne_UsingMock(t *testing.T) {
|
|
mockAcc := new(MockAccessor)
|
|
mockAcc.On("DeleteOne", "id").Return(newTestPeer(), 200, nil)
|
|
|
|
obj, code, err := mockAcc.DeleteOne("id")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 200, code)
|
|
assert.NotNil(t, obj)
|
|
mockAcc.AssertExpectations(t)
|
|
}
|
|
|
|
func TestUpdateOne_UsingMock(t *testing.T) {
|
|
mockAcc := new(MockAccessor)
|
|
peerObj := newTestPeer()
|
|
mockAcc.On("UpdateOne", peerObj, "id").Return(peerObj, 200, nil)
|
|
|
|
obj, code, err := mockAcc.UpdateOne(peerObj, "id")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 200, code)
|
|
assert.Equal(t, peerObj, obj)
|
|
mockAcc.AssertExpectations(t)
|
|
}
|
|
|
|
func TestStoreOne_UsingMock(t *testing.T) {
|
|
mockAcc := new(MockAccessor)
|
|
peerObj := newTestPeer()
|
|
mockAcc.On("StoreOne", peerObj).Return(peerObj, 200, nil)
|
|
|
|
obj, code, err := mockAcc.StoreOne(peerObj)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 200, code)
|
|
assert.Equal(t, peerObj, obj)
|
|
mockAcc.AssertExpectations(t)
|
|
}
|
|
|
|
func TestLoadOne_UsingMock(t *testing.T) {
|
|
mockAcc := new(MockAccessor)
|
|
mockAcc.On("LoadOne", "test-id").Return(newTestPeer(), 200, nil)
|
|
|
|
obj, code, err := mockAcc.LoadOne("test-id")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 200, code)
|
|
assert.NotNil(t, obj)
|
|
mockAcc.AssertExpectations(t)
|
|
}
|
|
|
|
func TestLoadAll_UsingMock(t *testing.T) {
|
|
mockAcc := new(MockAccessor)
|
|
expected := []utils.ShallowDBObject{newTestPeer()}
|
|
mockAcc.On("LoadAll", false).Return(expected, 200, nil)
|
|
|
|
objs, code, err := mockAcc.LoadAll(false)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 200, code)
|
|
assert.Equal(t, expected, objs)
|
|
mockAcc.AssertExpectations(t)
|
|
}
|
|
|
|
func TestSearch_UsingMock(t *testing.T) {
|
|
mockAcc := new(MockAccessor)
|
|
filters := &dbs.Filters{}
|
|
expected := []utils.ShallowDBObject{newTestPeer()}
|
|
mockAcc.On("Search", filters, "test", false).Return(expected, 200, nil)
|
|
|
|
objs, code, err := mockAcc.Search(filters, "test", false)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 200, code)
|
|
assert.Equal(t, expected, objs)
|
|
mockAcc.AssertExpectations(t)
|
|
}
|