124 lines
2.6 KiB
Go
124 lines
2.6 KiB
Go
package remote
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
func mockClient(code int, body string) (*Client, *httptest.Server) {
|
|
s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.WriteHeader(code)
|
|
w.Write([]byte(body))
|
|
}))
|
|
return &Client{
|
|
config: &Config{
|
|
remote: s.URL,
|
|
password: "",
|
|
args: []string{},
|
|
},
|
|
http: &http.Client{},
|
|
}, s
|
|
}
|
|
|
|
func TestClientLists(t *testing.T) {
|
|
c, srv := mockClient(200, `{"list":[{"id":"1", "name":"name"}]}`)
|
|
defer srv.Close()
|
|
|
|
if l, err := c.Lists(); err != nil {
|
|
t.Fatalf("cannot lists(): %v", err)
|
|
} else if l[0] != (List{ID: "1", Name: "name"}) {
|
|
t.Fatalf("cannot parse lists(): %v", l[0])
|
|
}
|
|
}
|
|
|
|
func TestClientTasks(t *testing.T) {
|
|
c, srv := mockClient(200, `{"list":[{"id":"1", "title":"title", "compl": 1}]}`)
|
|
defer srv.Close()
|
|
|
|
if l, err := c.Tasks(List{}); err != nil {
|
|
t.Fatalf("cannot tasks(): %v", err)
|
|
} else if l[0] != (Task{ID: "1", Title: "title", Complete: 1}) {
|
|
t.Fatalf("cannot parse tasks(): %v", l[0])
|
|
}
|
|
}
|
|
|
|
func TestClientNewTask(t *testing.T) {
|
|
cases := []struct {
|
|
status int
|
|
err error
|
|
}{
|
|
{
|
|
status: http.StatusOK,
|
|
err: nil,
|
|
},
|
|
{
|
|
status: http.StatusNotFound,
|
|
err: errors.New("non 200 status on new task: 404"),
|
|
},
|
|
}
|
|
|
|
for i, c := range cases {
|
|
cli, srv := mockClient(c.status, `{}`)
|
|
defer srv.Close()
|
|
|
|
err := cli.NewTask(List{ID: "1"}, Task{Title: "a"}, "a,tag")
|
|
if (err != nil && c.err == nil) || (err == nil && c.err != nil) {
|
|
t.Errorf("[%d] new task unexpected error: got %v, want %v", i, err, c.err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestClientCloseTask(t *testing.T) {
|
|
cases := []struct {
|
|
status int
|
|
err error
|
|
}{
|
|
{
|
|
status: http.StatusOK,
|
|
err: nil,
|
|
},
|
|
{
|
|
status: http.StatusNotFound,
|
|
err: errors.New("non 200 status on close task: 404"),
|
|
},
|
|
}
|
|
|
|
for i, c := range cases {
|
|
cli, srv := mockClient(c.status, `{}`)
|
|
defer srv.Close()
|
|
|
|
err := cli.CloseTask(Task{ID: "1"})
|
|
if (err != nil && c.err == nil) || (err == nil && c.err != nil) {
|
|
t.Errorf("[%d] new task unexpected error: got %v, want %v", i, err, c.err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestClientOpenTask(t *testing.T) {
|
|
cases := []struct {
|
|
status int
|
|
err error
|
|
}{
|
|
{
|
|
status: http.StatusOK,
|
|
err: nil,
|
|
},
|
|
{
|
|
status: http.StatusNotFound,
|
|
err: errors.New("non 200 status on open task: 404"),
|
|
},
|
|
}
|
|
|
|
for i, c := range cases {
|
|
cli, srv := mockClient(c.status, `{}`)
|
|
defer srv.Close()
|
|
|
|
err := cli.OpenTask(Task{ID: "1"})
|
|
if (err != nil && c.err == nil) || (err == nil && c.err != nil) {
|
|
t.Errorf("[%d] new task unexpected error: got %v, want %v", i, err, c.err)
|
|
}
|
|
}
|
|
}
|