harness-drone/pkg/database/testing/members_test.go
Nurahmadie 571f7d02b0 Fix some column type to work with both mysql and sqlite.
Basically this is caused by sqlite actually doesn't have any
column type restriction. also save gob type column as blob to enforce
byte-string value, since varchar with utf8 collation type will take at
least 3 byte to store, this will break YAML-Gob decoding at `params`
column.

Also fix some typo, and clean up fixtures code.
2014-03-15 18:20:11 +07:00

140 lines
3.2 KiB
Go

package database
import (
"testing"
"github.com/drone/drone/pkg/database"
"github.com/drone/drone/pkg/model"
)
// TODO unit test to verify unique constraint on Team.Name
// TestGetMember tests the ability to retrieve a Team
// Member from the database by Unique ID.
func TestGetMember(t *testing.T) {
Setup()
defer Teardown()
// get member by user_id and team_id
member, err := database.GetMember(1, 1)
if err != nil {
t.Error(err)
}
if member.ID != 1 {
t.Errorf("Exepected ID %d, got %d", 1, member.ID)
}
if member.Name != "Brad Rydzewski" {
t.Errorf("Exepected Name %s, got %s", "Brad Rydzewski", member.Name)
}
if member.Email != "brad.rydzewski@gmail.com" {
t.Errorf("Exepected Email %s, got %s", "brad.rydzewski@gmail.com", member.Email)
}
if member.Gravatar != "8c58a0be77ee441bb8f8595b7f1b4e87" {
t.Errorf("Exepected Gravatar %s, got %s", "8c58a0be77ee441bb8f8595b7f1b4e87", member.Gravatar)
}
if member.Role != model.RoleOwner {
t.Errorf("Exepected Role %s, got %s", model.RoleOwner, member.Role)
}
}
func TestIsMember(t *testing.T) {
Setup()
defer Teardown()
ok, err := database.IsMember(1, 1)
if err != nil {
t.Error(err)
}
if !ok {
t.Errorf("Expected IsMember to return true, returned false")
}
}
func TestIsMemberAdmin(t *testing.T) {
Setup()
defer Teardown()
// expecting user is Owner
if ok, err := database.IsMemberAdmin(1, 1); err != nil {
t.Error(err)
} else if !ok {
t.Errorf("Expected user id 1 IsMemberAdmin to return true, returned false")
}
// expecting user is Admin
if ok, err := database.IsMemberAdmin(2, 1); err != nil {
t.Error(err)
} else if !ok {
t.Errorf("Expected user id 2 IsMemberAdmin to return true, returned false")
}
// expecting user is NOT Admin (Write role)
if ok, err := database.IsMemberAdmin(3, 1); err != nil {
t.Error(err)
} else if ok {
t.Errorf("Expected user id 3 IsMemberAdmin to return false, returned true")
}
}
func TestDeleteMember(t *testing.T) {
Setup()
defer Teardown()
// delete member by user_id and team_id
if err := database.DeleteMember(1, 1); err != nil {
t.Error(err)
}
// get member by user_id and team_id
if _, err := database.GetMember(1, 1); err == nil {
t.Error(err)
}
}
func TestListMembers(t *testing.T) {
Setup()
defer Teardown()
// list members by team_id
members, err := database.ListMembers(1)
if err != nil {
t.Error(err)
}
// verify team count
if len(members) != 3 {
t.Errorf("Exepected %d Team Members in database, got %d", 3, len(members))
return
}
// get the first member in the list and verify
// fields are being populated correctly
member := members[0]
if member.ID != 1 {
t.Errorf("Exepected ID %d, got %d", 1, member.ID)
}
if member.Name != "Brad Rydzewski" {
t.Errorf("Exepected Name %s, got %s", "Brad Rydzewski", member.Name)
}
if member.Email != "brad.rydzewski@gmail.com" {
t.Errorf("Exepected Email %s, got %s", "brad.rydzewski@gmail.com", member.Email)
}
if member.Gravatar != "8c58a0be77ee441bb8f8595b7f1b4e87" {
t.Errorf("Exepected Gravatar %s, got %s", "8c58a0be77ee441bb8f8595b7f1b4e87", member.Gravatar)
}
if member.Role != model.RoleOwner {
t.Errorf("Exepected Role %s, got %s", model.RoleOwner, member.Role)
}
}