music-kraken-core/src/tests/test_building_objects.py
2023-03-28 11:43:18 +02:00

95 lines
3.3 KiB
Python

from mutagen import id3
import pycountry
import unittest
import sys
import os
from pathlib import Path
# Add the parent directory of the src package to the Python module search path
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from music_kraken import objects
class TestSong(unittest.TestCase):
def setUp(self):
self.album_list = [
objects.Album(
title="One Final Action",
date=objects.ID3Timestamp(year=1986, month=3, day=1),
language=pycountry.languages.get(alpha_2="en"),
label_list=[
objects.Label(name="an album label")
],
source_list=[
objects.Source(objects.SourcePages.ENCYCLOPAEDIA_METALLUM,
"https://www.metal-archives.com/albums/I%27m_in_a_Coffin/One_Final_Action/207614")
]
),
]
self.artist_list = []
self.main_artist_list=[
objects.Artist(
name="I'm in a coffin",
source_list=[
objects.Source(
objects.SourcePages.ENCYCLOPAEDIA_METALLUM,
"https://www.metal-archives.com/bands/I%27m_in_a_Coffin/127727"
)
]
),
objects.Artist(name="some_split_artist")
]
feature_artist_list=[
objects.Artist(
name="Ruffiction",
label_list=[
objects.Label(name="Ruffiction Productions")
]
)
]
self.artist_list.extend(self.main_artist_list)
self.artist_list.extend(feature_artist_list)
self.song = objects.Song(
genre="HS Core",
title="Vein Deep in the Solution",
length=666,
isrc="US-S1Z-99-00001",
tracksort=2,
target_list=[
objects.Target(file="song.mp3", path="example")
],
lyrics_list=[
objects.Lyrics(
text="these are some depressive lyrics", language="en"),
objects.Lyrics(
text="Dies sind depressive Lyrics", language="de")
],
source_list=[
objects.Source(objects.SourcePages.YOUTUBE,
"https://youtu.be/dfnsdajlhkjhsd"),
objects.Source(objects.SourcePages.MUSIFY,
"https://ln.topdf.de/Music-Kraken/")
],
album_list=self.album_list,
main_artist_list=self.main_artist_list,
feature_artist_list=feature_artist_list,
)
self.song.compile()
def test_album(self):
for artist in self.song.main_artist_collection:
for artist_album in artist.main_album_collection:
self.assertIn(artist_album, self.song.album_collection)
def test_artist(self):
for album in self.song.album_collection:
for album_artist in album.artist_collection:
self.assertIn(album_artist, self.song.main_artist_collection)