This is a fork of: https://github.com/roglew/puppy
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
1.7 KiB

package puppy
import (
"runtime"
"testing"
"time"
)
func testStorage() *SQLiteStorage {
s, _ := InMemoryStorage(NullLogger())
return s
}
func checkTags(t *testing.T, result, expected []string) {
_, f, ln, _ := runtime.Caller(1)
if len(result) != len(expected) {
t.Errorf("Failed tag test at %s:%d. Expected %s, got %s", f, ln, expected, result)
return
}
for i, a := range result {
b := expected[i]
if a != b {
t.Errorf("Failed tag test at %s:%d. Expected %s, got %s", f, ln, expected, result)
return
}
}
}
func TestTagging(t *testing.T) {
req := testReq()
storage := testStorage()
defer storage.Close()
err := SaveNewRequest(storage, req)
testErr(t, err)
req1, err := storage.LoadRequest(req.DbId)
testErr(t, err)
checkTags(t, req1.Tags(), []string{})
req.AddTag("foo")
req.AddTag("bar")
err = UpdateRequest(storage, req)
testErr(t, err)
req2, err := storage.LoadRequest(req.DbId)
testErr(t, err)
checkTags(t, req2.Tags(), []string{"foo", "bar"})
req.RemoveTag("foo")
err = UpdateRequest(storage, req)
testErr(t, err)
req3, err := storage.LoadRequest(req.DbId)
testErr(t, err)
checkTags(t, req3.Tags(), []string{"bar"})
}
func TestTime(t *testing.T) {
req := testReq()
req.StartDatetime = time.Unix(0, 1234567)
req.EndDatetime = time.Unix(0, 2234567)
storage := testStorage()
defer storage.Close()
err := SaveNewRequest(storage, req)
testErr(t, err)
req1, err := storage.LoadRequest(req.DbId)
testErr(t, err)
tstart := req1.StartDatetime.UnixNano()
tend := req1.EndDatetime.UnixNano()
if tstart != 1234567 {
t.Errorf("Start time not saved properly. Expected 1234567, got %d", tstart)
}
if tend != 2234567 {
t.Errorf("End time not saved properly. Expected 1234567, got %d", tend)
}
}