72 lines
1.5 KiB
Go
Executable File
72 lines
1.5 KiB
Go
Executable File
package task
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
func TestNew(t *testing.T) {
|
|
if _, err := New(toReq(map[string]interface{}{})); err != nil {
|
|
t.Error(err)
|
|
}
|
|
if _, err := New(toReq(map[string]interface{}{"title": ""})); err == nil {
|
|
t.Error(err)
|
|
}
|
|
if task, err := New(toReq(map[string]interface{}{"title": "i want dogs /a,b,c/"})); err != nil {
|
|
t.Error(err)
|
|
} else if task.Title != "i want dogs" {
|
|
t.Error(task.Title)
|
|
} else if fmt.Sprint(task.Tags) != "[a b c]" {
|
|
t.Error(task.Tags)
|
|
} else {
|
|
was := task.Edited
|
|
task.touch()
|
|
if was == task.Edited {
|
|
t.Error(was)
|
|
}
|
|
was = task.Edited
|
|
task.SetNote("hell\nno")
|
|
if was == task.Edited {
|
|
t.Error(was)
|
|
} else if len(task.Note) != 2 {
|
|
t.Error(task.Note)
|
|
}
|
|
}
|
|
}
|
|
|
|
func toReq(m map[string]interface{}) *http.Request {
|
|
if m == nil {
|
|
m = map[string]interface{}{}
|
|
}
|
|
els := map[string]interface{}{
|
|
"title": "title",
|
|
"prio": 1,
|
|
"tags": "a, b,c",
|
|
"duedate": "2010-02-03 05:06:07",
|
|
"note": "hello\nworld\ni\nam a note\nand\ni have\nlots\nof\nlines",
|
|
}
|
|
for k := range els {
|
|
if _, ok := m[k]; !ok {
|
|
m[k] = els[k]
|
|
}
|
|
}
|
|
b, _ := json.Marshal(m)
|
|
return httptest.NewRequest("POST", "/paht", bytes.NewReader(b))
|
|
}
|
|
|
|
func TestJSONMarshal(t *testing.T) {
|
|
task := &Task{Tags: []string{"a", "b"}}
|
|
b, _ := json.Marshal(task)
|
|
var m map[string]interface{}
|
|
json.Unmarshal(b, &m)
|
|
if v, ok := m["tags"]; !ok {
|
|
t.Error(ok, m)
|
|
} else if v != "a,b" {
|
|
t.Error(v, m)
|
|
}
|
|
}
|