You've already forked openaccounting-server
forked from cybercinch/openaccounting-server
initial commit
This commit is contained in:
149
core/model/price_test.go
Normal file
149
core/model/price_test.go
Normal file
@@ -0,0 +1,149 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user