diff --git a/Readme.md b/Readme.md index 4263369..1582998 100644 --- a/Readme.md +++ b/Readme.md @@ -4,8 +4,6 @@ Simple example plugin for Kodi mediacenter This is a simple yet fully functional example of a video plugin for [Kodi](http://kodi.tv) mediacenter. Please read the comments in the plugin code for more details. -**tests/** folder includes a simple example for partial unit testing of the plugin code. - The plugin uses free sample videos are provided by [www.vidsplay.com](http://www.vidsplay.com/). License: [GPL v.3](http://www.gnu.org/copyleft/gpl.html) diff --git a/tests/tests.py b/tests/tests.py deleted file mode 100644 index bab2215..0000000 --- a/tests/tests.py +++ /dev/null @@ -1,63 +0,0 @@ -# License: GPL v3: http://www.gnu.org/copyleft/gpl.html -# This is a very minimalistic example of unit testing for Kodi addons. -# Perquisites: -# xbmcstubs: https://github.com/romanvm/xbmcstubs -# mock: https://pypi.python.org/pypi/mock -__author__ = 'Roman_V_M' - -import unittest -import os -import sys -import mock -# Add our plugin to sys.path -sys.path.append(os.path.join(os.path.dirname(os.path.dirname(__file__)), 'plugin.video.expample')) -# Mock plugin call parameters so that our plugin can be imported correctly -with mock.patch('sys.argv', ['plugin://plugin.video.example', '5', '']): - # Import our plugin for testing - import default - - -class RouterTestCase(unittest.TestCase): - """ - Test router function - - router() function includes custom logic for calling other - functions depending on a provided paramstring. - So it's a good candidate for unit testing. - We don't test other functions here - so they are replaced with mocks. - """ - @mock.patch('default.list_categories') - def test_router_with_no_params(self, mock_list_categories): - """ - Test router with an empty paramstring - """ - default.router('') - mock_list_categories.assert_called_with() - - @mock.patch('default.list_videos') - def test_router_list_videos(self, mock_list_videos): - """ - Test router for open a category request - """ - default.router('?action=listing&category=Animals') - mock_list_videos.assert_called_with('Animals') - - @mock.patch('default.play_video') - def test_router_play_video(self, mock_play_video): - """ - Test router for a play video request - """ - default.router('?action=play&video=http://test.mkv') - mock_play_video.assert_called_with('http://test.mkv') - -# list_categories(), list_videos() and play_video() functions include -# mostly calls to Kody Python API with little or no custom logic. -# So they are bad candidates for unit testing outside Kodi. -# They are better tested on a running Kodi instance. -# It is always a good idea to separate Kodi and non-Kodi logic -# into separate units of code (functions, classes, modules). - -if __name__ == '__main__': - # Run our tests - unittest.main()