Skip to content

Commit c6ac298

Browse files
nicnicknickyquii
authored andcommitted
http-server: Refactor for readability, table driven tests (quii#281)
Signed-off-by: nicnicknicky <5416460+nicnicknicky@users.noreply.github.com>
1 parent 27fa759 commit c6ac298

File tree

4 files changed

+136
-104
lines changed

4 files changed

+136
-104
lines changed

http-server/v2/server_test.go

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,34 +25,42 @@ func TestGETPlayers(t *testing.T) {
2525
}
2626
server := &PlayerServer{&store}
2727

28-
t.Run("returns Pepper's score", func(t *testing.T) {
29-
request := newGetScoreRequest("Pepper")
30-
response := httptest.NewRecorder()
31-
32-
server.ServeHTTP(response, request)
33-
34-
assertStatus(t, response.Code, http.StatusOK)
35-
assertResponseBody(t, response.Body.String(), "20")
36-
})
37-
38-
t.Run("returns Floyd's score", func(t *testing.T) {
39-
request := newGetScoreRequest("Floyd")
40-
response := httptest.NewRecorder()
41-
42-
server.ServeHTTP(response, request)
43-
44-
assertStatus(t, response.Code, http.StatusOK)
45-
assertResponseBody(t, response.Body.String(), "10")
46-
})
47-
48-
t.Run("returns 404 on missing players", func(t *testing.T) {
49-
request := newGetScoreRequest("Apollo")
50-
response := httptest.NewRecorder()
28+
tests := []struct {
29+
name string
30+
player string
31+
expectedHTTPStatus int
32+
expectedScore string
33+
}{
34+
{
35+
name: "Returns Pepper's score",
36+
player: "Pepper",
37+
expectedHTTPStatus: http.StatusOK,
38+
expectedScore: "20",
39+
},
40+
{
41+
name: "Returns Floyd's score",
42+
player: "Floyd",
43+
expectedHTTPStatus: http.StatusOK,
44+
expectedScore: "10",
45+
},
46+
{
47+
name: "Returns 404 on missing players",
48+
player: "Apollo",
49+
expectedHTTPStatus: http.StatusNotFound,
50+
expectedScore: "0",
51+
},
52+
}
53+
for _, tt := range tests {
54+
t.Run(tt.name, func(t *testing.T) {
55+
request := newGetScoreRequest(tt.player)
56+
response := httptest.NewRecorder()
5157

52-
server.ServeHTTP(response, request)
58+
server.ServeHTTP(response, request)
5359

54-
assertStatus(t, response.Code, http.StatusNotFound)
55-
})
60+
assertStatus(t, response.Code, tt.expectedHTTPStatus)
61+
assertResponseBody(t, response.Body.String(), tt.expectedScore)
62+
})
63+
}
5664
}
5765

5866
func assertStatus(t *testing.T, got, want int) {

http-server/v3/server_test.go

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,34 +25,42 @@ func TestGETPlayers(t *testing.T) {
2525
}
2626
server := &PlayerServer{&store}
2727

28-
t.Run("returns Pepper's score", func(t *testing.T) {
29-
request := newGetScoreRequest("Pepper")
30-
response := httptest.NewRecorder()
31-
32-
server.ServeHTTP(response, request)
33-
34-
assertStatus(t, response.Code, http.StatusOK)
35-
assertResponseBody(t, response.Body.String(), "20")
36-
})
37-
38-
t.Run("returns Floyd's score", func(t *testing.T) {
39-
request := newGetScoreRequest("Floyd")
40-
response := httptest.NewRecorder()
41-
42-
server.ServeHTTP(response, request)
43-
44-
assertStatus(t, response.Code, http.StatusOK)
45-
assertResponseBody(t, response.Body.String(), "10")
46-
})
47-
48-
t.Run("returns 404 on missing players", func(t *testing.T) {
49-
request := newGetScoreRequest("Apollo")
50-
response := httptest.NewRecorder()
28+
tests := []struct {
29+
name string
30+
player string
31+
expectedHTTPStatus int
32+
expectedScore string
33+
}{
34+
{
35+
name: "Returns Pepper's score",
36+
player: "Pepper",
37+
expectedHTTPStatus: http.StatusOK,
38+
expectedScore: "20",
39+
},
40+
{
41+
name: "Returns Floyd's score",
42+
player: "Floyd",
43+
expectedHTTPStatus: http.StatusOK,
44+
expectedScore: "10",
45+
},
46+
{
47+
name: "Returns 404 on missing players",
48+
player: "Apollo",
49+
expectedHTTPStatus: http.StatusNotFound,
50+
expectedScore: "0",
51+
},
52+
}
53+
for _, tt := range tests {
54+
t.Run(tt.name, func(t *testing.T) {
55+
request := newGetScoreRequest(tt.player)
56+
response := httptest.NewRecorder()
5157

52-
server.ServeHTTP(response, request)
58+
server.ServeHTTP(response, request)
5359

54-
assertStatus(t, response.Code, http.StatusNotFound)
55-
})
60+
assertStatus(t, response.Code, tt.expectedHTTPStatus)
61+
assertResponseBody(t, response.Body.String(), tt.expectedScore)
62+
})
63+
}
5664
}
5765

5866
func TestStoreWins(t *testing.T) {

http-server/v4/server_test.go

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -31,34 +31,42 @@ func TestGETPlayers(t *testing.T) {
3131
}
3232
server := &PlayerServer{&store}
3333

34-
t.Run("returns Pepper's score", func(t *testing.T) {
35-
request := newGetScoreRequest("Pepper")
36-
response := httptest.NewRecorder()
37-
38-
server.ServeHTTP(response, request)
39-
40-
assertStatus(t, response.Code, http.StatusOK)
41-
assertResponseBody(t, response.Body.String(), "20")
42-
})
43-
44-
t.Run("returns Floyd's score", func(t *testing.T) {
45-
request := newGetScoreRequest("Floyd")
46-
response := httptest.NewRecorder()
47-
48-
server.ServeHTTP(response, request)
49-
50-
assertStatus(t, response.Code, http.StatusOK)
51-
assertResponseBody(t, response.Body.String(), "10")
52-
})
53-
54-
t.Run("returns 404 on missing players", func(t *testing.T) {
55-
request := newGetScoreRequest("Apollo")
56-
response := httptest.NewRecorder()
34+
tests := []struct {
35+
name string
36+
player string
37+
expectedHTTPStatus int
38+
expectedScore string
39+
}{
40+
{
41+
name: "Returns Pepper's score",
42+
player: "Pepper",
43+
expectedHTTPStatus: http.StatusOK,
44+
expectedScore: "20",
45+
},
46+
{
47+
name: "Returns Floyd's score",
48+
player: "Floyd",
49+
expectedHTTPStatus: http.StatusOK,
50+
expectedScore: "10",
51+
},
52+
{
53+
name: "Returns 404 on missing players",
54+
player: "Apollo",
55+
expectedHTTPStatus: http.StatusNotFound,
56+
expectedScore: "0",
57+
},
58+
}
59+
for _, tt := range tests {
60+
t.Run(tt.name, func(t *testing.T) {
61+
request := newGetScoreRequest(tt.player)
62+
response := httptest.NewRecorder()
5763

58-
server.ServeHTTP(response, request)
64+
server.ServeHTTP(response, request)
5965

60-
assertStatus(t, response.Code, http.StatusNotFound)
61-
})
66+
assertStatus(t, response.Code, tt.expectedHTTPStatus)
67+
assertResponseBody(t, response.Body.String(), tt.expectedScore)
68+
})
69+
}
6270
}
6371

6472
func TestStoreWins(t *testing.T) {

http-server/v5/server_test.go

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -31,34 +31,42 @@ func TestGETPlayers(t *testing.T) {
3131
}
3232
server := &PlayerServer{&store}
3333

34-
t.Run("returns Pepper's score", func(t *testing.T) {
35-
request := newGetScoreRequest("Pepper")
36-
response := httptest.NewRecorder()
37-
38-
server.ServeHTTP(response, request)
39-
40-
assertStatus(t, response.Code, http.StatusOK)
41-
assertResponseBody(t, response.Body.String(), "20")
42-
})
43-
44-
t.Run("returns Floyd's score", func(t *testing.T) {
45-
request := newGetScoreRequest("Floyd")
46-
response := httptest.NewRecorder()
47-
48-
server.ServeHTTP(response, request)
49-
50-
assertStatus(t, response.Code, http.StatusOK)
51-
assertResponseBody(t, response.Body.String(), "10")
52-
})
53-
54-
t.Run("returns 404 on missing players", func(t *testing.T) {
55-
request := newGetScoreRequest("Apollo")
56-
response := httptest.NewRecorder()
34+
tests := []struct {
35+
name string
36+
player string
37+
expectedHTTPStatus int
38+
expectedScore string
39+
}{
40+
{
41+
name: "Returns Pepper's score",
42+
player: "Pepper",
43+
expectedHTTPStatus: http.StatusOK,
44+
expectedScore: "20",
45+
},
46+
{
47+
name: "Returns Floyd's score",
48+
player: "Floyd",
49+
expectedHTTPStatus: http.StatusOK,
50+
expectedScore: "10",
51+
},
52+
{
53+
name: "Returns 404 on missing players",
54+
player: "Apollo",
55+
expectedHTTPStatus: http.StatusNotFound,
56+
expectedScore: "0",
57+
},
58+
}
59+
for _, tt := range tests {
60+
t.Run(tt.name, func(t *testing.T) {
61+
request := newGetScoreRequest(tt.player)
62+
response := httptest.NewRecorder()
5763

58-
server.ServeHTTP(response, request)
64+
server.ServeHTTP(response, request)
5965

60-
assertStatus(t, response.Code, http.StatusNotFound)
61-
})
66+
assertStatus(t, response.Code, tt.expectedHTTPStatus)
67+
assertResponseBody(t, response.Body.String(), tt.expectedScore)
68+
})
69+
}
6270
}
6371

6472
func TestStoreWins(t *testing.T) {

0 commit comments

Comments
 (0)