beets/test/plugins/test_importfeeds.py
Serene-Arc a6e5201ff3 Apply formatting tools to all files
This is 'the big one', which touches every file so that it all conforms
to the given standard.
2023-10-22 09:53:18 +10:00

83 lines
2.8 KiB
Python

import datetime
import os
import os.path
import shutil
import tempfile
import unittest
from beets import config
from beets.library import Album, Item, Library
from beetsplug.importfeeds import ImportFeedsPlugin
class ImportfeedsTestTest(unittest.TestCase):
def setUp(self):
config.clear()
config.read(user=False)
self.importfeeds = ImportFeedsPlugin()
self.lib = Library(":memory:")
self.feeds_dir = tempfile.mkdtemp()
config["importfeeds"]["dir"] = self.feeds_dir
def tearDown(self):
shutil.rmtree(self.feeds_dir)
def test_multi_format_album_playlist(self):
config["importfeeds"]["formats"] = "m3u_multi"
album = Album(album="album/name", id=1)
item_path = os.path.join("path", "to", "item")
item = Item(title="song", album_id=1, path=item_path)
self.lib.add(album)
self.lib.add(item)
self.importfeeds.album_imported(self.lib, album)
playlist_path = os.path.join(
self.feeds_dir, os.listdir(self.feeds_dir)[0]
)
self.assertTrue(playlist_path.endswith("album_name.m3u"))
with open(playlist_path) as playlist:
self.assertIn(item_path, playlist.read())
def test_playlist_in_subdir(self):
config["importfeeds"]["formats"] = "m3u"
config["importfeeds"]["m3u_name"] = os.path.join(
"subdir", "imported.m3u"
)
album = Album(album="album/name", id=1)
item_path = os.path.join("path", "to", "item")
item = Item(title="song", album_id=1, path=item_path)
self.lib.add(album)
self.lib.add(item)
self.importfeeds.album_imported(self.lib, album)
playlist = os.path.join(
self.feeds_dir, config["importfeeds"]["m3u_name"].get()
)
playlist_subdir = os.path.dirname(playlist)
self.assertTrue(os.path.isdir(playlist_subdir))
self.assertTrue(os.path.isfile(playlist))
def test_playlist_per_session(self):
config["importfeeds"]["formats"] = "m3u_session"
config["importfeeds"]["m3u_name"] = "imports.m3u"
album = Album(album="album/name", id=1)
item_path = os.path.join("path", "to", "item")
item = Item(title="song", album_id=1, path=item_path)
self.lib.add(album)
self.lib.add(item)
self.importfeeds.import_begin(self)
self.importfeeds.album_imported(self.lib, album)
date = datetime.datetime.now().strftime("%Y%m%d_%Hh%M")
playlist = os.path.join(self.feeds_dir, f"imports_{date}.m3u")
self.assertTrue(os.path.isfile(playlist))
with open(playlist) as playlist_contents:
self.assertIn(item_path, playlist_contents.read())
def suite():
return unittest.TestLoader().loadTestsFromName(__name__)
if __name__ == "__main__":
unittest.main(defaultTest="suite")