diff --git a/backends/listenbrainz/client_test.go b/backends/listenbrainz/client_test.go new file mode 100644 index 0000000..b0995d8 --- /dev/null +++ b/backends/listenbrainz/client_test.go @@ -0,0 +1,35 @@ +/* +Copyright © 2023 Philipp Wolfer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +package listenbrainz_test + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "go.uploadedlobster.com/scotty/backends/listenbrainz" +) + +func TestNewClient(t *testing.T) { + token := "foobar123" + client := listenbrainz.New(token) + assert.Equal(t, listenbrainz.DefaultItemsPerGet, client.MaxResults) +} diff --git a/backends/listenbrainz_test.go b/backends/listenbrainz_test.go new file mode 100644 index 0000000..02660cb --- /dev/null +++ b/backends/listenbrainz_test.go @@ -0,0 +1,66 @@ +/* +Copyright © 2023 Philipp Wolfer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +package backends_test + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" + "go.uploadedlobster.com/scotty/backends" + "go.uploadedlobster.com/scotty/backends/listenbrainz" +) + +func TestListenFromListenBrainz(t *testing.T) { + lbListen := listenbrainz.Listen{ + ListenedAt: 1699289873, + UserName: "outsidecontext", + TrackMetadata: listenbrainz.Track{ + TrackName: "The Track", + ArtistName: "The Artist", + ReleaseName: "The Release", + AdditionalInfo: map[string]any{ + "duration_ms": 528235, + "foo": "bar", + "isrc": "DES561720901", + "tracknumber": 8, + "recording_mbid": "e225fb84-dc9a-419e-adcd-9890f59ec432", + "release_group_mbid": "80aca1ee-aa51-41be-9f75-024710d92ff4", + "release_mbid": "d7f22677-9803-4d21-ba42-081b633a6f68", + }, + }, + } + listen := backends.Listen{}.FromListenBrainz(lbListen) + assert.Equal(t, time.Unix(1699289873, 0), listen.ListenedAt) + assert.Equal(t, lbListen.UserName, listen.UserName) + assert.Equal(t, time.Duration(528235*time.Millisecond), listen.Duration) + assert.Equal(t, lbListen.TrackMetadata.TrackName, listen.TrackName) + assert.Equal(t, lbListen.TrackMetadata.ReleaseName, listen.ReleaseName) + assert.Equal(t, []string{lbListen.TrackMetadata.ArtistName}, listen.ArtistNames) + assert.Equal(t, 8, listen.TrackNumber) + assert.Equal(t, 8, listen.TrackNumber) + assert.Equal(t, backends.MBID("e225fb84-dc9a-419e-adcd-9890f59ec432"), listen.RecordingMbid) + assert.Equal(t, backends.MBID("d7f22677-9803-4d21-ba42-081b633a6f68"), listen.ReleaseMbid) + assert.Equal(t, backends.MBID("80aca1ee-aa51-41be-9f75-024710d92ff4"), listen.ReleaseGroupMbid) + assert.Equal(t, "DES561720901", listen.Isrc) + assert.Equal(t, lbListen.TrackMetadata.AdditionalInfo["foo"], listen.AdditionalInfo["foo"]) +} diff --git a/backends/models_test.go b/backends/models_test.go new file mode 100644 index 0000000..c759866 --- /dev/null +++ b/backends/models_test.go @@ -0,0 +1,40 @@ +/* +Copyright © 2023 Philipp Wolfer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +package backends_test + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "go.uploadedlobster.com/scotty/backends" +) + +func TestTrackArtistName(t *testing.T) { + track := backends.Track{ + ArtistNames: []string{ + "Foo", + "Bar", + "Baz", + }, + } + assert.Equal(t, "Foo, Bar, Baz", track.ArtistName()) +}