func TestCreateNote(t *testing.T) { note := tessernote.Note{Body: "body"} bytes, err := json.Marshal(note) if err != nil { t.Fatal(err) } w := httptest.NewRecorder() r, err := http.NewRequest("POST", "https://tessernote.appspot.com"+NotesURL, strings.NewReader(string(bytes))) if err != nil { t.Fatal(err) } // create a test notebook notebook := new(tessernote.Notebook) c, err := appenginetesting.NewContext(nil) defer c.Close() if err != nil { t.Fatal(err) } key := datastore.NewIncompleteKey(c, "Notebook", nil) key, err = datastore.Put(c, key, notebook) if err != nil { t.Fatal(err) } notebook.ID = key.Encode() CreateNote(w, r, c, notebook) // check note was added notes, err := notebook.Notes(c) if err != nil { t.Fatal(err) } if len(notes) != 1 { t.Fatalf("expected=%d actual=%d", 1, len(notes)) } if notes[0].Body != note.Body { t.Fatalf("expected=%s actual=%s", notes[0].Body, note.Body) } // check response ID is the same response := []byte(w.Body.String()) err = json.Unmarshal(response, note) if err != nil { t.Fatal(err, string(response)) } if notes[0].ID != note.ID { t.Fatalf("expected=%s actual=%s", notes[0].ID, note.ID) } }