Refactored library and radionet class

- Changes in radio.net API (added support for configurable apikey)
- Added better caching
- Added support for browsing additional categories
This commit is contained in:
Eric van Blokland
2021-09-08 00:48:20 +02:00
parent 2f659d8c60
commit 63da37c012
10 changed files with 708 additions and 242 deletions

24
tests/conftest.py Normal file
View File

@@ -0,0 +1,24 @@
from unittest import mock
import pytest
from mopidy_radionet import backend
from mopidy_radionet.radionet import RadioNetClient
from mopidy_radionet.library import RadioNetLibraryProvider
@pytest.fixture
def backend_mock():
backend_mock = mock.Mock(spec=backend.RadioNetBackend)
backend_mock.radionet = RadioNetClient(proxy_config=None)
backend_mock.library = RadioNetLibraryProvider(backend=backend_mock)
backend_mock.radionet.set_apikey('test')
backend_mock.radionet.set_favorites({'lush'})
return backend_mock
@pytest.fixture
def library(backend_mock):
return backend_mock.library
@pytest.fixture
def radionet(backend_mock):
return backend_mock.radionet

142
tests/test_library.py Normal file
View File

@@ -0,0 +1,142 @@
from unittest import mock
def test_browse_root(library):
results = library.browse('radionet:root');
assert 8 == len(results)
def test_browse_localstations(library):
results = library.browse('radionet:localstations');
assert len(results) > 0
page_uri = results[0].uri if results is not None else None
assert page_uri is not None
results = library.browse(page_uri)
assert len(results) > 0
def test_browse_topstations(library):
results = library.browse('radionet:topstations');
assert len(results) > 0
def test_browse_genres(library):
results = library.browse('radionet:genres');
assert len(results) > 0
cat_uri = results[0].uri if results is not None else None
assert cat_uri is not None
results = library.browse(cat_uri)
assert len(results) == 2
sort_uri = results[0].uri if results is not None else None
assert sort_uri is not None
results = library.browse(sort_uri)
assert len(results) > 0
page_uri = results[0].uri if results is not None else None
assert page_uri is not None
results = library.browse(page_uri)
assert len(results) > 0
def test_browse_topics(library):
results = library.browse('radionet:topics');
assert len(results) > 0
cat_uri = results[0].uri if results is not None else None
assert cat_uri is not None
results = library.browse(cat_uri)
assert len(results) == 2
sort_uri = results[0].uri if results is not None else None
assert sort_uri is not None
results = library.browse(sort_uri)
assert len(results) > 0
page_uri = results[0].uri if results is not None else None
assert page_uri is not None
results = library.browse(page_uri)
assert len(results) > 0
def test_browse_languages(library):
results = library.browse('radionet:languages');
assert len(results) > 0
cat_uri = results[0].uri if results is not None else None
assert cat_uri is not None
results = library.browse(cat_uri)
assert len(results) == 2
sort_uri = results[0].uri if results is not None else None
assert sort_uri is not None
results = library.browse(sort_uri)
assert len(results) > 0
page_uri = results[0].uri if results is not None else None
assert page_uri is not None
results = library.browse(page_uri)
assert len(results) > 0
def test_browse_cities(library):
results = library.browse('radionet:cities');
assert len(results) > 0
cat_uri = results[0].uri if results is not None else None
assert cat_uri is not None
results = library.browse(cat_uri)
assert len(results) == 2
sort_uri = results[0].uri if results is not None else None
assert sort_uri is not None
results = library.browse(sort_uri)
assert len(results) > 0
page_uri = results[0].uri if results is not None else None
assert page_uri is not None
results = library.browse(page_uri)
assert len(results) > 0
def test_browse_countries(library):
results = library.browse('radionet:countries');
assert len(results) > 0
cat_uri = results[0].uri if results is not None else None
assert cat_uri is not None
results = library.browse(cat_uri)
assert len(results) == 2
sort_uri = results[0].uri if results is not None else None
assert sort_uri is not None
results = library.browse(sort_uri)
assert len(results) > 0
page_uri = results[0].uri if results is not None else None
assert page_uri is not None
results = library.browse(page_uri)
assert len(results) > 0
def test_browse_favorites(library):
results = library.browse('radionet:favorites');
assert 1 == len(results)

View File

@@ -1,38 +1,28 @@
import unittest
from mopidy_radionet.radionet import RadioNetClient
from unittest import mock
class RadioNetClientTest(unittest.TestCase):
def test_get_api_key(self):
radionet = RadioNetClient()
radionet.get_api_key()
self.assertIsNotNone(radionet.api_key)
def test_get_top_stations(self):
radionet = RadioNetClient()
radionet.get_top_stations()
self.assertGreater(len(radionet.top_stations), 0)
def test_get_local_stations(self):
radionet = RadioNetClient()
radionet.get_local_stations()
self.assertGreater(len(radionet.local_stations), 0)
def test_do_search(self):
radionet = RadioNetClient()
radionet.do_search("radio ram")
self.assertGreater(len(radionet.search_results), 0)
def test_get_favorites(self):
test_favorites = ("Rock Antenne", "radio ram")
radionet = RadioNetClient()
radionet.set_favorites(test_favorites)
radionet.get_favorites()
self.assertEqual(len(radionet.favorite_stations), len(test_favorites))
def test_get_genres(radionet):
genres = radionet.get_genres();
assert len(genres) > 0
if __name__ == "__main__":
unittest.main()
def test_get_top_stations(radionet):
result = radionet.get_category('topstations', 1)
assert len(result) > 0
def test_get_local_stations(radionet):
result = radionet.get_category('localstations', 1)
assert len(result) > 0
def test_do_search(radionet):
result = radionet.do_search("radio ram")
assert len(result) > 0
def test_get_favorites(radionet):
test_favorites = ("Rock Antenne", "radio ram")
radionet.set_favorites(test_favorites)
result = radionet.get_favorites()
assert len(result) == len(test_favorites)