176 lines
3.3 KiB
Go
176 lines
3.3 KiB
Go
package database
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
// Tests are not guaranteed to be sequential
|
|
|
|
func setupState() (Database, error) {
|
|
db := DbConnect(":memory:")
|
|
err := db.Migrate("../../migrations")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return db, nil
|
|
}
|
|
|
|
func TestDbConnect(t *testing.T) {
|
|
db := DbConnect(":memory:")
|
|
_ = db
|
|
}
|
|
|
|
func TestDbAddUser(t *testing.T) {
|
|
db, err := setupState()
|
|
if err != nil {
|
|
t.Error("setupState failed:", err)
|
|
}
|
|
err = db.AddUser("test", "password")
|
|
if err != nil {
|
|
t.Error("AddUser failed:", err)
|
|
}
|
|
}
|
|
|
|
func TestDbGetUserId(t *testing.T) {
|
|
db, err := setupState()
|
|
if err != nil {
|
|
t.Error("setupState failed:", err)
|
|
}
|
|
if db.AddUser("test", "password") != nil {
|
|
t.Error("AddUser failed")
|
|
}
|
|
|
|
var id int
|
|
|
|
id, err = db.GetUserId("test")
|
|
if err != nil {
|
|
t.Error("GetUserId failed:", err)
|
|
}
|
|
if id != 1 {
|
|
t.Error("GetUserId failed: expected 1, got", id)
|
|
}
|
|
}
|
|
|
|
func TestDbAddProject(t *testing.T) {
|
|
db, err := setupState()
|
|
if err != nil {
|
|
t.Error("setupState failed:", err)
|
|
}
|
|
|
|
err = db.AddProject("test", "description", "test")
|
|
if err != nil {
|
|
t.Error("AddProject failed:", err)
|
|
}
|
|
}
|
|
|
|
func TestDbRemoveUser(t *testing.T) {
|
|
db, err := setupState()
|
|
if err != nil {
|
|
t.Error("setupState failed:", err)
|
|
}
|
|
|
|
err = db.RemoveUser("test")
|
|
if err != nil {
|
|
t.Error("RemoveUser failed:", err)
|
|
}
|
|
}
|
|
|
|
func TestPromoteToAdmin(t *testing.T) {
|
|
db, err := setupState()
|
|
if err != nil {
|
|
t.Error("setupState failed:", err)
|
|
}
|
|
|
|
err = db.AddUser("test", "password")
|
|
if err != nil {
|
|
t.Error("AddUser failed:", err)
|
|
}
|
|
|
|
err = db.PromoteToAdmin("test")
|
|
if err != nil {
|
|
t.Error("PromoteToAdmin failed:", err)
|
|
}
|
|
}
|
|
|
|
func TestAddTimeReport(t *testing.T) {
|
|
db, err := setupState()
|
|
if err != nil {
|
|
t.Error("setupState failed:", err)
|
|
}
|
|
|
|
err = db.AddUser("testuser", "password")
|
|
if err != nil {
|
|
t.Error("AddUser failed:", err)
|
|
}
|
|
|
|
err = db.AddProject("testproject", "description", "testuser")
|
|
if err != nil {
|
|
t.Error("AddProject failed:", err)
|
|
}
|
|
|
|
var now = time.Now()
|
|
var then = now.Add(time.Hour)
|
|
|
|
err = db.AddTimeReport("testproject", "testuser", now, then)
|
|
if err != nil {
|
|
t.Error("AddTimeReport failed:", err)
|
|
}
|
|
}
|
|
|
|
func TestAddUserToProject(t *testing.T) {
|
|
db, err := setupState()
|
|
if err != nil {
|
|
t.Error("setupState failed:", err)
|
|
}
|
|
|
|
err = db.AddUser("testuser", "password")
|
|
if err != nil {
|
|
t.Error("AddUser failed:", err)
|
|
}
|
|
|
|
err = db.AddProject("testproject", "description", "testuser")
|
|
if err != nil {
|
|
t.Error("AddProject failed:", err)
|
|
}
|
|
|
|
var now = time.Now()
|
|
var then = now.Add(time.Hour)
|
|
|
|
err = db.AddTimeReport("testproject", "testuser", now, then)
|
|
if err != nil {
|
|
t.Error("AddTimeReport failed:", err)
|
|
}
|
|
|
|
err = db.AddUserToProject("testuser", "testproject", "user")
|
|
if err != nil {
|
|
t.Error("AddUserToProject failed:", err)
|
|
}
|
|
}
|
|
|
|
func TestChangeUserRole(t *testing.T) {
|
|
db, err := setupState()
|
|
if err != nil {
|
|
t.Error("setupState failed:", err)
|
|
}
|
|
|
|
err = db.AddUser("testuser", "password")
|
|
if err != nil {
|
|
t.Error("AddUser failed:", err)
|
|
}
|
|
|
|
err = db.AddProject("testproject", "description", "testuser")
|
|
if err != nil {
|
|
t.Error("AddProject failed:", err)
|
|
}
|
|
|
|
err = db.AddUserToProject("testuser", "testproject", "user")
|
|
if err != nil {
|
|
t.Error("AddUserToProject failed:", err)
|
|
}
|
|
|
|
err = db.ChangeUserRole("testuser", "testproject", "admin")
|
|
if err != nil {
|
|
t.Error("ChangeUserRole failed:", err)
|
|
}
|
|
}
|