Unittest tasks

master
Bel LaPointe 2019-11-12 14:47:33 -07:00
parent 8c4bc81694
commit ee77d9d3b7
5 changed files with 200 additions and 4 deletions

View File

@ -67,7 +67,9 @@ func (a *Ajax) HandleAjax(w http.ResponseWriter, r *http.Request) {
} else if v := params.Get("setHideList"); v != "" {
foo = a.setHideList
}
if err := foo(w, r); err != nil {
if err := foo(w, r); err == storage.ErrNotFound {
http.Error(w, err.Error(), http.StatusNotFound)
} else if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}

View File

@ -49,8 +49,11 @@ func (a *Ajax) storageGetTask(listID, taskID string) (*task.Task, error) {
return &task, err
}
func (a *Ajax) storageSetTask(listID, taskID string, task *task.Task) error {
return a.storageSet(path.Join(listID, taskID), *task)
func (a *Ajax) storageSetTask(listID, taskID string, newTask *task.Task) error {
if newTask == nil {
newTask = &task.Task{}
}
return a.storageSet(path.Join(listID, taskID), *newTask)
}
func (a *Ajax) storageDelTask(listID, taskID string) error {

View File

@ -0,0 +1,61 @@
package ajax
import (
"local/todo-server/server/ajax/task"
"net/http/httptest"
"testing"
)
func TestAjaxStorageCur(t *testing.T) {
ajax := mockAjax()
r := httptest.NewRequest("POST", "/?id=abc", nil)
listID, taskID, tags := ajax.Cur(r)
if listID != "list" {
t.Error(listID)
}
if taskID != "abc" {
t.Error(taskID)
}
if len(tags) != 0 {
t.Error(tags)
}
}
func TestAjaxStorageListTasks(t *testing.T) {
ajax := mockAjax()
ajax.storageSetTask("a", "b", &task.Task{Title: "x"})
ajax.storageSetTask("a", "c", &task.Task{Title: "y"})
ajax.storageSetTask("a", "d", &task.Task{Title: "z"})
filter := func(task *task.Task) bool {
return task.Title == "x" || task.Title == "y"
}
if results, err := ajax.storageListTasks("a"); err != nil {
t.Error(err)
} else if len(results) != 3 {
t.Error(results)
}
if results, err := ajax.storageListTasks("a", filter); err != nil {
t.Error(err)
} else if len(results) != 2 {
t.Error(results)
}
}
func TestAjaxStorageGetSetDelTask(t *testing.T) {
ajax := mockAjax()
if _, err := ajax.storageGetTask("a", "b"); err == nil {
t.Error(err)
} else if err := ajax.storageSetTask("a", "b", &task.Task{Title: "c"}); err != nil {
t.Error(err)
} else if task, err := ajax.storageGetTask("a", "b"); err != nil {
t.Error(err)
} else if task.Title != "c" {
t.Error(err)
} else if err := ajax.storageDelTask("a", "b"); err != nil {
t.Error(err)
} else if _, err := ajax.storageGetTask("a", "b"); err == nil {
t.Error(err)
}
}

View File

@ -119,7 +119,7 @@ func (a *Ajax) moveTask(w http.ResponseWriter, r *http.Request) error {
if err != nil {
return err
}
a.storageSetTask(listID, taskID, nil)
a.storageDelTask(listID, taskID)
return a.storageSetTask(toList, taskID, task)
}

View File

@ -5,6 +5,7 @@ import (
"local/todo-server/server/ajax/task"
"net/http"
"net/http/httptest"
"strings"
"testing"
)
@ -45,3 +46,132 @@ func TestAjaxLoadTasks(t *testing.T) {
}
}()
}
func TestAjaxNewTask(t *testing.T) {
ajax := mockAjax()
w := httptest.NewRecorder()
r := httptest.NewRequest("GET", "/", strings.NewReader(`{
"title":"a"
}`))
ajax.newTask(w, r)
if v := w.Code; v != http.StatusOK {
t.Error(v)
}
results, err := ajax.storageListTasks("list")
if err != nil {
t.Fatal(err)
}
if len(results) != 1 {
t.Error(results)
}
}
func TestAjaxMakeTask(t *testing.T) {
ajax := mockAjax()
r := httptest.NewRequest("GET", "/", strings.NewReader(`{
"title":"a"
}`))
listID, task, err := ajax.makeTask(r)
if err != nil {
t.Fatal(err)
}
if listID != "list" {
t.Error(listID)
}
if task.Title != "a" {
t.Error(task)
}
}
func TestAjaxDeleteTask(t *testing.T) {
ajax := mockAjax()
ajax.storageSetTask("list", "b", &task.Task{Title: "c"})
w := httptest.NewRecorder()
r := httptest.NewRequest("GET", "/?id=b", nil)
ajax.deleteTask(w, r)
if v := w.Code; v != http.StatusOK {
t.Error(v)
}
results, err := ajax.storageListTasks("list")
if err != nil {
t.Fatal(err)
}
if len(results) != 0 {
t.Error(results)
}
if _, err := ajax.storageGetTask("list", "b"); err == nil {
t.Fatal(err)
}
}
func TestAjaxCompleteTask(t *testing.T) {
ajax := mockAjax()
ajax.storageSetTask("list", "b", &task.Task{Title: "c"})
for _, state := range []string{"1", "0"} {
w := httptest.NewRecorder()
r := httptest.NewRequest("GET", "/?id=b&compl="+state, nil)
ajax.completeTask(w, r)
if v := w.Code; v != http.StatusOK {
t.Error(v)
}
if task, err := ajax.storageGetTask("list", "b"); err != nil {
t.Fatal(err)
} else if task.Complete != (state == "1") {
t.Error(task)
}
}
}
func TestAjaxEditNote(t *testing.T) {
ajax := mockAjax()
ajax.storageSetTask("list", "b", &task.Task{Title: "c", Note: []string{"hi", "mom"}})
w := httptest.NewRecorder()
r := httptest.NewRequest("POST", "/?id=b&compl=0", strings.NewReader(`{
"note":"hello world i like tacos"
}`))
ajax.editNote(w, r)
if v := w.Code; v != http.StatusOK {
t.Error(v)
}
if task, err := ajax.storageGetTask("list", "b"); err != nil {
t.Fatal(err)
} else if len(task.Note) != 1 {
t.Error(task.Note)
}
}
func TestAjaxEditTask(t *testing.T) {
ajax := mockAjax()
ajax.storageSetTask("list", "b", &task.Task{Title: "c", Note: []string{"hi"}})
w := httptest.NewRecorder()
r := httptest.NewRequest("POST", "/?id=b&compl=0", strings.NewReader(`{
"title": "newtitle",
"note":"hello world i like tacos"
}`))
ajax.editTask(w, r)
if v := w.Code; v != http.StatusOK {
t.Error(v)
}
if task, err := ajax.storageGetTask("list", "b"); err != nil {
t.Fatal(err)
} else if task.Title != "newtitle" {
t.Error(task)
}
}
func TestAjaxMoveTask(t *testing.T) {
ajax := mockAjax()
ajax.storageSetTask("list", "b", &task.Task{Title: "c"})
w := httptest.NewRecorder()
r := httptest.NewRequest("GET", "/?id=b&to=listB", strings.NewReader(`{}`))
ajax.moveTask(w, r)
if v := w.Code; v != http.StatusOK {
t.Error(v)
}
if task, err := ajax.storageGetTask("list", "b"); err == nil {
t.Error(err, task)
}
if task, err := ajax.storageGetTask("listB", "b"); err != nil {
t.Error(err, task)
}
}