From 4d40420e6fd5d55556c4cdc63d845f95f3147e67 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Mon, 3 Feb 2020 15:38:33 +0100 Subject: [PATCH] add missing testing for query command --- commands/query_test.go | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 commands/query_test.go diff --git a/commands/query_test.go b/commands/query_test.go new file mode 100644 index 0000000..3f3f0b2 --- /dev/null +++ b/commands/query_test.go @@ -0,0 +1,46 @@ +package commands + +import ( + "flag" + "strings" + "testing" + + "github.com/kami-zh/go-capturer" + "github.com/urfave/cli/v2" +) + +type TestQueryData struct { + urlString string + QueryField string + expected string +} + +func TestQuery(t *testing.T) { + urlString := "postgres://user:pass@host.com:5432/path/to?key=value&other=other%20value#some-fragment" + + tables := []TestQueryData{ + { + urlString: urlString, + expected: "key=value&other=other%20value", + }, + { + urlString: urlString, + QueryField: "other", + expected: "other value", + }, + } + + for _, table := range tables { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + set.String("url", table.urlString, "test url") + set.String("query-field", table.QueryField, "index") + + c := cli.NewContext(app, set, nil) + result := strings.TrimSpace(capturer.CaptureStdout(func() { Query(c) })) + + if result != table.expected { + t.Fatalf("URL query `%v`, should be `%v`", result, table.expected) + } + } +}