def test_building_url_int_float(self): plugin = RoutedPlugin('test.plugin') @plugin.route('/<int:param1>/<float:param2>') def test(): pass url = plugin.url_for('test', param1=1, param2=3.14) self.assertEqual(url, 'plugin://test.plugin/1/3.14')
def test_building_simple_url(self): plugin = RoutedPlugin('test.plugin') @plugin.route('/foo') def test(): pass self.assertEqual(plugin.url_for('test'), 'plugin://test.plugin/foo') self.assertEqual(plugin.url_for(test), 'plugin://test.plugin/foo')
def test_building_url_args_kwargs(self): plugin = RoutedPlugin('test.plugin') @plugin.route('/<param1>/<param2>/<param3>') def test(): pass url = plugin.url_for('test', 'foo', param2='bar', param3='spam') self.assertEqual(url, 'plugin://test.plugin/foo/bar/spam')
def test_building_url_args(self): plugin = RoutedPlugin('test.plugin') @plugin.route('/<param1>/<param2>') def test(): pass url = plugin.url_for('test', 'foo', u'тест') self.assertEqual(url, u'plugin://test.plugin/foo/%D1%82%D0%B5%D1%81%D1%82')
def test_simple_routing(self): plugin = RoutedPlugin('test.plugin') @plugin.route('/foo') def test_func(): raise AssertionError('Test passed!') with mock.patch('simpleplugin.sys.argv', ['plugin://test.plugin/foo', '1', '']): self.assertRaises(AssertionError, plugin.run)
def test_passing_int_and_float(self): plugin = RoutedPlugin('test.plugin') @plugin.route('/foo/<int:param1>/<float:param2>') def test_func(param1, param2): self.assertEqual(param1, 28) self.assertEqual(param2, 3.1416) with mock.patch('simpleplugin.sys.argv', ['plugin://test.plugin/foo/28/3.1416', '1', '']): plugin.run()
def test_routes_with_same_name(self): plugin = RoutedPlugin('test.plugin') try: @plugin.route('/foo') @plugin.route('/bar') def test_func(): pass except SimplePluginError: pass else: self.fail('Added 2 routes with the same name!')
def test_multiple_routes(self): plugin = RoutedPlugin('test.plugin') @plugin.route('/foo', name='foo_route') @plugin.route('/bar/<param>') def test_func(param='ham'): self.assertEqual(param, 'ham') with mock.patch('simpleplugin.sys.argv', ['plugin://test.plugin/foo', '1', '']): plugin.run() with mock.patch('simpleplugin.sys.argv', ['plugin://test.plugin/bar/spam', '1', '']): self.assertRaises(AssertionError, plugin.run)
def test_passing_arguments(self): plugin = RoutedPlugin('test.plugin') @plugin.route('/foo/<param1>/<param2>') def test_func(param1, param2): self.assertEqual(param1, 'ham') self.assertEqual(param2, u'спам') self.assertEqual(plugin.params.param3, u'Привет, мир!') with mock.patch('simpleplugin.sys.argv', [ 'plugin://test.plugin/foo/ham/%D1%81%D0%BF%D0%B0%D0%BC', '1', '?param3=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%2C+%D0%BC%D0%B8%D1%80%21' ]): plugin.run()
import os import sys import gc import json import xbmc, xbmcgui, xbmcplugin import urllib from simpleplugin import RoutedPlugin from simpleplugin import MemStorage try: import urllib2 except: import urllib.request as urllib2 plugin = RoutedPlugin() storage = MemStorage('legends') @plugin.route('/') def root(): listing = get_releases_list() return plugin.create_listing(listing, content='movies', sort_methods=(xbmcplugin.SORT_METHOD_DATEADDED, xbmcplugin.SORT_METHOD_VIDEO_RATING), cache_to_disk=True) @plugin.route('/film') def film(): allmovies = storage['movies'] use_torrserver = plugin.get_setting('use_engine', True) id = int(plugin.params.id) major_version = int(xbmc.getInfoLabel('System.BuildVersion')[:2])