# Copyright 2024 (c) Anna Schumaker. """Test creating a liblistenbrainz.Listen from a Track.""" import datetime import dateutil.tz import emmental.listenbrainz.listen import liblistenbrainz import pathlib import tests.util class TestListen(tests.util.TestCase): """ListenBrainz Listen test case.""" def setUp(self): """Set up common variables.""" super().setUp() self.library = self.sql.libraries.create(pathlib.Path("/a/b")) self.artists = [self.sql.artists.create("Artist 1", mbid="mbid-ar1"), self.sql.artists.create("Artist 2"), self.sql.artists.create("Artist 3", mbid="mbid-ar3")] self.album = self.sql.albums.create("Test Album", "Test Artist", release="1988-06", mbid="mbid-release") self.medium = self.sql.media.create(self.album, "", number=1) self.year = self.sql.years.create(1988) self.track = self.sql.tracks.create(self.library, pathlib.Path("/a/b/c.ogg"), self.medium, self.year, title="Track 1", number=1, artist="Track Artist") for artist in self.artists: artist.add_track(self.track) self.listen = emmental.listenbrainz.listen.Listen(self.track) def test_init(self): """Test initializing our Listen instance.""" self.assertIsInstance(self.listen, liblistenbrainz.Listen) self.assertEqual(self.listen.track_name, "Track 1") self.assertEqual(self.listen.artist_name, "Track Artist") self.assertEqual(self.listen.release_name, "Test Album") self.assertEqual(self.listen.release_group_mbid, "mbid-release") self.assertEqual(self.listen.tracknumber, 1) self.assertDictEqual(self.listen.additional_info, {"media_player": "emmental-debug"}) self.assertListEqual(self.listen.artist_mbids, ["mbid-ar1", "mbid-ar3"]) self.assertIsNone(self.listen.listened_at) self.assertIsNone(self.listen.listenid) utc_now = datetime.datetime.utcnow() local_now = utc_now.replace(tzinfo=dateutil.tz.tzutc()).astimezone() listen = emmental.listenbrainz.listen.Listen(self.track, listenid=1234, listened_at=utc_now) self.assertEqual(listen.listenid, 1234) self.assertEqual(listen.listened_at, local_now.timestamp())