From 04010d1e0e1e672fa8057720dfe55de77cc3741a Mon Sep 17 00:00:00 2001 From: Rasmus Karlsson Date: Sat, 23 Apr 2022 21:10:52 +0200 Subject: [PATCH] Fix tests with custo mregexp checker --- .../resolvers/default/link_resolver_test.go | 25 +++++++--- .../resolvers/default/regexpchecker_test.go | 46 +++++++++++++++++++ 2 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 internal/resolvers/default/regexpchecker_test.go diff --git a/internal/resolvers/default/link_resolver_test.go b/internal/resolvers/default/link_resolver_test.go index b8afa382..5ec7de80 100644 --- a/internal/resolvers/default/link_resolver_test.go +++ b/internal/resolvers/default/link_resolver_test.go @@ -81,9 +81,14 @@ func TestLinkResolver(t *testing.T) { inputReq: newLinkResolverRequest(t, ctx, "GET", ts.URL, nil), inputLinkKey: ts.URL, expected: resolver.Response{ - Status: 200, - Link: ts.URL, - Tooltip: `.*`, + Status: 200, + Link: ts.URL, + Tooltip: `
+ +/ title
+ + +URL: http://127\.0\.0\.1:[\d]{2,7}
`, }, }, } @@ -109,9 +114,17 @@ func TestLinkResolver(t *testing.T) { unescapedTooltip, err := url.QueryUnescape(response.Tooltip) c.Assert(err, qt.IsNil) - fmt.Println(unescapedTooltip) - fmt.Println(test.expected.Tooltip) - c.Assert("asd\nasd", qt.Matches, regexp.MustCompile(`.*`)) + if test.expected.Tooltip != "" { + c.Assert(unescapedTooltip, MatchesRegexp, regexp.MustCompile(test.expected.Tooltip), qt.Commentf("%s does not match %s", unescapedTooltip, test.expected.Tooltip)) + } + if test.expected.Message != "" { + c.Assert(response.Message, qt.Matches, test.expected.Message, qt.Commentf("%s does not match %s", response.Message, test.expected.Message)) + } + + c.Assert(pool.ExpectationsWereMet(), qt.IsNil) + }) + } + }) c.Assert(pool.ExpectationsWereMet(), qt.IsNil) }) diff --git a/internal/resolvers/default/regexpchecker_test.go b/internal/resolvers/default/regexpchecker_test.go new file mode 100644 index 00000000..f76f36ff --- /dev/null +++ b/internal/resolvers/default/regexpchecker_test.go @@ -0,0 +1,46 @@ +package defaultresolver + +import ( + "errors" + "fmt" + "regexp" + + qt "github.com/frankban/quicktest" +) + +type argNames []string + +func (a argNames) ArgNames() []string { + return a +} + +var MatchesRegexp qt.Checker = ®expChecker{ + argNames: []string{"got value", "regexp"}, +} + +type regexpChecker struct { + argNames +} + +// match checks that the given error message matches the given pattern. +func match(got string, pattern *regexp.Regexp, msg string, note func(key string, value interface{})) error { + if pattern.MatchString(got) { + return nil + } + + return errors.New(msg) +} + +func (c *regexpChecker) Check(got interface{}, args []interface{}, note func(key string, value interface{})) error { + switch pattern := args[0].(type) { + case *regexp.Regexp: + switch v := got.(type) { + case string: + return match(v, pattern, "value does not match regexp", note) + case fmt.Stringer: + return match(v.String(), pattern, "value.String() does not match regexp", note) + } + return qt.BadCheckf("value is not a string or a fmt.Stringer") + } + return qt.BadCheckf("pattern is not a *regexp.Regexp") +}