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_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()
'url': plugin.url_for('film', id=release['filmID']), 'context_menu': cm }) num += 1 return listing @plugin.route('/mark_watched') def mark_watched(): id = plugin.params.id with plugin.get_storage("watched") as storage: storage[id] = 1 return xbmc.executebuiltin("Container.Refresh") @plugin.route('/mark_unwatched') def mark_unwatched(): id = plugin.params.id with plugin.get_storage("watched") as storage: storage[id] = 0 return xbmc.executebuiltin("Container.Refresh") def get_playcount(id): count = 0 with plugin.get_storage("watched") as storage: count = storage.get(str(id), 0) return count if __name__ == '__main__': plugin.run() gc.collect()