You've already forked openaccounting-server
mirror of
https://github.com/openaccounting/oa-server.git
synced 2025-12-09 09:00:42 +13:00
150 lines
2.4 KiB
Go
150 lines
2.4 KiB
Go
|
|
package model
|
||
|
|
|
||
|
|
import (
|
||
|
|
"errors"
|
||
|
|
"github.com/openaccounting/oa-server/core/mocks"
|
||
|
|
"github.com/openaccounting/oa-server/core/model/types"
|
||
|
|
"github.com/openaccounting/oa-server/core/util"
|
||
|
|
"github.com/stretchr/testify/assert"
|
||
|
|
"testing"
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestCreatePrice(t *testing.T) {
|
||
|
|
|
||
|
|
price := types.Price{
|
||
|
|
"1",
|
||
|
|
"2",
|
||
|
|
"BTC",
|
||
|
|
time.Unix(0, 0),
|
||
|
|
time.Unix(0, 0),
|
||
|
|
time.Unix(0, 0),
|
||
|
|
6700,
|
||
|
|
}
|
||
|
|
|
||
|
|
badPrice := types.Price{
|
||
|
|
"1",
|
||
|
|
"2",
|
||
|
|
"",
|
||
|
|
time.Unix(0, 0),
|
||
|
|
time.Unix(0, 0),
|
||
|
|
time.Unix(0, 0),
|
||
|
|
6700,
|
||
|
|
}
|
||
|
|
|
||
|
|
badOrg := types.Price{
|
||
|
|
"1",
|
||
|
|
"1",
|
||
|
|
"BTC",
|
||
|
|
time.Unix(0, 0),
|
||
|
|
time.Unix(0, 0),
|
||
|
|
time.Unix(0, 0),
|
||
|
|
6700,
|
||
|
|
}
|
||
|
|
|
||
|
|
tests := map[string]struct {
|
||
|
|
err error
|
||
|
|
price types.Price
|
||
|
|
}{
|
||
|
|
"successful": {
|
||
|
|
err: nil,
|
||
|
|
price: price,
|
||
|
|
},
|
||
|
|
"with error": {
|
||
|
|
err: errors.New("currency required"),
|
||
|
|
price: badPrice,
|
||
|
|
},
|
||
|
|
"with org error": {
|
||
|
|
err: errors.New("User does not belong to org"),
|
||
|
|
price: badOrg,
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
for name, test := range tests {
|
||
|
|
t.Logf("Running test case: %s", name)
|
||
|
|
|
||
|
|
price := test.price
|
||
|
|
userId := "3"
|
||
|
|
|
||
|
|
db := &mocks.Datastore{}
|
||
|
|
|
||
|
|
db.On("GetOrgs", userId).Return([]*types.Org{
|
||
|
|
{
|
||
|
|
Id: "2",
|
||
|
|
},
|
||
|
|
}, nil)
|
||
|
|
|
||
|
|
db.On("InsertPrice", &test.price).Return(nil)
|
||
|
|
|
||
|
|
db.On("GetOrgUserIds", price.OrgId).Return([]string{userId}, nil)
|
||
|
|
|
||
|
|
model := NewModel(db, &util.StandardBcrypt{}, types.Config{})
|
||
|
|
|
||
|
|
err := model.CreatePrice(&price, userId)
|
||
|
|
|
||
|
|
assert.Equal(t, test.err, err)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestDeletePrice(t *testing.T) {
|
||
|
|
|
||
|
|
price := types.Price{
|
||
|
|
"1",
|
||
|
|
"2",
|
||
|
|
"BTC",
|
||
|
|
time.Unix(0, 0),
|
||
|
|
time.Unix(0, 0),
|
||
|
|
time.Unix(0, 0),
|
||
|
|
6700,
|
||
|
|
}
|
||
|
|
|
||
|
|
tests := map[string]struct {
|
||
|
|
err error
|
||
|
|
userId string
|
||
|
|
price types.Price
|
||
|
|
}{
|
||
|
|
"successful": {
|
||
|
|
err: nil,
|
||
|
|
price: price,
|
||
|
|
userId: "3",
|
||
|
|
},
|
||
|
|
"with org error": {
|
||
|
|
err: errors.New("User does not belong to org"),
|
||
|
|
price: price,
|
||
|
|
userId: "4",
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
for name, test := range tests {
|
||
|
|
t.Logf("Running test case: %s", name)
|
||
|
|
|
||
|
|
price := test.price
|
||
|
|
|
||
|
|
db := &mocks.Datastore{}
|
||
|
|
|
||
|
|
db.On("GetPriceById", price.Id).Return(&price, nil)
|
||
|
|
|
||
|
|
db.On("GetOrgs", "3").Return([]*types.Org{
|
||
|
|
{
|
||
|
|
Id: "2",
|
||
|
|
},
|
||
|
|
}, nil)
|
||
|
|
|
||
|
|
db.On("GetOrgs", "4").Return([]*types.Org{
|
||
|
|
{
|
||
|
|
Id: "7",
|
||
|
|
},
|
||
|
|
}, nil)
|
||
|
|
|
||
|
|
db.On("DeletePrice", price.Id).Return(nil)
|
||
|
|
|
||
|
|
db.On("GetOrgUserIds", price.OrgId).Return([]string{test.userId}, nil)
|
||
|
|
|
||
|
|
model := NewModel(db, &util.StandardBcrypt{}, types.Config{})
|
||
|
|
|
||
|
|
err := model.DeletePrice(price.Id, test.userId)
|
||
|
|
|
||
|
|
assert.Equal(t, test.err, err)
|
||
|
|
}
|
||
|
|
}
|