Skip to content
This repository was archived by the owner on May 19, 2020. It is now read-only.

Commit 9228c2d

Browse files
committed
Refactoring with throwing everything that sticking out badly. Tests, cleanups.
1 parent f48f491 commit 9228c2d

File tree

8 files changed

+93
-421
lines changed

8 files changed

+93
-421
lines changed

README.md

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,18 @@
1-
errors
2-
------
1+
errors-go
2+
--------
33

4-
Пакет для работы с ошибками.
4+
Mini packet to work with errors
55

6-
## Полезные методы (common)
6+
## Methods
77

88
### New(string) error
99

10-
Создаёт новую ошибку с переданным текстом
10+
Creates new error with passed message.
1111

12-
### HasErrors(interface{}) bool
13-
14-
Проверяет, есть ли в переданном аргументе ошибки. Проверяет как на error тип, так и на различные
15-
модификации, которые могут прийти: `map[string]error`, `[]error`, `gorm.Errors`, ...
16-
17-
## Gin specific
18-
19-
### Response(*gin.Context, interface{})
12+
### Newf(string) error
2013

21-
Формирует `ResponseObject` для ответ ошибочным запросом. Обрабатывает различные виды ошибок
22-
и отдаёт их соответствующим образом.
14+
Creates new error with message sprintf'ed by format with passed params.
2315

24-
### MakeResponse(interface{}) (int, *ErrorObject)
25-
26-
Формирует `ErrorObject` для предыдущего метода. Удобно пользоваться, когда ответ содержит как
27-
`data`, так и `error`
28-
29-
### InitValidator()
16+
### HasErrors(interface{}) bool
3017

31-
Биндит валидатор к gin'у
18+
Checks if error occurs in passed var.

errors.go

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,25 @@
11
package errors
22

33
import (
4-
"github.com/jinzhu/gorm"
5-
"github.com/pkg/errors"
6-
)
7-
8-
const (
9-
NilErrorCode = 0
10-
UnknownErrorCode = -1
11-
ek = "common"
12-
)
4+
"fmt"
135

14-
var (
15-
NotFound = errors.New("Route not found")
16-
NoMethod = errors.New("Method not allowed")
17-
ServerError = errors.New("Internal server error")
18-
NoDataInRequestError = errors.New("No data in requests")
19-
NoRowsAffected = errors.New("No rows affected")
20-
RecordNotFound = errors.New("record not found")
6+
"github.com/pkg/errors"
217
)
228

9+
//New returns new error with passed message
2310
func New(msg string) error {
2411
return errors.New(msg)
2512
}
2613

14+
//Newf returns new error with message sprintf'ed by format with passed params
15+
func Newf(format string, params ...interface{}) error {
16+
return New(fmt.Sprintf(format, params...))
17+
}
18+
19+
//HasErrors checks if error occurs in passed err
2720
func HasErrors(err interface{}) bool {
2821
hasErrors := false
2922
switch e := err.(type) {
30-
case gorm.Errors:
31-
hasErrors = len(e) > 0
3223
case []error:
3324
hasErrors = len(e) > 0
3425
case map[string]error:

errors_test.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package errors
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/jinzhu/gorm"
8+
"github.com/pkg/errors"
9+
"github.com/stretchr/testify/assert"
10+
)
11+
12+
type testCase struct {
13+
input interface{}
14+
hasError bool
15+
}
16+
17+
func TestHasErrors(t *testing.T) {
18+
tcs := map[string]testCase{
19+
"common error": {input: errors.New("some error"), hasError: true},
20+
"errors slice": {input: []error{errors.New("some error"), errors.New("some more error")}, hasError: true},
21+
"errors map": {input: map[string]error{"some error": errors.New("some error"), "some more error": errors.New("some more error")}, hasError: true},
22+
"gorm error": {input: gorm.Errors{errors.New("some error"), errors.New("some more error")}, hasError: true},
23+
}
24+
25+
for caseName, tc := range tcs {
26+
if !assert.Equal(t, HasErrors(tc.input), tc.hasError, caseName) {
27+
t.FailNow()
28+
}
29+
}
30+
}
31+
32+
func TestNew(t *testing.T) {
33+
errMsg := "err msg"
34+
err := New(errMsg)
35+
if !assert.Error(t, err) {
36+
t.FailNow()
37+
}
38+
if !assert.Equal(t, errMsg, err.Error()) {
39+
t.FailNow()
40+
}
41+
}
42+
43+
func TestNewf(t *testing.T) {
44+
errFormat := "err msg: %s | %s"
45+
errMsg1 := "alert 1!"
46+
errMsg2 := "alert 2!"
47+
err := Newf(errFormat, errMsg1, errMsg2)
48+
if !assert.Error(t, err) {
49+
t.FailNow()
50+
}
51+
52+
if !assert.Equal(t, fmt.Sprintf(errFormat, errMsg1, errMsg2), err.Error()) {
53+
t.FailNow()
54+
}
55+
}

gin.go

Lines changed: 0 additions & 102 deletions
This file was deleted.

gin_validator.go

Lines changed: 0 additions & 122 deletions
This file was deleted.

go.mod

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,7 @@ module github.com/microparts/errors-go
33
go 1.12
44

55
require (
6-
cloud.google.com/go v0.37.2 // indirect
7-
github.com/denisenkom/go-mssqldb v0.0.0-20190315220205-a8ed825ac853 // indirect
8-
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 // indirect
9-
github.com/gin-gonic/gin v1.3.0
10-
github.com/go-playground/locales v0.12.1 // indirect
11-
github.com/go-playground/universal-translator v0.16.0 // indirect
12-
github.com/go-sql-driver/mysql v1.4.1 // indirect
13-
github.com/gofrs/uuid v3.2.0+incompatible // indirect
14-
github.com/jinzhu/gorm v1.9.2
15-
github.com/jinzhu/inflection v0.0.0-20180308033659-04140366298a // indirect
16-
github.com/jinzhu/now v1.0.0 // indirect
17-
github.com/kr/pretty v0.1.0 // indirect
18-
github.com/leodido/go-urn v1.1.0 // indirect
19-
github.com/lib/pq v1.0.0 // indirect
20-
github.com/mattn/go-sqlite3 v1.10.0 // indirect
21-
github.com/microparts/logs-go v0.2.2
6+
github.com/jinzhu/gorm v1.9.8
227
github.com/pkg/errors v0.8.1
23-
github.com/sirupsen/logrus v1.4.0
24-
golang.org/x/net v0.0.0-20190327091125-710a502c58a2 // indirect
25-
google.golang.org/appengine v1.5.0 // indirect
26-
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
27-
gopkg.in/go-playground/assert.v1 v1.2.1 // indirect
28-
gopkg.in/go-playground/validator.v9 v9.27.0
8+
github.com/stretchr/testify v1.3.0
299
)

0 commit comments

Comments
 (0)