Skip to content

Commit

Permalink
Improve test coverage (#117)
Browse files Browse the repository at this point in the history
* Improve coverage
  • Loading branch information
michaelarnauts committed Oct 26, 2019
1 parent 38d7c5b commit 1a4e60b
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 57 deletions.
6 changes: 3 additions & 3 deletions resources/lib/kodiwrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -529,9 +529,9 @@ def end_of_directory(self):

def log(self, message, log_level=LOG_INFO, **kwargs):
""" Log info messages to Kodi """
if not self._global_debug_logging and self._debug_logging and log_level in [LOG_DEBUG, LOG_INFO]:
# If Debug Logging is not enabled, Kodi filters everything up to NOTICE out
log_level = LOG_NOTICE
if not self._debug_logging and log_level in [LOG_DEBUG]:
# Don't log when debug_logging is false
return
if kwargs:
import string
message = string.Formatter().vformat(message, (), SafeDict(**kwargs))
Expand Down
6 changes: 4 additions & 2 deletions resources/lib/vtmgo/vtmgoepg.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,8 @@ def get_details(self, channel, program_type, epg_id):
elif program_type == 'oneoffs':
url = self.DETAILS_URL.format(channel=channel, type='oneoff', uuid=epg_id)
else:
raise Exception('Unknown broadcast type %s.' % program_type)
self._kodi.log('Unknown broadcast type {type}.', LOG_ERROR, type=program_type)
return None

# Fetch data
response = self._get_url(url)
Expand All @@ -161,7 +162,8 @@ def get_details(self, channel, program_type, epg_id):
matches = re.search(r'EPG_REDUX_DATA=([^;]+);', response)
if not matches:
self._kodi.log('Got response: {response}', LOG_ERROR, response=response)
raise Exception('Could not parse EPG details.')
self._kodi.log('Could not parse EPG details.', LOG_ERROR)
return None

data = json.loads(matches.group(1))

Expand Down
3 changes: 3 additions & 0 deletions test/test_routing.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ def test_catalog_recommendations_menu(self):
def test_catalog_mylist_menu(self):
plugin.run([routing.url_for(plugin.show_mylist), '0', ''])

def test_catalog_continuewatching_menu(self):
plugin.run([routing.url_for(plugin.show_continuewatching), '0', ''])

def test_search_menu(self):
plugin.run([routing.url_for(plugin.show_search), '0', ''])
plugin.run([routing.url_for(plugin.show_search, query='nieuws'), '0', ''])
Expand Down
68 changes: 36 additions & 32 deletions test/test_vtmgo.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
from urllib3.exceptions import InsecureRequestWarning

from resources.lib.kodiwrapper import KodiWrapper
from resources.lib.modules.player import Player
from resources.lib.vtmgo import vtmgo, vtmgostream, vtmgoauth
from resources.lib.vtmgo.vtmgo import Movie, Program
from resources.lib.vtmgo.vtmgostream import StreamGeoblockedException

kodi = KodiWrapper()
Expand All @@ -26,6 +28,7 @@ def __init__(self, *args, **kwargs):
self._vtmgoauth = vtmgoauth.VtmGoAuth(kodi)
self._vtmgo = vtmgo.VtmGo(kodi)
self._vtmgostream = vtmgostream.VtmGoStream(kodi)
self._player = Player(kodi)

def setUp(self):
# Don't warn that we don't close our HTTPS connections, this is on purpose.
Expand All @@ -43,54 +46,55 @@ def test_get_config(self):
self.assertTrue(config)
# print(config)

def test_get_recommendations(self):
recommendations = self._vtmgo.get_recommendations()
self.assertTrue(recommendations)
# print(main)

def test_get_mylist(self):
mylist = self._vtmgo.get_swimlane('my-list')
self.assertIsInstance(mylist, list)
# print(mylist)

def test_get_categories(self):
def test_catalog(self):
categories = self._vtmgo.get_categories()
self.assertTrue(categories)
# print(categories)

items = self._vtmgo.get_items('films')
self.assertTrue(items)
# print(items)

def test_get_live(self):
items = self._vtmgo.get_live_channels()
items = self._vtmgo.get_items('all')
self.assertTrue(items)
# print(items)

def test_get_program(self):
info = self._vtmgo.get_program('e892cf10-5100-42ce-8d59-6b5c03cc2b96')
# Movies
movie = next(a for a in items if isinstance(a, Movie) and not a.geoblocked)
info = self._vtmgo.get_movie(movie.movie_id)
self.assertTrue(info)
# print(info)
try:
self._player.play('movies', info.movie_id)
except StreamGeoblockedException:
pass

def test_get_episode(self):
info = self._vtmgo.get_episode('ae0fa98d-6ed5-4f4a-8581-a051ed3bb755')
# Programs
program = next(a for a in items if isinstance(a, Program) and not a.geoblocked)
info = self._vtmgo.get_program(program.program_id)
self.assertTrue(info)
# print(info)

def test_get_live_stream(self):
season = list(info.seasons.values())[0]
episode = list(season.episodes.values())[0]
info = self._vtmgo.get_episode(episode.episode_id)
self.assertTrue(info)
try:
info = self._vtmgostream.get_stream('channels', 'd8659669-b964-414c-aa9c-e31d8d15696b')
self.assertTrue(info)
# print(info)
self._player.play('episodes', info.episode_id)
except StreamGeoblockedException:
pass

def test_get_vod_stream(self):
def test_recommendations(self):
recommendations = self._vtmgo.get_recommendations()
self.assertTrue(recommendations)
# print(main)

def test_mylist(self):
mylist = self._vtmgo.get_swimlane('my-list')
self.assertIsInstance(mylist, list)
# print(mylist)

def test_live(self):
channel = self._vtmgo.get_live_channel('vtm')
self.assertTrue(channel)
# print(items)

try:
# 13 Geboden - Episode 2
info = self._vtmgostream.get_stream('episodes', '2fafb247-0368-46d4-bdcf-fb209420e715')
self.assertTrue(info)
# print(info)
self._player.play('channels', channel.channel_id)
except StreamGeoblockedException:
pass

Expand Down
43 changes: 31 additions & 12 deletions test/test_vtmgoepg.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@

from urllib3.exceptions import InsecureRequestWarning

from resources.lib import plugin
from resources.lib.kodiwrapper import KodiWrapper
from resources.lib.vtmgo import vtmgoepg

kodi = KodiWrapper()
routing = plugin.routing


class TestVtmGoEpg(unittest.TestCase):
Expand All @@ -35,27 +37,44 @@ def test_get_epg(self):
from datetime import date

# Get list of EPG for today
epg = self._vtmgoepg.get_epg(channel='vtm', date='today')
epg = self._vtmgoepg.get_epg(channel='vitaya')
self.assertTrue(epg)

# Get list of EPG for tomorrow
epg = self._vtmgoepg.get_epg(channel='vtm', date='tomorrow')
epg = self._vtmgoepg.get_epg(channel='vtm', date=date.today().strftime('%Y-%m-%d'))
self.assertTrue(epg)

# Get list of EPG for tomorrow
epg_tomorrow = self._vtmgoepg.get_epg(channel='vtm', date='tomorrow')
self.assertTrue(epg_tomorrow)

# Get list of EPG for yesterday
epg = self._vtmgoepg.get_epg(channel='vtm', date='yesterday')
self.assertTrue(epg)
epg_yesterday = self._vtmgoepg.get_epg(channel='vtm', date='yesterday')
self.assertTrue(epg_yesterday)

# Get list of EPG for today
epg = self._vtmgoepg.get_epg(channel='vtm', date=date.today().strftime('%Y-%m-%d'))
self.assertTrue(epg)
epg_today = self._vtmgoepg.get_epg(channel='vtm', date='today')
self.assertTrue(epg_today)

combined_broadcasts = epg_today.broadcasts + epg_tomorrow.broadcasts + epg_yesterday.broadcasts

broadcast = next(b for b in combined_broadcasts if b.playable_type == 'episodes')
if broadcast:
details = self._vtmgoepg.get_details(channel='vtm', program_type=broadcast.playable_type, epg_id=broadcast.uuid)
self.assertTrue(details)
plugin.run([routing.url_for(plugin.show_program_from_epg, channel='vtm', program=broadcast.uuid), '0', ''])

broadcast = next(b for b in combined_broadcasts if b.playable_type == 'movies')
if broadcast:
details = self._vtmgoepg.get_details(channel='vtm', program_type=broadcast.playable_type, epg_id=broadcast.uuid)
self.assertTrue(details)
plugin.run([routing.url_for(plugin.play_epg_program, channel='vtm', program_type=broadcast.playable_type, epg_id=broadcast.uuid, aired='123'), '0', ''])

# Take first broadcast of vtm channel
first = epg.broadcasts[0]
broadcast = next(b for b in combined_broadcasts if b.playable_type == 'oneoffs')
if broadcast:
details = self._vtmgoepg.get_details(channel='vtm', program_type=broadcast.playable_type, epg_id=broadcast.uuid)
self.assertTrue(details)

# Fetch details
details = self._vtmgoepg.get_details(channel='vtm', program_type=first.playable_type, epg_id=first.uuid)
self.assertTrue(details)
plugin.run([routing.url_for(plugin.show_program_from_epg, channel='vtm', program='error'), '0', ''])


if __name__ == '__main__':
Expand Down
15 changes: 7 additions & 8 deletions test/userdata/addon_settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,14 @@
"plugin.video.vtm.go": {
"_comment": "do-not-add-email-and-password-here",
"debug_logging": "false",
"max_bandwidth": 4096,
"username": "",
"password": "",
"show_subtitles": "true"
"interface_show_recommendations": "true",
"interface_show_mylist": "true",
"interface_show_continuewatching": "true",
"interface_show_kids_zone": "true",
"show_subtitles": "true",
"max_bandwidth": "0"
},
"script.module.inputstreamhelper": {
"disabled": "false",
"last_update": "",
"update_frequency": "14",
"version": ""
"disabled": "true"
}
}

0 comments on commit 1a4e60b

Please sign in to comment.