use package level require/assert in tests (#382)

This commit is contained in:
Senan Kelly
2023-09-25 19:39:39 +02:00
committed by GitHub
parent 548ab4f51c
commit 39fb8e7d54
8 changed files with 337 additions and 372 deletions

View File

@@ -16,16 +16,16 @@ func TestArtistGetInfo(t *testing.T) {
t.Parallel()
// arrange
require := require.New(t)
client := Client{mockclient.New(t, func(w http.ResponseWriter, r *http.Request) {
require.Equal(http.MethodGet, r.Method)
require.Equal(url.Values{
require.Equal(t, http.MethodGet, r.Method)
require.Equal(t, url.Values{
"method": []string{"artist.getInfo"},
"api_key": []string{"apiKey1"},
"artist": []string{"Artist 1"},
}, r.URL.Query())
require.Equal("/2.0/", r.URL.Path)
require.Equal(baseURL, "https://"+r.Host+r.URL.Path)
require.Equal(t, "/2.0/", r.URL.Path)
require.Equal(t, baseURL, "https://"+r.Host+r.URL.Path)
w.WriteHeader(http.StatusOK)
w.Write(mockclient.ArtistGetInfoResponse)
@@ -35,8 +35,8 @@ func TestArtistGetInfo(t *testing.T) {
actual, err := client.ArtistGetInfo("apiKey1", "Artist 1")
// assert
require.NoError(err)
require.Equal(Artist{
require.NoError(t, err)
require.Equal(t, Artist{
XMLName: xml.Name{
Local: "artist",
},
@@ -98,16 +98,16 @@ func TestArtistGetInfoClientRequestFails(t *testing.T) {
t.Parallel()
// arrange
require := require.New(t)
client := Client{mockclient.New(t, func(w http.ResponseWriter, r *http.Request) {
require.Equal(http.MethodGet, r.Method)
require.Equal(url.Values{
require.Equal(t, http.MethodGet, r.Method)
require.Equal(t, url.Values{
"method": []string{"artist.getInfo"},
"api_key": []string{"apiKey1"},
"artist": []string{"Artist 1"},
}, r.URL.Query())
require.Equal("/2.0/", r.URL.Path)
require.Equal(baseURL, "https://"+r.Host+r.URL.Path)
require.Equal(t, "/2.0/", r.URL.Path)
require.Equal(t, baseURL, "https://"+r.Host+r.URL.Path)
w.WriteHeader(http.StatusInternalServerError)
})}
@@ -116,24 +116,24 @@ func TestArtistGetInfoClientRequestFails(t *testing.T) {
actual, err := client.ArtistGetInfo("apiKey1", "Artist 1")
// assert
require.Error(err)
require.Zero(actual)
require.Error(t, err)
require.Zero(t, actual)
}
func TestArtistGetTopTracks(t *testing.T) {
t.Parallel()
// arrange
require := require.New(t)
client := Client{mockclient.New(t, func(w http.ResponseWriter, r *http.Request) {
require.Equal(http.MethodGet, r.Method)
require.Equal(url.Values{
require.Equal(t, http.MethodGet, r.Method)
require.Equal(t, url.Values{
"method": []string{"artist.getTopTracks"},
"api_key": []string{"apiKey1"},
"artist": []string{"artist1"},
}, r.URL.Query())
require.Equal("/2.0/", r.URL.Path)
require.Equal(baseURL, "https://"+r.Host+r.URL.Path)
require.Equal(t, "/2.0/", r.URL.Path)
require.Equal(t, baseURL, "https://"+r.Host+r.URL.Path)
w.WriteHeader(http.StatusOK)
w.Write(mockclient.ArtistGetTopTracksResponse)
@@ -143,8 +143,8 @@ func TestArtistGetTopTracks(t *testing.T) {
actual, err := client.ArtistGetTopTracks("apiKey1", "artist1")
// assert
require.NoError(err)
require.Equal(TopTracks{
require.NoError(t, err)
require.Equal(t, TopTracks{
Artist: "Artist 1",
XMLName: xml.Name{
Local: "toptracks",
@@ -194,16 +194,16 @@ func TestArtistGetTopTracks_clientRequestFails(t *testing.T) {
t.Parallel()
// arrange
require := require.New(t)
client := Client{mockclient.New(t, func(w http.ResponseWriter, r *http.Request) {
require.Equal(http.MethodGet, r.Method)
require.Equal(url.Values{
require.Equal(t, http.MethodGet, r.Method)
require.Equal(t, url.Values{
"method": []string{"artist.getTopTracks"},
"api_key": []string{"apiKey1"},
"artist": []string{"artist1"},
}, r.URL.Query())
require.Equal("/2.0/", r.URL.Path)
require.Equal(baseURL, "https://"+r.Host+r.URL.Path)
require.Equal(t, "/2.0/", r.URL.Path)
require.Equal(t, baseURL, "https://"+r.Host+r.URL.Path)
w.WriteHeader(http.StatusInternalServerError)
})}
@@ -212,24 +212,24 @@ func TestArtistGetTopTracks_clientRequestFails(t *testing.T) {
actual, err := client.ArtistGetTopTracks("apiKey1", "artist1")
// assert
require.Error(err)
require.Zero(actual)
require.Error(t, err)
require.Zero(t, actual)
}
func TestArtistGetSimilar(t *testing.T) {
t.Parallel()
// arrange
require := require.New(t)
client := Client{mockclient.New(t, func(w http.ResponseWriter, r *http.Request) {
require.Equal(http.MethodGet, r.Method)
require.Equal(url.Values{
require.Equal(t, http.MethodGet, r.Method)
require.Equal(t, url.Values{
"method": []string{"artist.getSimilar"},
"api_key": []string{"apiKey1"},
"artist": []string{"artist1"},
}, r.URL.Query())
require.Equal("/2.0/", r.URL.Path)
require.Equal(baseURL, "https://"+r.Host+r.URL.Path)
require.Equal(t, "/2.0/", r.URL.Path)
require.Equal(t, baseURL, "https://"+r.Host+r.URL.Path)
w.WriteHeader(http.StatusOK)
w.Write(mockclient.ArtistGetSimilarResponse)
@@ -239,8 +239,8 @@ func TestArtistGetSimilar(t *testing.T) {
actual, err := client.ArtistGetSimilar("apiKey1", "artist1")
// assert
require.NoError(err)
require.Equal(SimilarArtists{
require.NoError(t, err)
require.Equal(t, SimilarArtists{
XMLName: xml.Name{
Local: "similarartists",
},
@@ -298,16 +298,16 @@ func TestArtistGetSimilar_clientRequestFails(t *testing.T) {
t.Parallel()
// arrange
require := require.New(t)
client := Client{mockclient.New(t, func(w http.ResponseWriter, r *http.Request) {
require.Equal(http.MethodGet, r.Method)
require.Equal(url.Values{
require.Equal(t, http.MethodGet, r.Method)
require.Equal(t, url.Values{
"method": []string{"artist.getSimilar"},
"api_key": []string{"apiKey1"},
"artist": []string{"artist1"},
}, r.URL.Query())
require.Equal("/2.0/", r.URL.Path)
require.Equal(baseURL, "https://"+r.Host+r.URL.Path)
require.Equal(t, "/2.0/", r.URL.Path)
require.Equal(t, baseURL, "https://"+r.Host+r.URL.Path)
w.WriteHeader(http.StatusInternalServerError)
})}
@@ -316,25 +316,25 @@ func TestArtistGetSimilar_clientRequestFails(t *testing.T) {
actual, err := client.ArtistGetSimilar("apiKey1", "artist1")
// assert
require.Error(err)
require.Zero(actual)
require.Error(t, err)
require.Zero(t, actual)
}
func TestTrackGetSimilarTracks(t *testing.T) {
t.Parallel()
// arrange
require := require.New(t)
client := Client{mockclient.New(t, func(w http.ResponseWriter, r *http.Request) {
require.Equal(http.MethodGet, r.Method)
require.Equal(url.Values{
require.Equal(t, http.MethodGet, r.Method)
require.Equal(t, url.Values{
"method": []string{"track.getSimilar"},
"api_key": []string{"apiKey1"},
"artist": []string{"artist1"},
"track": []string{"track1"},
}, r.URL.Query())
require.Equal("/2.0/", r.URL.Path)
require.Equal(baseURL, "https://"+r.Host+r.URL.Path)
require.Equal(t, "/2.0/", r.URL.Path)
require.Equal(t, baseURL, "https://"+r.Host+r.URL.Path)
w.WriteHeader(http.StatusOK)
w.Write(mockclient.TrackGetSimilarResponse)
@@ -344,8 +344,8 @@ func TestTrackGetSimilarTracks(t *testing.T) {
actual, err := client.TrackGetSimilarTracks("apiKey1", "artist1", "track1")
// assert
require.NoError(err)
require.Equal(SimilarTracks{
require.NoError(t, err)
require.Equal(t, SimilarTracks{
Artist: "Artist 1",
Track: "Track 1",
XMLName: xml.Name{
@@ -392,17 +392,17 @@ func TestTrackGetSimilarTracks_clientRequestFails(t *testing.T) {
t.Parallel()
// arrange
require := require.New(t)
client := Client{mockclient.New(t, func(w http.ResponseWriter, r *http.Request) {
require.Equal(http.MethodGet, r.Method)
require.Equal(url.Values{
require.Equal(t, http.MethodGet, r.Method)
require.Equal(t, url.Values{
"method": []string{"track.getSimilar"},
"api_key": []string{"apiKey1"},
"artist": []string{"artist1"},
"track": []string{"track1"},
}, r.URL.Query())
require.Equal("/2.0/", r.URL.Path)
require.Equal(baseURL, "https://"+r.Host+r.URL.Path)
require.Equal(t, "/2.0/", r.URL.Path)
require.Equal(t, baseURL, "https://"+r.Host+r.URL.Path)
w.WriteHeader(http.StatusInternalServerError)
})}
@@ -411,25 +411,25 @@ func TestTrackGetSimilarTracks_clientRequestFails(t *testing.T) {
actual, err := client.TrackGetSimilarTracks("apiKey1", "artist1", "track1")
// assert
require.Error(err)
require.Zero(actual)
require.Error(t, err)
require.Zero(t, actual)
}
func TestGetSession(t *testing.T) {
t.Parallel()
// arrange
require := require.New(t)
client := Client{mockclient.New(t, func(w http.ResponseWriter, r *http.Request) {
require.Equal(http.MethodGet, r.Method)
require.Equal(url.Values{
require.Equal(t, http.MethodGet, r.Method)
require.Equal(t, url.Values{
"method": []string{"auth.getSession"},
"api_key": []string{"apiKey1"},
"api_sig": []string{"b872a708a0b8b1d9fc1230b1cb6493f8"},
"token": []string{"token1"},
}, r.URL.Query())
require.Equal("/2.0/", r.URL.Path)
require.Equal(baseURL, "https://"+r.Host+r.URL.Path)
require.Equal(t, "/2.0/", r.URL.Path)
require.Equal(t, baseURL, "https://"+r.Host+r.URL.Path)
w.WriteHeader(http.StatusOK)
w.Write(mockclient.GetSessionResponse)
@@ -439,25 +439,25 @@ func TestGetSession(t *testing.T) {
actual, err := client.GetSession("apiKey1", "secret1", "token1")
// assert
require.NoError(err)
require.Equal("sessionKey1", actual)
require.NoError(t, err)
require.Equal(t, "sessionKey1", actual)
}
func TestGetSessioeClientRequestFails(t *testing.T) {
t.Parallel()
// arrange
require := require.New(t)
client := Client{mockclient.New(t, func(w http.ResponseWriter, r *http.Request) {
require.Equal(http.MethodGet, r.Method)
require.Equal(url.Values{
require.Equal(t, http.MethodGet, r.Method)
require.Equal(t, url.Values{
"method": []string{"auth.getSession"},
"api_key": []string{"apiKey1"},
"api_sig": []string{"b872a708a0b8b1d9fc1230b1cb6493f8"},
"token": []string{"token1"},
}, r.URL.Query())
require.Equal("/2.0/", r.URL.Path)
require.Equal(baseURL, "https://"+r.Host+r.URL.Path)
require.Equal(t, "/2.0/", r.URL.Path)
require.Equal(t, baseURL, "https://"+r.Host+r.URL.Path)
w.WriteHeader(http.StatusInternalServerError)
})}
@@ -466,8 +466,8 @@ func TestGetSessioeClientRequestFails(t *testing.T) {
actual, err := client.GetSession("apiKey1", "secret1", "token1")
// assert
require.Error(err)
require.Zero(actual)
require.Error(t, err)
require.Zero(t, actual)
}
func TestGetParamSignature(t *testing.T) {

View File

@@ -15,12 +15,11 @@ import (
func TestScrobble(t *testing.T) {
// arrange
t.Parallel()
require := require.New(t)
testDB, err := db.NewMock()
require.NoError(err)
require.NoError(t, err)
err = testDB.Migrate(db.MigrationContext{})
require.NoError(err)
require.NoError(t, err)
testDB.SetSetting(db.LastFMAPIKey, "apiKey1")
testDB.SetSetting(db.LastFMSecret, "secret1")
@@ -46,8 +45,8 @@ func TestScrobble(t *testing.T) {
stamp := time.Date(2023, 8, 12, 12, 34, 1, 200, time.UTC)
client := Client{mockclient.New(t, func(w http.ResponseWriter, r *http.Request) {
require.Equal(http.MethodPost, r.Method)
require.Equal(url.Values{
require.Equal(t, http.MethodPost, r.Method)
require.Equal(t, url.Values{
"album": []string{"album1"},
"albumArtist": []string{"artist1"},
"api_key": []string{"apiKey1"},
@@ -61,8 +60,9 @@ func TestScrobble(t *testing.T) {
"track": []string{"title1"},
"trackNumber": []string{"1"},
}, r.URL.Query())
require.Equal("/2.0/", r.URL.Path)
require.Equal(baseURL, "https://"+r.Host+r.URL.Path)
require.Equal(t, "/2.0/", r.URL.Path)
require.Equal(t, baseURL, "https://"+r.Host+r.URL.Path)
w.WriteHeader(http.StatusOK)
w.Write(mockclient.ArtistGetTopTracksResponse)
@@ -74,13 +74,12 @@ func TestScrobble(t *testing.T) {
err = scrobbler.Scrobble(user, track, stamp, true)
// assert
require.NoError(err)
require.NoError(t, err)
}
func TestScrobbleReturnsWithoutLastFMSession(t *testing.T) {
// arrange
t.Parallel()
require := require.New(t)
scrobbler := Scrobbler{}
@@ -88,16 +87,15 @@ func TestScrobbleReturnsWithoutLastFMSession(t *testing.T) {
err := scrobbler.Scrobble(&db.User{}, &db.Track{}, time.Now(), false)
// assert
require.NoError(err)
require.NoError(t, err)
}
func TestScrobbleFailsWithoutLastFMAPIKey(t *testing.T) {
// arrange
t.Parallel()
require := require.New(t)
testDB, err := db.NewMock()
require.NoError(err)
require.NoError(t, err)
user := &db.User{
LastFMSession: "lastFMSession1",
@@ -109,5 +107,5 @@ func TestScrobbleFailsWithoutLastFMAPIKey(t *testing.T) {
err = scrobbler.Scrobble(user, &db.Track{}, time.Now(), false)
// assert
require.Error(err)
require.Error(t, err)
}

View File

@@ -36,17 +36,16 @@ var submitListensRequest string
func TestScrobble(t *testing.T) {
t.Parallel()
require := require.New(t)
// arrange
client, shutdown := httpClientMock(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
require.Equal(http.MethodPost, r.Method)
require.Equal("/1/submit-listens", r.URL.Path)
require.Equal("application/json", r.Header.Get("Content-Type"))
require.Equal("Token token1", r.Header.Get("Authorization"))
require.Equal(t, http.MethodPost, r.Method)
require.Equal(t, "/1/submit-listens", r.URL.Path)
require.Equal(t, "application/json", r.Header.Get("Content-Type"))
require.Equal(t, "Token token1", r.Header.Get("Authorization"))
bodyBytes, err := io.ReadAll(r.Body)
require.NoError(err)
require.JSONEq(submitListensRequest, string(bodyBytes))
require.NoError(t, err)
require.JSONEq(t, submitListensRequest, string(bodyBytes))
w.WriteHeader(http.StatusOK)
w.Write([]byte(`{"accepted": 1}`))
@@ -71,19 +70,18 @@ func TestScrobble(t *testing.T) {
}, time.Unix(1683804525, 0), true)
// assert
require.NoError(err)
require.NoError(t, err)
}
func TestScrobbleUnauthorized(t *testing.T) {
t.Parallel()
require := require.New(t)
// arrange
client, shutdown := httpClientMock(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
require.Equal(http.MethodPost, r.Method)
require.Equal("/1/submit-listens", r.URL.Path)
require.Equal("application/json", r.Header.Get("Content-Type"))
require.Equal("Token token1", r.Header.Get("Authorization"))
require.Equal(t, http.MethodPost, r.Method)
require.Equal(t, "/1/submit-listens", r.URL.Path)
require.Equal(t, "application/json", r.Header.Get("Content-Type"))
require.Equal(t, "Token token1", r.Header.Get("Authorization"))
w.WriteHeader(http.StatusUnauthorized)
w.Write([]byte(`{"code": 401, "error": "Invalid authorization token."}`))
@@ -108,19 +106,18 @@ func TestScrobbleUnauthorized(t *testing.T) {
}, time.Now(), true)
// assert
require.ErrorIs(err, ErrListenBrainz)
require.ErrorIs(t, err, ErrListenBrainz)
}
func TestScrobbleServerError(t *testing.T) {
t.Parallel()
require := require.New(t)
// arrange
client, shutdown := httpClientMock(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
require.Equal(http.MethodPost, r.Method)
require.Equal("/1/submit-listens", r.URL.Path)
require.Equal("application/json", r.Header.Get("Content-Type"))
require.Equal("Token token1", r.Header.Get("Authorization"))
require.Equal(t, http.MethodPost, r.Method)
require.Equal(t, "/1/submit-listens", r.URL.Path)
require.Equal(t, "application/json", r.Header.Get("Content-Type"))
require.Equal(t, "Token token1", r.Header.Get("Authorization"))
w.WriteHeader(http.StatusInternalServerError)
}))
@@ -144,5 +141,5 @@ func TestScrobbleServerError(t *testing.T) {
}, time.Now(), true)
// assert
require.ErrorIs(err, ErrListenBrainz)
require.ErrorIs(t, err, ErrListenBrainz)
}