作者:maso
项目:doorbo
func TestPutFailed(t *testing.T) {
render := new(tests.MockRender)
repo := new(tests.MockDoorRepository)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("DoorRepository").Return(repo)
repositories.On("DB").Return(db)
repositories.On("AccountScope").Return(uint(1))
params := martini.Params{
"id": "5555",
}
postDoor := &doorbot.Door{
Name: "Romanian Landlords",
}
repoDoor := &doorbot.Door{
ID: 5555,
Name: "ACME",
}
repo.On("Find", db, uint(5555)).Return(repoDoor, nil)
repo.On("Update", db, repoDoor).Return(false, errors.New("failed"))
render.On("JSON", http.StatusInternalServerError, doorbot.NewInternalServerErrorResponse([]string{})).Return()
Put(render, repositories, params, DoorViewModel{Door: postDoor})
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
repositories.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestPost(t *testing.T) {
render := new(tests.MockRender)
repo := new(tests.MockDoorRepository)
repositories := new(tests.MockRepositories)
repositories.On("DoorRepository").Return(repo)
repositories.On("AccountScope").Return(uint(1))
db := new(tests.MockExecutor)
repositories.On("DB").Return(db)
door := &doorbot.Door{
Name: "ACME",
}
repo.On("Create", db, door).Return(nil)
render.On("JSON", http.StatusCreated, DoorViewModel{Door: door}).Return()
Post(render, repositories, DoorViewModel{Door: door})
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
repositories.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestPostCreateError(t *testing.T) {
render := new(tests.MockRender)
repo := new(tests.MockDoorRepository)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("DoorRepository").Return(repo)
repositories.On("DB").Return(db)
repositories.On("AccountScope").Return(uint(1))
door := &doorbot.Door{
Name: "ACME",
}
repo.On("Create", db, door).Return(errors.New("errooor"))
render.On("JSON", http.StatusInternalServerError, doorbot.NewInternalServerErrorResponse([]string{})).Return()
Post(render, repositories, DoorViewModel{Door: door})
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
repositories.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestDisable(t *testing.T) {
render := new(tests.MockRender)
repo := new(tests.MockDeviceRepository)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("DeviceRepository").Return(repo)
repositories.On("DB").Return(db)
repositories.On("AccountScope").Return(uint(1))
params := martini.Params{
"id": "4443",
}
device := &doorbot.Device{
ID: 4443,
IsEnabled: false,
}
repo.On("Find", db, uint64(4443)).Return(device, nil)
repo.On("Enable", db, device, false).Return(true, nil)
render.On("Status", http.StatusNoContent).Return()
Disable(render, repositories, params)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
repositories.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestIndex(t *testing.T) {
doors := []*doorbot.Door{
&doorbot.Door{
ID: 1,
AccountID: 1,
Name: "A",
},
}
render := new(tests.MockRender)
repo := new(tests.MockDoorRepository)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("DoorRepository").Return(repo)
repositories.On("DB").Return(db)
repo.On("All", db).Return(doors, nil)
render.On("JSON", http.StatusOK, DoorsViewModel{Doors: doors}).Return()
Index(render, repositories)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
repositories.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestGetNotFound(t *testing.T) {
var device *doorbot.Device
render := new(tests.MockRender)
repo := new(tests.MockDeviceRepository)
params := martini.Params{
"id": "33",
}
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("DeviceRepository").Return(repo)
repositories.On("DB").Return(db)
repositories.On("AccountScope").Return(uint(1))
repo.On("Find", db, uint64(33)).Return(device, nil)
render.On("JSON", http.StatusNotFound, doorbot.NewEntityNotFoundResponse([]string{"The specified device does not exists"})).Return()
Get(render, repositories, params)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
repositories.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestPutNotFound(t *testing.T) {
var device *doorbot.Device
render := new(tests.MockRender)
repo := new(tests.MockDeviceRepository)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("DeviceRepository").Return(repo)
repositories.On("DB").Return(db)
params := martini.Params{
"id": "44",
}
postDevice := &doorbot.Device{
Name: "Chicken Nick",
}
repo.On("Find", db, uint64(44)).Return(device, nil)
render.On("JSON", http.StatusNotFound, doorbot.NewEntityNotFoundResponse([]string{"The specified device does not exists"})).Return()
Put(render, repositories, params, DeviceViewModel{Device: postDevice})
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
repositories.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestGet(t *testing.T) {
session := &auth.Authorization{
Type: auth.AuthorizationPerson,
Person: &doorbot.Person{
AccountType: doorbot.AccountOwner,
},
}
render := new(tests.MockRender)
repo := new(tests.MockPersonRepository)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("PersonRepository").Return(repo)
repositories.On("DB").Return(db)
params := martini.Params{
"id": "33",
}
person := &doorbot.Person{
ID: 33,
Name: "ACME",
}
render.On("JSON", http.StatusOK, PersonViewModel{Person: person}).Return(nil)
repo.On("Find", db, uint(33)).Return(person, nil)
Get(render, repositories, params, session)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
repositories.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestIndexError(t *testing.T) {
session := &auth.Authorization{
Type: auth.AuthorizationPerson,
Person: &doorbot.Person{
AccountType: doorbot.AccountOwner,
},
}
people := []*doorbot.Person{}
err := errors.New("i like pasta")
render := new(tests.MockRender)
repo := new(tests.MockPersonRepository)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("PersonRepository").Return(repo)
repositories.On("AccountScope").Return(uint(0))
repositories.On("DB").Return(db)
repo.On("All", db).Return(people, err)
render.On("JSON", http.StatusInternalServerError, doorbot.NewInternalServerErrorResponse([]string{})).Return()
Index(render, repositories, session)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
repositories.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestDeleteNotFound(t *testing.T) {
var person *doorbot.Person
repo := new(tests.MockPersonRepository)
render := new(tests.MockRender)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("PersonRepository").Return(repo)
repositories.On("DB").Return(db)
repositories.On("AccountScope").Return(uint(1))
params := martini.Params{
"id": "44",
}
account := &doorbot.Account{}
session := &auth.Authorization{
Type: auth.AuthorizationPerson,
Person: &doorbot.Person{
AccountType: doorbot.AccountOwner,
},
}
repo.On("Find", db, uint(44)).Return(person, nil)
render.On("JSON", http.StatusNotFound, doorbot.NewEntityNotFoundResponse([]string{"The specified person does not exists"})).Return()
Delete(render, repositories, params, account, session)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
repositories.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestDelete(t *testing.T) {
render := new(tests.MockRender)
repo := new(tests.MockDoorRepository)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("DoorRepository").Return(repo)
repositories.On("DB").Return(db)
repositories.On("AccountScope").Return(uint(1))
params := martini.Params{
"id": "33",
}
door := &doorbot.Door{
ID: 33,
Name: "ACME",
}
repo.On("Find", db, uint(33)).Return(door, nil)
repo.On("Delete", db, door).Return(true, nil)
render.On("Status", http.StatusNoContent).Return()
Delete(render, repositories, params)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
repositories.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestDeleteFailed(t *testing.T) {
repo := new(tests.MockDoorRepository)
render := new(tests.MockRender)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("DoorRepository").Return(repo)
repositories.On("DB").Return(db)
repositories.On("AccountScope").Return(uint(1))
params := martini.Params{
"id": "55",
}
door := &doorbot.Door{
ID: 55,
Name: "ACME",
}
repo.On("Find", db, uint(55)).Return(door, nil)
repo.On("Delete", db, door).Return(false, errors.New("error"))
render.On("Status", http.StatusInternalServerError).Return()
Delete(render, repositories, params)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
repositories.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestIndex(t *testing.T) {
people := []*doorbot.Person{
&doorbot.Person{
ID: 1,
AccountID: 1,
Name: "A",
},
}
session := &auth.Authorization{
Type: auth.AuthorizationPerson,
Person: &doorbot.Person{
AccountType: doorbot.AccountOwner,
},
}
render := new(tests.MockRender)
repo := new(tests.MockPersonRepository)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("PersonRepository").Return(repo)
repositories.On("DB").Return(db)
repo.On("All", db).Return(people, nil)
render.On("JSON", http.StatusOK, PeopleViewModel{People: people}).Return()
Index(render, repositories, session)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
repositories.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestDelete(t *testing.T) {
render := new(tests.MockRender)
repo := new(tests.MockAccountRepository)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("AccountRepository").Return(repo)
repositories.On("DB").Return(db)
params := martini.Params{
"id": "33",
}
account := &doorbot.Account{
ID: 33,
Name: "ACME",
}
admin := &doorbot.Administrator{}
repo.On("Find", db, uint(33)).Return(account, nil)
repo.On("Delete", db, account).Return(true, nil)
render.On("Status", http.StatusNoContent).Return()
Delete(render, repositories, params, admin)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestDeleteNotFound(t *testing.T) {
var account *doorbot.Account
admin := &doorbot.Administrator{}
repo := new(tests.MockAccountRepository)
render := new(tests.MockRender)
repositories := new(tests.MockRepositories)
repositories.On("AccountRepository").Return(repo)
repositories.On("AccountScope").Return(1)
db := new(tests.MockExecutor)
repositories.On("DB").Return(db)
params := martini.Params{
"id": "44",
}
repo.On("Find", db, uint(44)).Return(account, nil)
render.On("JSON", http.StatusNotFound, doorbot.NewEntityNotFoundResponse([]string{"The specified account does not exists."})).Return()
Delete(render, repositories, params, admin)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestPut(t *testing.T) {
render := new(tests.MockRender)
repo := new(tests.MockAccountRepository)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("AccountRepository").Return(repo)
repositories.On("DB").Return(db)
postAccount := &doorbot.Account{
Name: "Romanian Landlords",
}
repoAccount := &doorbot.Account{
ID: 5555,
Name: "ACME",
IsEnabled: true,
}
session := &auth.Authorization{
Type: auth.AuthorizationAdministrator,
}
repo.On("Update", db, repoAccount).Return(true, nil)
render.On("JSON", http.StatusOK, AccountViewModel{Account: repoAccount}).Return()
Put(render, repoAccount, repositories, AccountViewModel{Account: postAccount}, session)
assert.Equal(t, "Romanian Landlords", repoAccount.Name)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestPutFailed(t *testing.T) {
render := new(tests.MockRender)
repo := new(tests.MockAccountRepository)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("AccountRepository").Return(repo)
repositories.On("DB").Return(db)
repositories.On("AccountScope").Return(1)
postAccount := &doorbot.Account{
Name: "Romanian Landlords",
}
repoAccount := &doorbot.Account{
ID: 5555,
Name: "ACME",
IsEnabled: true,
}
session := &auth.Authorization{
Type: auth.AuthorizationAdministrator,
}
repo.On("Update", db, repoAccount).Return(false, errors.New("failed"))
render.On("JSON", http.StatusInternalServerError, doorbot.NewInternalServerErrorResponse([]string{})).Return()
Put(render, repoAccount, repositories, AccountViewModel{Account: postAccount}, session)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestPost(t *testing.T) {
render := new(tests.MockRender)
repo := new(tests.MockAccountRepository)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("AccountRepository").Return(repo)
repositories.On("DB").Return(db)
account := &doorbot.Account{
Name: "ACME",
Host: "derp",
}
admin := &doorbot.Administrator{}
// nil
var findByHostReponse *doorbot.Account
repo.On("Create", db, account).Return(nil)
repo.On("FindByHost", db, "derp").Return(findByHostReponse, nil)
render.On("JSON", http.StatusCreated, AccountViewModel{Account: account}).Return()
Post(render, repositories, AccountViewModel{Account: account}, admin)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestPostCreateError(t *testing.T) {
render := new(tests.MockRender)
repo := new(tests.MockAccountRepository)
db := new(tests.MockExecutor)
admin := &doorbot.Administrator{}
repositories := new(tests.MockRepositories)
repositories.On("AccountRepository").Return(repo)
repositories.On("DB").Return(db)
repositories.On("AccountScope").Return(1)
account := &doorbot.Account{
Name: "ACME",
Host: "derp",
}
// nil
var findByHostReponse *doorbot.Account
repo.On("Create", db, account).Return(errors.New("errooor"))
repo.On("FindByHost", db, "derp").Return(findByHostReponse, nil)
render.On("JSON", http.StatusInternalServerError, doorbot.NewInternalServerErrorResponse([]string{})).Return()
Post(render, repositories, AccountViewModel{Account: account}, admin)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
}
作者:maso
项目:doorbo
func TestIndex(t *testing.T) {
accounts := []*doorbot.Account{
&doorbot.Account{
ID: 1,
Name: "ACME",
IsEnabled: true,
},
}
admin := &doorbot.Administrator{}
render := new(tests.MockRender)
repo := new(tests.MockAccountRepository)
db := new(tests.MockExecutor)
repositories := new(tests.MockRepositories)
repositories.On("AccountRepository").Return(repo)
repositories.On("DB").Return(db)
repo.On("All", db).Return(accounts, nil)
render.On("JSON", http.StatusOK, AccountsViewModel{Accounts: accounts}).Return(nil)
Index(render, repositories, admin)
render.Mock.AssertExpectations(t)
repo.Mock.AssertExpectations(t)
}