Skip to content

Commit

Permalink
總之先寫個測試
Browse files Browse the repository at this point in the history
其實這個測試到底對不對我也不知道XD

這不是單元測試,應該算是功能測試。

基本上就是先準備好一些資料,然後用 `httptest.ResponseRecorder` 發假的
http request,看看它正常情況下回傳的值是不是也很正常。
  • Loading branch information
Ronmi committed Jul 11, 2016
1 parent 5183fa0 commit 88d90f8
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 0 deletions.
40 changes: 40 additions & 0 deletions cmd/xchg/init_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package main

import (
"database/sql"
"log"

"git.ronmi.tw/ronmi/sdm"
_ "github.com/mattn/go-sqlite3"
)

var (
db *sql.DB
mgr *sdm.Manager
presetData []Order
)

func init() {
var err error
db, err = sql.Open("sqlite3", ":memory:")
if err != nil {
log.Fatalf("Cannot connect to database: %s", err)
}

initTable(db)
mgr = sdm.New(db)

presetData = []Order{
Order{1468248039, 100, -100, "USD"},
Order{1468248040, -50, 51, "USD"},
Order{1468248041, 100, -100, "JPY"},
Order{1468248042, -50, 51, "JPY"},
}

// create preset data
for _, data := range presetData {
if _, err := mgr.Insert("orders", data); err != nil {
log.Fatalf("Cannot create data %#v: %s", data, err)
}
}
}
53 changes: 53 additions & 0 deletions cmd/xchg/listall_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package main

import (
"encoding/json"
"net/http"
"testing"

"github.com/Patrolavia/jsonapi"
)

func TestListAll(t *testing.T) {
h := &listall{mgr}

resp, err := jsonapi.HandlerTest(h.Handle).Get("/api/listall", "")

if err != nil {
t.Fatalf("unexpected error occured when testing listall: %s", err)
}

if resp.Code != http.StatusOK {
t.Fatalf("unexpected error occured when testing listall with status code %d: %s", resp.Code, resp.Body.String())
}

var orders []Order
if resp.Body == nil {
t.Fatal(resp)
}
if err := json.Unmarshal(resp.Body.Bytes(), &orders); err != nil {
t.Fatalf("cannot encode returned data from listall: %s", err)
}

// too lazy to use smart algorithm XD
if len(orders) != len(presetData) {
t.Errorf("listall: expected %d records, got %d", len(presetData), len(orders))
}

counter := make(map[Order]int)
for _, data := range presetData {
counter[data] = 0
}

for _, o := range orders {
cnt, ok := counter[o]
if !ok {
t.Errorf("listall: unknown order: %#v", o)
}
if cnt > 0 {
t.Errorf("listall: duplicated order: %#v", o)
}
counter[o] = 1
}

}

0 comments on commit 88d90f8

Please sign in to comment.