Skip to content

Commit

Permalink
Add path and values to onWarning callback (#2)
Browse files Browse the repository at this point in the history
  • Loading branch information
ryannjohnson-range committed Mar 5, 2021
1 parent 4e9b8e1 commit 0b8d7ec
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 12 deletions.
8 changes: 4 additions & 4 deletions slack.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ type Client struct {
debug bool
log ilogger
httpclient httpClient
onWarning func(*Warning)
onWarning func(w *Warning, path string, values url.Values)
}

// Option defines an option for a Client
Expand Down Expand Up @@ -91,7 +91,7 @@ func OptionLog(l logger) func(*Client) {
}

// OptionOnWarning set callback for response warnings.
func OptionOnWarning(fn func(*Warning)) func(*Client) {
func OptionOnWarning(fn func(w *Warning, path string, values url.Values)) func(*Client) {
return func(c *Client) {
c.onWarning = fn
}
Expand Down Expand Up @@ -164,7 +164,7 @@ func (api *Client) postMethod(ctx context.Context, path string, values url.Value
err := postForm(ctx, api.httpclient, api.endpoint+path, values, intf, api)
if w, ok := intf.(warner); ok {
if warning := w.Warn(); warning != nil && api.onWarning != nil {
api.onWarning(warning)
api.onWarning(warning, path, values)
}
}
return err
Expand All @@ -175,7 +175,7 @@ func (api *Client) getMethod(ctx context.Context, path string, values url.Values
err := getResource(ctx, api.httpclient, api.endpoint+path, values, intf, api)
if w, ok := intf.(warner); ok {
if warning := w.Warn(); warning != nil && api.onWarning != nil {
api.onWarning(warning)
api.onWarning(warning, path, values)
}
}
return err
Expand Down
33 changes: 25 additions & 8 deletions views_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ func TestSlack_OpenView(t *testing.T) {
rawResp: `{
"ok": false,
"error": "dummy_error_from_slack",
"warning": "missing_charset",
"response_metadata": {
"warnings": [
"missing_charset"
Expand All @@ -78,8 +79,9 @@ func TestSlack_OpenView(t *testing.T) {
}`,
expectedResp: &ViewResponse{
SlackResponse{
Ok: false,
Error: dummySlackErr.Error(),
Ok: false,
Error: dummySlackErr.Error(),
Warning: "missing_charset",
ResponseMetadata: ResponseMetadata{
Messages: []string{"[WARN] A Content-Type HTTP header was presented but did not declare a charset, such as a 'utf-8'"},
Warnings: []string{"missing_charset"},
Expand Down Expand Up @@ -206,6 +208,9 @@ func TestSlack_OpenView(t *testing.T) {
if resp == nil || c.expectedResp == nil {
return
}
if resp.Warning != c.expectedResp.Warning {
t.Fatalf("expected:\n\t%v\n but got:\n\t%v\n", c.expectedResp.Warning, resp.Warning)
}
if !reflect.DeepEqual(resp.ResponseMetadata.Messages, c.expectedResp.ResponseMetadata.Messages) {
t.Fatalf("expected:\n\t%v\n but got:\n\t%v\n", c.expectedResp.ResponseMetadata.Messages, resp.ResponseMetadata.Messages)
}
Expand Down Expand Up @@ -240,6 +245,7 @@ func TestSlack_View_PublishView(t *testing.T) {
rawResp: `{
"ok": false,
"error": "dummy_error_from_slack",
"warning": "missing_charset",
"response_metadata": {
"warnings": [
"missing_charset"
Expand All @@ -251,8 +257,9 @@ func TestSlack_View_PublishView(t *testing.T) {
}`,
expectedResp: &ViewResponse{
SlackResponse{
Ok: false,
Error: dummySlackErr.Error(),
Ok: false,
Error: dummySlackErr.Error(),
Warning: "missing_charset",
ResponseMetadata: ResponseMetadata{
Messages: []string{"[WARN] A Content-Type HTTP header was presented but did not declare a charset, such as a 'utf-8'"},
Warnings: []string{"missing_charset"},
Expand Down Expand Up @@ -365,6 +372,9 @@ func TestSlack_View_PublishView(t *testing.T) {
if resp == nil || c.expectedResp == nil {
return
}
if resp.Warning != c.expectedResp.Warning {
t.Fatalf("expected:\n\t%v\n but got:\n\t%v\n", c.expectedResp.Warning, resp.Warning)
}
if !reflect.DeepEqual(resp.ResponseMetadata.Messages, c.expectedResp.ResponseMetadata.Messages) {
t.Fatalf("expected:\n\t%v\n but got:\n\t%v\n", c.expectedResp.ResponseMetadata.Messages, resp.ResponseMetadata.Messages)
}
Expand Down Expand Up @@ -399,6 +409,7 @@ func TestSlack_PushView(t *testing.T) {
rawResp: `{
"ok": false,
"error": "dummy_error_from_slack",
"warning": "missing_charset",
"response_metadata": {
"warnings": [
"missing_charset"
Expand All @@ -410,8 +421,9 @@ func TestSlack_PushView(t *testing.T) {
}`,
expectedResp: &ViewResponse{
SlackResponse{
Ok: false,
Error: dummySlackErr.Error(),
Ok: false,
Error: dummySlackErr.Error(),
Warning: "missing_charset",
ResponseMetadata: ResponseMetadata{
Messages: []string{"[WARN] A Content-Type HTTP header was presented but did not declare a charset, such as a 'utf-8'"},
Warnings: []string{"missing_charset"},
Expand Down Expand Up @@ -574,6 +586,7 @@ func TestSlack_UpdateView(t *testing.T) {
rawResp: `{
"ok": false,
"error": "dummy_error_from_slack",
"warning": "missing_charset",
"response_metadata": {
"warnings": [
"missing_charset"
Expand All @@ -585,8 +598,9 @@ func TestSlack_UpdateView(t *testing.T) {
}`,
expectedResp: &ViewResponse{
SlackResponse{
Ok: false,
Error: dummySlackErr.Error(),
Ok: false,
Error: dummySlackErr.Error(),
Warning: "missing_charset",
ResponseMetadata: ResponseMetadata{
Messages: []string{"[WARN] A Content-Type HTTP header was presented but did not declare a charset, such as a 'utf-8'"},
Warnings: []string{"missing_charset"},
Expand Down Expand Up @@ -713,6 +727,9 @@ func TestSlack_UpdateView(t *testing.T) {
if resp == nil || c.expectedResp == nil {
return
}
if resp.Warning != c.expectedResp.Warning {
t.Fatalf("expected:\n\t%v\n but got:\n\t%v\n", c.expectedResp.Warning, resp.Warning)
}
if !reflect.DeepEqual(resp.ResponseMetadata.Messages, c.expectedResp.ResponseMetadata.Messages) {
t.Fatalf("expected:\n\t%v\n but got:\n\t%v\n", c.expectedResp.ResponseMetadata.Messages, resp.ResponseMetadata.Messages)
}
Expand Down

0 comments on commit 0b8d7ec

Please sign in to comment.