示例#1
0
class PlaylistTest(ModelTestCase):
    def setUp(self):
        self.playlist = Playlist(IdentityService.id_playlist(), "name", [])
        self.playlist.release_events()

    def test_construction(self):
        content = [IdentityService.id_video("")]
        playlist = Playlist(None, "name", content)
        self.assertEqual("name", playlist.name)
        self.assertEqual(content, playlist.ids)
        self.assertEqual(False, playlist.generated)
        self.expect_events(playlist, Evt.PlaylistCreated)

    def test_rename(self):
        self.playlist.name = "renamed"
        self.expect_events(self.playlist, Evt.PlaylistRenamed)

    def test_update_content(self):
        self.playlist.ids = [IdentityService.id_video("source")]
        self.expect_events(self.playlist, Evt.PlaylistContentUpdated)

    def test_remove(self):
        self.playlist.ids = [
            IdentityService.id_video("source1"),
            IdentityService.id_video("source2"),
        ]
        self.playlist.release_events()
        self.playlist.remove(IdentityService.id_video("source1"))
        self.expect_events(self.playlist, Evt.PlaylistContentUpdated)

    def test_remove_unknown(self):
        video_id = IdentityService.id_video("source1")
        with self.assertRaises(DomainError) as ctx:
            self.playlist.remove(video_id)
        self.assertEqual(
            "video not in playlist",
            str(ctx.exception),
        )

    def test_delete(self):
        self.playlist.delete()
        self.expect_events(self.playlist, Evt.PlaylistDeleted)

    def test_delete_generated(self):
        playlist = Playlist(None, "name", [], True)
        with self.assertRaises(DomainError) as ctx:
            playlist.delete()
        self.assertEqual("cannot delete generated playlists",
                         str(ctx.exception))
示例#2
0
 def test_construction(self):
     content = [IdentityService.id_video("")]
     playlist = Playlist(None, "name", content)
     self.assertEqual("name", playlist.name)
     self.assertEqual(content, playlist.ids)
     self.assertEqual(False, playlist.generated)
     self.expect_events(playlist, Evt.PlaylistCreated)
示例#3
0
    def test_list_containing(self):
        playlists = [
            Playlist(
                IdentityService.id_playlist(),
                "playlist_1",
                [
                    IdentityService.id_video("source1"),
                    IdentityService.id_video("source2"),
                ],
            ),
            Playlist(
                IdentityService.id_playlist(),
                "playlist_2",
                [
                    IdentityService.id_video("source3"),
                    IdentityService.id_video("source4"),
                ],
            ),
            Playlist(
                IdentityService.id_playlist(),
                "playlist_3",
                [
                    IdentityService.id_video("source1"),
                    IdentityService.id_video("source3"),
                ],
            ),
        ]
        for playlist in playlists:
            self.repo.create(playlist)

        result = self.repo.list_containing(IdentityService.id_video("source1"))
        self.assertEqual([playlists[0], playlists[2]], result)

        result = self.repo.list_containing(IdentityService.id_video("source4"))
        self.assertEqual([playlists[1]], result)

        result = self.repo.list_containing(IdentityService.id_video("source5"))
        self.assertEqual([], result)
示例#4
0
 def impl(ctx):
     playlist = Playlist(cmd.model_id, cmd.name, cmd.ids, cmd.generated)
     ctx.add(playlist)
示例#5
0
 def setUp(self):
     self.playlist = Playlist(IdentityService.id_playlist(), "name", [])
     self.playlist.release_events()
示例#6
0
 def test_delete_generated(self):
     playlist = Playlist(None, "name", [], True)
     with self.assertRaises(DomainError) as ctx:
         playlist.delete()
     self.assertEqual("cannot delete generated playlists",
                      str(ctx.exception))
示例#7
0
 def setUp(self):
     database = TinyDB(storage=MemoryStorage)
     self.repo = PlaylistRepo(database, RLock())
     self.playlist_id = IdentityService.id_playlist()
     self.playlist = Playlist(self.playlist_id, "name")
示例#8
0
 def test_encode_playlist(self):
     playlist_id = IdentityService.id_playlist()
     playlist = Playlist(playlist_id,
                         "title", [IdentityService.random()],
                         generated=True)
     json.dumps(playlist, cls=ModelEncoder)