2024-04-27 21:08:20 +03:00
|
|
|
from unittest import TestCase
|
|
|
|
|
|
|
|
import genius
|
2024-04-28 13:07:30 +03:00
|
|
|
import http_pool
|
2024-04-27 21:08:20 +03:00
|
|
|
|
|
|
|
|
|
|
|
TITLE = 'A Line In The Sand'
|
|
|
|
ARTIST = 'Linkin Park'
|
|
|
|
URL = 'https://genius.com/Linkin-park-a-line-in-the-sand-lyrics'
|
|
|
|
|
|
|
|
LYR1 = '''[Intro: Mike Shinoda]
|
|
|
|
Today, we stood on the wall'''
|
|
|
|
|
|
|
|
LYR2 = '''little did we know
|
|
|
|
|
|
|
|
[Instrumental Break]
|
|
|
|
|
|
|
|
[Verse 1:'''
|
|
|
|
|
|
|
|
LYR3 = '''you are gonna get yours
|
|
|
|
|
|
|
|
[Chorus: Chester Bennington]
|
|
|
|
Another day'''
|
|
|
|
|
|
|
|
|
2024-05-06 19:31:42 +03:00
|
|
|
# There is no lyrics for this song on Genius
|
|
|
|
# Maybe someday TITLE2 and ARTIST2 will need to be changed
|
|
|
|
# (But really existing song is chosen intentionally)
|
|
|
|
TITLE2 = 'Паруса'
|
|
|
|
ARTIST2 = 'PIZZA'
|
|
|
|
|
|
|
|
|
2024-04-27 21:08:20 +03:00
|
|
|
class TestGenius(TestCase):
|
|
|
|
|
|
|
|
def setUp(self) -> None:
|
2024-04-28 13:07:30 +03:00
|
|
|
http_pool.get()
|
2024-04-27 21:08:20 +03:00
|
|
|
|
2024-05-06 19:31:42 +03:00
|
|
|
def test_search(self) -> None:
|
|
|
|
_, url = genius.search(TITLE, ARTIST)
|
2024-04-27 21:08:20 +03:00
|
|
|
self.assertEqual(url, URL)
|
|
|
|
|
2024-05-06 19:31:42 +03:00
|
|
|
def test_search_success(self) -> None:
|
|
|
|
title, _ = genius.search(TITLE, ARTIST)
|
|
|
|
genius.raise_on_irrelevant_result(title, TITLE, ARTIST)
|
|
|
|
|
|
|
|
def test_search_failure(self) -> None:
|
|
|
|
title, _ = genius.search(TITLE2, ARTIST2)
|
|
|
|
with self.assertRaises(ValueError):
|
|
|
|
genius.raise_on_irrelevant_result(title, TITLE2, ARTIST2)
|
|
|
|
|
|
|
|
def test_relevancy_success(self) -> None:
|
|
|
|
genius.raise_on_irrelevant_result(
|
|
|
|
'ABC hEllo world!@ \u2013 sOmE artist123',
|
|
|
|
'Artist123',
|
|
|
|
'hello World',
|
|
|
|
)
|
|
|
|
|
|
|
|
def test_relevancy_failure(self) -> None:
|
|
|
|
with self.assertRaises(ValueError):
|
|
|
|
genius.raise_on_irrelevant_result(
|
|
|
|
'DEF hEllo world@!15 \u2013 anOther artist456',
|
|
|
|
'DEF 789',
|
|
|
|
'ABC irrelevant track title',
|
|
|
|
)
|
|
|
|
|
2024-04-27 21:08:20 +03:00
|
|
|
def test_lyrics_parsing(self) -> None:
|
2024-04-28 13:07:30 +03:00
|
|
|
lyrics = genius.parse(URL)
|
2024-04-27 21:08:20 +03:00
|
|
|
self.assertTrue(lyrics.startswith(LYR1))
|
|
|
|
self.assertTrue(LYR2 in lyrics)
|
|
|
|
self.assertTrue(LYR3 in lyrics)
|
|
|
|
|
|
|
|
def tearDown(self) -> None:
|
2024-04-28 13:07:30 +03:00
|
|
|
http_pool.get().clear()
|