From 5e9e8a57f20f918875bd8449dafd3ee04181327c Mon Sep 17 00:00:00 2001 From: Ambrose Chua Date: Sun, 1 Sep 2019 01:00:53 +0800 Subject: [PATCH] Add GetUser* tests --- postgres/1_initial.up.sql | 2 +- user_test.go | 61 ++++++++++++++++++++++++++++++++++----- 2 files changed, 55 insertions(+), 8 deletions(-) diff --git a/postgres/1_initial.up.sql b/postgres/1_initial.up.sql index 4d80275..2e7410c 100644 --- a/postgres/1_initial.up.sql +++ b/postgres/1_initial.up.sql @@ -1,7 +1,7 @@ CREATE TABLE IF NOT EXISTS "user" ( id BYTEA PRIMARY KEY, - username VARCHAR(63555) UNIQUE, + username VARCHAR(63555), bio VARCHAR(63535) DEFAULT '', profile_pic VARCHAR(63535) DEFAULT '', first_name VARCHAR(65535) DEFAULT '', diff --git a/user_test.go b/user_test.go index d5b1ad6..854e320 100644 --- a/user_test.go +++ b/user_test.go @@ -6,7 +6,7 @@ import ( "bytes" "database/sql" "encoding/json" - //"github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp" "net/http" "net/http/httptest" "testing" @@ -19,6 +19,8 @@ func TestUser(t *testing.T) { r := NewRouter(h) t.Run("Create", testCreateUser(db, r)) + t.Run("GetUserByPhone", testGetUserByPhone(db, r)) + t.Run("GetUser", testGetUser(db, r)) } func testCreateUser(db *sql.DB, router http.Handler) func(t *testing.T) { @@ -40,10 +42,55 @@ func testCreateUser(db *sql.DB, router http.Handler) func(t *testing.T) { } } -/* - got, want := new(User), created - json.NewDecoder(w.Body).Decode(got) - if diff := cmp.Diff(got, want); len(diff) != 0 { - t.Error(diff) +func testGetUserByPhone(db *sql.DB, router http.Handler) func(t *testing.T) { + return func(t *testing.T) { + mockUser := &User{ + PhoneNumber: "+65 9999 9999", + FirstName: "Test", + LastName: "User", + } + + w := httptest.NewRecorder() + r := httptest.NewRequest("GET", "/user?phone_number=%2B6599999999", nil) + + router.ServeHTTP(w, r) + assertCode(t, w, 200) + + got, want := new(User), mockUser + json.NewDecoder(w.Body).Decode(got) + if got.FirstName != want.FirstName || got.LastName != want.LastName || got.PhoneNumber != want.PhoneNumber { + t.Errorf("Want user %v, got %v", want, got) + } } -*/ +} + +func testGetUser(db *sql.DB, router http.Handler) func(t *testing.T) { + return func(t *testing.T) { + mockUser := &User{ + PhoneNumber: "+65 88888888", + FirstName: "User", + LastName: "Test", + } + cb, _ := json.Marshal(mockUser) + + cw := httptest.NewRecorder() + cr := httptest.NewRequest("POST", "/user", bytes.NewBuffer(cb)) + + router.ServeHTTP(cw, cr) + + createdUser := new(User) + json.NewDecoder(cw.Body).Decode(createdUser) + + w := httptest.NewRecorder() + r := httptest.NewRequest("GET", "/user/id/"+createdUser.ID, nil) + + router.ServeHTTP(w, r) + assertCode(t, w, 200) + + got, want := new(User), createdUser + json.NewDecoder(w.Body).Decode(got) + if diff := cmp.Diff(got, want); len(diff) != 0 { + t.Error(diff) + } + } +}