From 5fa6fb6394e2acf8e71a73525c08dcc1d41f9ab1 Mon Sep 17 00:00:00 2001 From: sentriz Date: Wed, 3 Jul 2019 16:34:53 +0100 Subject: [PATCH] use db.New() for tests --- server/handler/handler_sub_by_folder_test.go | 8 ++--- server/handler/handler_sub_by_tags_test.go | 10 +++--- server/handler/handler_test.go | 36 ++++++++++++-------- 3 files changed, 31 insertions(+), 23 deletions(-) diff --git a/server/handler/handler_sub_by_folder_test.go b/server/handler/handler_sub_by_folder_test.go index 75952b9..613b40d 100644 --- a/server/handler/handler_sub_by_folder_test.go +++ b/server/handler/handler_sub_by_folder_test.go @@ -8,20 +8,20 @@ import ( ) func TestGetIndexes(t *testing.T) { - testQueryCases(t, testController.GetIndexes, []*queryCase{ + runQueryCases(t, testController.GetIndexes, []*queryCase{ {url.Values{}, "no_args", false}, }) } func TestGetMusicDirectory(t *testing.T) { - testQueryCases(t, testController.GetMusicDirectory, []*queryCase{ + runQueryCases(t, testController.GetMusicDirectory, []*queryCase{ {url.Values{"id": []string{"2"}}, "without_tracks", false}, {url.Values{"id": []string{"3"}}, "with_tracks", false}, }) } func TestGetAlbumList(t *testing.T) { - testQueryCases(t, testController.GetAlbumList, []*queryCase{ + runQueryCases(t, testController.GetAlbumList, []*queryCase{ {url.Values{"type": []string{"alphabeticalByArtist"}}, "alpha_artist", false}, {url.Values{"type": []string{"alphabeticalByName"}}, "alpha_name", false}, {url.Values{"type": []string{"newest"}}, "newest", false}, @@ -30,7 +30,7 @@ func TestGetAlbumList(t *testing.T) { } func TestSearchTwo(t *testing.T) { - testQueryCases(t, testController.SearchTwo, []*queryCase{ + runQueryCases(t, testController.SearchTwo, []*queryCase{ {url.Values{"query": []string{"13"}}, "q_13", false}, {url.Values{"query": []string{"ani"}}, "q_ani", false}, {url.Values{"query": []string{"cert"}}, "q_cert", false}, diff --git a/server/handler/handler_sub_by_tags_test.go b/server/handler/handler_sub_by_tags_test.go index 33637cb..06b1f02 100644 --- a/server/handler/handler_sub_by_tags_test.go +++ b/server/handler/handler_sub_by_tags_test.go @@ -6,13 +6,13 @@ import ( ) func TestGetArtists(t *testing.T) { - testQueryCases(t, testController.GetArtists, []*queryCase{ + runQueryCases(t, testController.GetArtists, []*queryCase{ {url.Values{}, "no_args", false}, }) } func TestGetArtist(t *testing.T) { - testQueryCases(t, testController.GetArtist, []*queryCase{ + runQueryCases(t, testController.GetArtist, []*queryCase{ {url.Values{"id": []string{"1"}}, "id_one", false}, {url.Values{"id": []string{"2"}}, "id_two", false}, {url.Values{"id": []string{"3"}}, "id_three", false}, @@ -20,14 +20,14 @@ func TestGetArtist(t *testing.T) { } func TestGetAlbum(t *testing.T) { - testQueryCases(t, testController.GetAlbum, []*queryCase{ + runQueryCases(t, testController.GetAlbum, []*queryCase{ {url.Values{"id": []string{"2"}}, "without_cover", false}, {url.Values{"id": []string{"3"}}, "with_cover", false}, }) } func TestGetAlbumListTwo(t *testing.T) { - testQueryCases(t, testController.GetAlbumListTwo, []*queryCase{ + runQueryCases(t, testController.GetAlbumListTwo, []*queryCase{ {url.Values{"type": []string{"alphabeticalByArtist"}}, "alpha_artist", false}, {url.Values{"type": []string{"alphabeticalByName"}}, "alpha_name", false}, {url.Values{"type": []string{"newest"}}, "newest", false}, @@ -36,7 +36,7 @@ func TestGetAlbumListTwo(t *testing.T) { } func TestSearchThree(t *testing.T) { - testQueryCases(t, testController.SearchThree, []*queryCase{ + runQueryCases(t, testController.SearchThree, []*queryCase{ {url.Values{"query": []string{"13"}}, "q_13", false}, {url.Values{"query": []string{"ani"}}, "q_ani", false}, {url.Values{"query": []string{"cert"}}, "q_cert", false}, diff --git a/server/handler/handler_test.go b/server/handler/handler_test.go index d7be352..892f3a6 100644 --- a/server/handler/handler_test.go +++ b/server/handler/handler_test.go @@ -10,23 +10,26 @@ import ( "strings" "testing" - "github.com/jinzhu/gorm" jd "github.com/josephburnett/jd/lib" + + "github.com/sentriz/gonic/db" ) var ( - testController *Controller testDataDir = "test_data" testCamelExpr = regexp.MustCompile("([a-z0-9])([A-Z])") + testDBPath = path.Join(testDataDir, "db") + testController *Controller ) func init() { - testDBPath := path.Join(testDataDir, "db") - testDB, err := gorm.Open("sqlite3", testDBPath) + db, err := db.New(testDBPath) if err != nil { log.Fatalf("error opening database: %v\n", err) } - testController = &Controller{DB: testDB} + testController = &Controller{ + DB: db, + } } type queryCase struct { @@ -35,20 +38,16 @@ type queryCase struct { listSet bool } -func testNameToPath(name string) string { - snake := testCamelExpr.ReplaceAllString(name, "${1}_${2}") - lower := strings.ToLower(snake) - relPath := strings.Replace(lower, "/", "_", -1) - return path.Join(testDataDir, relPath) -} - -func testQueryCases(t *testing.T, handler http.HandlerFunc, cases []*queryCase) { +func runQueryCases(t *testing.T, handler http.HandlerFunc, cases []*queryCase) { for _, qc := range cases { qc := qc // pin t.Run(qc.expectPath, func(t *testing.T) { t.Parallel() + // // ensure the handlers give us json qc.params.Add("f", "json") + // + // request from the handler in question req, _ := http.NewRequest("", "?"+qc.params.Encode(), nil) rr := httptest.NewRecorder() handler.ServeHTTP(rr, req) @@ -56,7 +55,14 @@ func testQueryCases(t *testing.T, handler http.HandlerFunc, cases []*queryCase) if status := rr.Code; status != http.StatusOK { t.Fatalf("didn't give a 200\n%s", body) } - absExpPath := testNameToPath(t.Name()) + // + // convert test name to query case path + snake := testCamelExpr.ReplaceAllString(t.Name(), "${1}_${2}") + lower := strings.ToLower(snake) + relPath := strings.Replace(lower, "/", "_", -1) + absExpPath := path.Join(testDataDir, relPath) + // + // read case to differ with handler result expected, err := jd.ReadJsonFile(absExpPath) if err != nil { t.Fatalf("parsing expected: %v", err) @@ -70,6 +76,8 @@ func testQueryCases(t *testing.T, handler http.HandlerFunc, cases []*queryCase) diffOpts = append(diffOpts, jd.SET) } diff := expected.Diff(actual, diffOpts...) + // + // pass or fail if len(diff) == 0 { return }