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)) }