155 lines
5.0 KiB
Python
155 lines
5.0 KiB
Python
import unittest
|
|
from unittest.mock import Mock
|
|
|
|
from music.tasks.run_user_playlist import run_user_playlist
|
|
from music.tasks.update_tag import update_tag
|
|
|
|
class TestRunPlaylist(unittest.TestCase):
|
|
|
|
def test_run_unknown_name(self):
|
|
with self.assertRaises(NameError):
|
|
run_user_playlist(user='unknown_name', playlist='test_playlist')
|
|
|
|
def test_run_unknown_playlist(self):
|
|
with self.assertRaises(NameError):
|
|
run_user_playlist(user='test', playlist='test')
|
|
|
|
def test_run_no_uri(self):
|
|
with self.assertRaises(AttributeError):
|
|
run_user_playlist(user='test', playlist='test_playlist')
|
|
|
|
def test_run_no_network(self):
|
|
with self.assertRaises(NameError):
|
|
run_user_playlist(user='test', playlist='test_uri')
|
|
|
|
class TestRunTag(unittest.TestCase):
|
|
|
|
def test_run_unknown_name(self):
|
|
with self.assertRaises(NameError):
|
|
update_tag(user='unknown_name', tag='test_tag')
|
|
|
|
def test_run_unknown_tag(self):
|
|
with self.assertRaises(NameError):
|
|
update_tag(user='test', tag='unknown_tag')
|
|
|
|
def test_run_no_service_username(self):
|
|
with self.assertRaises(AttributeError):
|
|
update_tag(user='test', tag='test_tag')
|
|
|
|
def test_mocked_without_components(self):
|
|
spotnet = Mock()
|
|
fmnet = Mock()
|
|
fmnet.user_scrobble_count.return_value = 10
|
|
|
|
user_mock = Mock()
|
|
user_mock.lastfm_username = 'test_username'
|
|
user_mock.notify = False
|
|
user_mock.notify_playlist_updates = False
|
|
user_mock.notify_tag_updates = False
|
|
user_mock.notify_admins = False
|
|
|
|
tag_mock = Mock()
|
|
tag_mock.time_objects = True
|
|
tag_mock.artists = []
|
|
tag_mock.albums = []
|
|
tag_mock.tracks = []
|
|
|
|
update_tag(user=user_mock, tag=tag_mock, spotnet=spotnet, fmnet=fmnet)
|
|
|
|
tag_mock.update.assert_called_once()
|
|
|
|
def test_mocked_artists(self):
|
|
spotnet = Mock()
|
|
fmnet = Mock()
|
|
fmnet.user_scrobble_count.return_value = 10
|
|
|
|
artist_mock = Mock()
|
|
artist_mock.user_scrobbles = 10
|
|
fmnet.artist.return_value = artist_mock
|
|
|
|
user_mock = Mock()
|
|
user_mock.lastfm_username = 'test_username'
|
|
user_mock.notify = False
|
|
user_mock.notify_playlist_updates = False
|
|
user_mock.notify_tag_updates = False
|
|
user_mock.notify_admins = False
|
|
|
|
dict_mock = {'name': 'test_name'}
|
|
|
|
tag_mock = Mock()
|
|
tag_mock.time_objects = False
|
|
tag_mock.artists = [dict_mock, dict_mock, dict_mock]
|
|
tag_mock.albums = []
|
|
tag_mock.tracks = []
|
|
|
|
update_tag(user=user_mock, tag=tag_mock, spotnet=spotnet, fmnet=fmnet)
|
|
|
|
tag_mock.update.assert_called_once()
|
|
self.assertEqual(tag_mock.count, 30)
|
|
self.assertEqual(tag_mock.proportion, 300)
|
|
self.assertEqual(len(tag_mock.artists), 3)
|
|
self.assertEqual(dict_mock['count'], 10)
|
|
|
|
def test_mocked_albums(self):
|
|
spotnet = Mock()
|
|
fmnet = Mock()
|
|
fmnet.user_scrobble_count.return_value = 10
|
|
|
|
album_mock = Mock()
|
|
album_mock.user_scrobbles = 10
|
|
fmnet.album.return_value = album_mock
|
|
|
|
user_mock = Mock()
|
|
user_mock.lastfm_username = 'test_username'
|
|
user_mock.notify = False
|
|
user_mock.notify_playlist_updates = False
|
|
user_mock.notify_tag_updates = False
|
|
user_mock.notify_admins = False
|
|
|
|
dict_mock = {'name': 'test_name', 'artist': 'test_artist'}
|
|
|
|
tag_mock = Mock()
|
|
tag_mock.time_objects = False
|
|
tag_mock.artists = []
|
|
tag_mock.albums = [dict_mock, dict_mock, dict_mock]
|
|
tag_mock.tracks = []
|
|
|
|
update_tag(user=user_mock, tag=tag_mock, spotnet=spotnet, fmnet=fmnet)
|
|
|
|
tag_mock.update.assert_called_once()
|
|
self.assertEqual(tag_mock.count, 30)
|
|
self.assertEqual(tag_mock.proportion, 300)
|
|
self.assertEqual(len(tag_mock.albums), 3)
|
|
self.assertEqual(dict_mock['count'], 10)
|
|
|
|
def test_mocked_tracks(self):
|
|
spotnet = Mock()
|
|
fmnet = Mock()
|
|
fmnet.user_scrobble_count.return_value = 10
|
|
|
|
track_mock = Mock()
|
|
track_mock.user_scrobbles = 10
|
|
fmnet.track.return_value = track_mock
|
|
|
|
user_mock = Mock()
|
|
user_mock.lastfm_username = 'test_username'
|
|
user_mock.notify = False
|
|
user_mock.notify_playlist_updates = False
|
|
user_mock.notify_tag_updates = False
|
|
user_mock.notify_admins = False
|
|
|
|
dict_mock = {'name': 'test_name', 'artist': 'test_artist'}
|
|
|
|
tag_mock = Mock()
|
|
tag_mock.time_objects = False
|
|
tag_mock.artists = []
|
|
tag_mock.albums = []
|
|
tag_mock.tracks = [dict_mock, dict_mock, dict_mock]
|
|
|
|
update_tag(user=user_mock, tag=tag_mock, spotnet=spotnet, fmnet=fmnet)
|
|
|
|
tag_mock.update.assert_called_once()
|
|
self.assertEqual(tag_mock.count, 30)
|
|
self.assertEqual(tag_mock.proportion, 300)
|
|
self.assertEqual(len(tag_mock.tracks), 3)
|
|
self.assertEqual(dict_mock['count'], 10) |