ソースを参照

fix issue on query not parsing words with space

cmte 5 年 前
コミット
cf8bc939f7
2 ファイル変更9 行追加3 行削除
  1. 2 2
      go-music/mb.go
  2. 7 1
      go-music/mb_test.go

+ 2 - 2
go-music/mb.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"fmt"
 	"net/http"
+	"net/url"
 	"sort"
 	"time"
 )
@@ -36,7 +37,7 @@ func NewMusicBrainz() MB {
 //SearchForArtist return a list of artists using `query` as parameter if none found returns error
 func (m MB) SearchForArtist(query string) (*Search, error) {
 	var ret Search
-	uri := fmt.Sprintf("%s/%s=%s", apiURI, artistSearchEndpoint, query)
+	uri := fmt.Sprintf("%s/%s=%s", apiURI, artistSearchEndpoint, url.QueryEscape(query))
 
 	req, err := http.NewRequest(
 		"GET",
@@ -64,7 +65,6 @@ func (m MB) SearchForArtist(query string) (*Search, error) {
 		fmt.Printf("could not read body\n%v", err)
 		return nil, err
 	}
-
 	err = json.NewDecoder(resp.Body).Decode(&ret.artist)
 	if err != nil {
 		fmt.Printf("could not decode body\n%v", err)

+ 7 - 1
go-music/mb_test.go

@@ -14,6 +14,12 @@ func TestShouldBeEqualToArtist(t *testing.T) {
 	assert.Equal(t, name, "Metallica")
 }
 
+func TestErrShouldBeNilIfArtistIsValid(t *testing.T) {
+	m := NewMusicBrainz()
+	_, err := m.SearchForArtist("Iron Maiden")
+	assert.Nil(t, err, "err should be nil for valid artist")
+}
+
 func TestIfArtistIsValidThenErrIsNil(t *testing.T) {
 	m := NewMusicBrainz()
 	_, err := m.SearchForArtist("Metallica")
@@ -22,6 +28,6 @@ func TestIfArtistIsValidThenErrIsNil(t *testing.T) {
 
 func TestErrShouldContainErrorIfArtistIsInvalid(t *testing.T) {
 	m := NewMusicBrainz()
-	_, err := m.SearchForArtist("asdfkjahsdflkjasdhfoia")
+	_, err := m.SearchForArtist("difjapodsifjapdsif adspofijdas flkdsajf pakdsfad")
 	assert.NotNil(t, err, "err should not be nil if found artist")
 }