@@ -5,75 +5,66 @@ import (
5
5
"testing"
6
6
7
7
"github.com/jarcoal/httpmock"
8
- "github.com/stretchr/testify/assert "
8
+ "github.com/stretchr/testify/require "
9
9
)
10
10
11
- func Test_getLocation (t * testing.T ) {
11
+ func TestGetLocation (t * testing.T ) {
12
12
httpmock .Activate ()
13
13
defer httpmock .DeactivateAndReset ()
14
14
15
- t .Run ("running correct response" , func (t * testing.T ) {
16
- for i := 0 ; i < len (geoipURLs ); i ++ {
17
- httpmock .RegisterResponder ("GET" , geoipURLs [i ],
15
+ require := require .New (t )
16
+
17
+ t .Run ("test valid response" , func (t * testing.T ) {
18
+ l := Location {
19
+ Continent : "Africa" ,
20
+ Country : "Egypt" ,
21
+ City : "Cairo" ,
22
+ }
23
+
24
+ for _ , url := range geoipURLs {
25
+ httpmock .RegisterResponder ("GET" , url ,
18
26
func (req * http.Request ) (* http.Response , error ) {
19
- l := Location {
20
- Continent : "Africa" ,
21
- Country : "Egypt" ,
22
- City : "Cairo" ,
23
- }
24
- resp , err := httpmock .NewJsonResponse (200 , l )
25
- return resp , err
27
+ return httpmock .NewJsonResponse (200 , l )
26
28
},
27
29
)
28
- value , err := getLocation (geoipURLs [i ])
29
- assert .Equal (t , nil , err )
30
- assert .Equal (t , "Egypt" , value .Country )
31
- assert .Equal (t , "Africa" , value .Continent )
32
- assert .Equal (t , "Cairo" , value .City )
33
- if err != nil {
34
- t .Errorf ("got %v" , err )
35
- }
30
+
31
+ resp , err := getLocation (url )
32
+ require .NoError (err )
33
+ require .Equal (resp , l )
36
34
}
37
35
})
38
36
39
- t .Run ("asserting wrong response code" , func (t * testing.T ) {
40
- for i := 0 ; i < len (geoipURLs ); i ++ {
41
- httpmock .RegisterResponder ("GET" , geoipURLs [i ],
37
+ l := Location {
38
+ Continent : "Unknown" ,
39
+ Country : "Unknown" ,
40
+ City : "Unknown" ,
41
+ }
42
+
43
+ t .Run ("test 404 status code" , func (t * testing.T ) {
44
+ for _ , url := range geoipURLs {
45
+ httpmock .RegisterResponder ("GET" , url ,
42
46
func (req * http.Request ) (* http.Response , error ) {
43
- l := Location {
44
- Continent : "Africa" ,
45
- Country : "Egypt" ,
46
- City : "Cairo" ,
47
- }
48
- resp , err := httpmock .NewJsonResponse (404 , l )
49
- return resp , err
47
+ return httpmock .NewJsonResponse (404 , l )
50
48
},
51
49
)
52
- value , err := getLocation (geoipURLs [i ])
53
- assert .NotEqual (t , err , nil )
54
- assert .Equal (t , "Unknown" , value .Country )
55
- assert .Equal (t , "Unknown" , value .Continent )
56
- assert .Equal (t , "Unknown" , value .City )
50
+
51
+ resp , err := getLocation (url )
52
+ require .Error (err )
53
+ require .Equal (resp , l )
57
54
}
58
55
})
59
56
60
- t .Run ("asserting sending wrong response data" , func (t * testing.T ) {
61
- for i := 0 ; i < len ( geoipURLs ); i ++ {
62
- httpmock .RegisterResponder ("GET" , geoipURLs [ i ] ,
57
+ t .Run ("test invalid response data" , func (t * testing.T ) {
58
+ for _ , url := range geoipURLs {
59
+ httpmock .RegisterResponder ("GET" , url ,
63
60
func (req * http.Request ) (* http.Response , error ) {
64
- l := Location {
65
- City : "Cairo" ,
66
- }
67
- resp , err := httpmock .NewJsonResponse (200 , l .City )
61
+ resp , err := httpmock .NewJsonResponse (200 , "Cairo" )
68
62
return resp , err
69
63
},
70
64
)
71
- value , err := getLocation (geoipURLs [i ])
72
- assert .NotEqual (t , err , nil )
73
- assert .Equal (t , "Unknown" , value .Country )
74
- assert .Equal (t , "Unknown" , value .Continent )
75
- assert .Equal (t , "Unknown" , value .City )
65
+ resp , err := getLocation (url )
66
+ require .Error (err )
67
+ require .Equal (resp , l )
76
68
}
77
69
})
78
-
79
70
}
0 commit comments