From 4914386f3f9c34e25f049ed8dc11d1af6c69702c Mon Sep 17 00:00:00 2001 From: James Clarke Date: Sun, 12 Mar 2023 17:07:22 +0000 Subject: [PATCH] Added unit test cases --- .vscode/settings.json | 11 +- src/tests/example_data_objects.py | 114 ------------- src/tests/test_objects.py | 257 ++++++++++++++++++++++++++++++ src/try.py | 2 +- 4 files changed, 268 insertions(+), 116 deletions(-) delete mode 100644 src/tests/example_data_objects.py create mode 100644 src/tests/test_objects.py diff --git a/.vscode/settings.json b/.vscode/settings.json index af7446d..f9f3882 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,14 @@ { "python.analysis.extraPaths": [ "./src" - ] + ], + "python.testing.unittestArgs": [ + "-v", + "-s", + "./src", + "-p", + "test*.py" + ], + "python.testing.pytestEnabled": false, + "python.testing.unittestEnabled": true } \ No newline at end of file diff --git a/src/tests/example_data_objects.py b/src/tests/example_data_objects.py deleted file mode 100644 index 3d5dcca..0000000 --- a/src/tests/example_data_objects.py +++ /dev/null @@ -1,114 +0,0 @@ -import pycountry -import unittest -import sys -import os - -# Add the parent directory of the src package to the Python module search path -sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) - -from music_kraken import objects - -class TestSong(unittest.TestCase): - - def setUp(self): - self.song = objects.Song( - genre="HS Core", - title="Vein Deep in the Solution", - length=666, - isrc="US-S1Z-99-00001", - tracksort=2, - target=[ - 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=[ - 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") - ] - ), - ], - 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") - ] - ) - ], - ) - - def test_song_genre(self): - self.assertEqual(self.song.genre, "HS Core") - - def test_song_title(self): - self.assertEqual(self.song.title, "Vein Deep in the Solution") - - def test_song_length(self): - self.assertEqual(self.song.length, 666) - - def test_song_isrc(self): - self.assertEqual(self.song.isrc, "US-S1Z-99-00001") - - def test_song_tracksort(self): - self.assertEqual(self.song.tracksort, 2) - - def test_song_target(self): - self.assertEqual(self.song.target[0].file, "song.mp3") - self.assertEqual(self.song.target[0].path, "example") - - def test_song_lyrics(self): - self.assertEqual(len(self.song.lyrics_list), 2) - self.assertEqual( - self.song.lyrics_list[0].text, "these are some depressive lyrics") - self.assertEqual(self.song.lyrics_list[0].language, "en") - self.assertEqual( - self.song.lyrics_list[1].text, "Dies sind depressive Lyrics") - self.assertEqual(self.song.lyrics_list[1].language, "de") - - def test_song_source(self): - self.assertEqual(len(self.song.source_list), 2) - self.assertEqual( - self.song.source_list[0].page, objects.SourcePages.YOUTUBE) - self.assertEqual( - self.song.source_list[0].url, "https://youtu.be/dfnsdajlhkjhsd") - self.assertEqual( - self.song.source_list[1].page, objects.SourcePages.MUSIFY) - -""" -print(song.option_string) -for album in song.album_collection: - print(album.option_string) -for artist in song.main_artist_collection: - print(artist.option_string) -""" \ No newline at end of file diff --git a/src/tests/test_objects.py b/src/tests/test_objects.py new file mode 100644 index 0000000..3104d0f --- /dev/null +++ b/src/tests/test_objects.py @@ -0,0 +1,257 @@ +from music_kraken import objects +import pycountry +import unittest +import sys +import os + +# Add the parent directory of the src package to the Python module search path +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) + + +class TestSong(unittest.TestCase): + + def setUp(self): + self.song = objects.Song( + genre="HS Core", + title="Vein Deep in the Solution", + length=666, + isrc="US-S1Z-99-00001", + tracksort=2, + target=[ + 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=[ + 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") + ] + ), + ], + 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") + ] + ) + ], + ) + + def test_song_genre(self): + self.assertEqual(self.song.genre, "HS Core") + + def test_song_title(self): + self.assertEqual(self.song.title, "Vein Deep in the Solution") + + def test_song_length(self): + self.assertEqual(self.song.length, 666) + + def test_song_isrc(self): + self.assertEqual(self.song.isrc, "US-S1Z-99-00001") + + def test_song_tracksort(self): + self.assertEqual(self.song.tracksort, 2) + + def test_song_target(self): + self.assertEqual(self.song.target[0].file, "song.mp3") + self.assertEqual(self.song.target[0].path, "example") + + def test_song_lyrics(self): + self.assertEqual(len(self.song.lyrics_list), 2) + self.assertEqual( + self.song.lyrics_list[0].text, "these are some depressive lyrics") + self.assertEqual(self.song.lyrics_list[0].language, "en") + self.assertEqual( + self.song.lyrics_list[1].text, "Dies sind depressive Lyrics") + self.assertEqual(self.song.lyrics_list[1].language, "de") + + def test_song_source(self): + self.assertEqual(len(self.song.source_list), 2) + self.assertEqual( + self.song.source_list[0].page, objects.SourcePages.YOUTUBE) + self.assertEqual( + self.song.source_list[0].url, "https://youtu.be/dfnsdajlhkjhsd") + self.assertEqual( + self.song.source_list[1].page, objects.SourcePages.MUSIFY) + + +class TestAlbum(unittest.TestCase): + + def setUp(self): + self.album = 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") + ] + ) + + def test_album_title(self): + self.assertEqual(self.album.title, "One Final Action") + + def test_album_date(self): + self.assertEqual(self.album.date.year, 1986) + self.assertEqual(self.album.date.month, 3) + self.assertEqual(self.album.date.day, 1) + + def test_album_language(self): + self.assertEqual(self.album.language.alpha_2, "en") + + def test_album_label(self): + self.assertEqual(self.album.label_list[0].name, "an album label") + + def test_album_source(self): + self.assertEqual( + self.album.source_list[0].page, objects.SourcePages.ENCYCLOPAEDIA_METALLUM) + self.assertEqual( + self.album.source_list[0].url, "https://www.metal-archives.com/albums/I%27m_in_a_Coffin/One_Final_Action/207614") + + +class TestCollection(unittest.TestCase): + + def setUp(self): + self.collection = objects.Collection( + title="A collection", + date=objects.ID3Timestamp(year=1986, month=3, day=1), + language=pycountry.languages.get(alpha_2="en"), + label_list=[ + objects.Label(name="a collection label") + ], + source_list=[ + objects.Source(objects.SourcePages.ENCYCLOPAEDIA_METALLUM, + "https://www.metal-archives.com/collections/I%27m_in_a_Coffin/One_Final_Action/207614") + ] + ) + + def test_collection_title(self): + self.assertEqual(self.collection.title, "A collection") + + def test_collection_date(self): + self.assertEqual(self.collection.date.year, 1986) + self.assertEqual(self.collection.date.month, 3) + self.assertEqual(self.collection.date.day, 1) + + def test_collection_language(self): + self.assertEqual(self.collection.language.alpha_2, "en") + + def test_collection_label(self): + self.assertEqual( + self.collection.label_list[0].name, "a collection label") + + def test_collection_source(self): + self.assertEqual( + self.collection.source_list[0].page, objects.SourcePages.ENCYCLOPAEDIA_METALLUM) + self.assertEqual( + self.collection.source_list[0].url, "https://www.metal-archives.com/collections/I%27m_in_a_Coffin/One_Final_Action/207614") + + +class TestFormattedText(unittest.TestCase): + def setUp(self): + self.text_markdown = objects.FormattedText(markdown=""" + # This is a test title + This is a test paragraph + ## This is a test subtitle + - This is a test list item + - This is another test list item + This is another test paragraph +""") + self.text_html = objects.FormattedText(html=""" +

This is a test title

+

This is a test paragraph

+

This is a test subtitle

+ +

This is another test paragraph

""") + + self.plaintext = objects.FormattedText(plaintext=""" +This is a test title +This is a test paragraph +This is a test subtitle +- This is a test list item +- This is another test list item +This is another test paragraph""") + + def test_formatted_text_markdown_to_html(self): + self.assertEqual(self.text_markdown.get_html(), self.text_html.html) + + def test_formatted_text_html_to_markdown(self): + self.assertEqual(self.text_html.get_markdown(), self.text_markdown) + + def test_formatted_text_markdown_to_plaintext(self): + self.assertEqual(self.text_markdown.get_plaintext(), self.plaintext) + + def test_formatted_text_html_to_plaintext(self): + self.assertEqual(self.text_html.get_plaintext(), self.plaintext) + + +class TestLyrics(unittest.TestCase): + + def setUp(self): + self.lyrics = objects.Lyrics( + text="these are some depressive lyrics", + language=pycountry.languages.get(alpha_2="en"), + source_list=[ + objects.Source(objects.SourcePages.ENCYCLOPAEDIA_METALLUM, + "https://www.metal-archives.com/lyrics/I%27m_in_a_Coffin/One_Final_Action/207614"), + objects.Source(objects.SourcePages.MUSIFY, + "https://www.musify.com/lyrics/I%27m_in_a_Coffin/One_Final_Action/207614") + ] + ) + + def test_lyrics_text(self): + self.assertEqual(self.lyrics.text, + "these are some depressive lyrics") + + def test_lyrics_language(self): + self.assertEqual(self.lyrics.language.alpha_2, "en") + + def test_lyrics_source(self): + self.assertEqual(len(self.lyrics.source_collection), 2) + + +class TestMetadata(unittest.TestCase): + + def setUp(self): + self.timestamp = objects.ID3Timestamp(year=1986, month=3, day=1) + self.metadata = objects.metadata.Metadata(id3_dict={"date": self.timestamp}) + + def test_metadata_id3(self): + self.assertEqual(self.metadata.get_id3_value("date"), self.timestamp) \ No newline at end of file diff --git a/src/try.py b/src/try.py index 24690da..5433071 100644 --- a/src/try.py +++ b/src/try.py @@ -1,3 +1,3 @@ -from tests import example_data_objects +from tests import test_objects