def test_set_resolved_url(self):
     context1 = PlayContext('http://foo.bar', None, True)
     plugin = Plugin('test.plugin')
     plugin._handle = 1
     mock_xbmcgui.ListItem.reset_mock()
     plugin._set_resolved_url(context1)
     mock_xbmcgui.ListItem.assert_called_with(path='http://foo.bar')
     mock_xbmcplugin.setResolvedUrl.assert_called_with(1, True, mock_ListItem)
     mock_xbmcplugin.setResolvedUrl.reset_mock()
     play_item = mock.MagicMock()
     context2 = PlayContext('http://foo.bar', play_item, True)
     list_item = mock.MagicMock()
     plugin.create_list_item = mock.MagicMock()
     plugin.create_list_item.return_value = list_item
     plugin._set_resolved_url(context2)
     plugin.create_list_item.assert_called_with(play_item)
     mock_xbmcplugin.setResolvedUrl.assert_called_with(1, True, list_item)
Beispiel #2
0
 def test_set_resolved_url(self):
     context1 = PlayContext('http://foo.bar', None, True)
     plugin = Plugin('test.plugin')
     plugin._handle = 1
     mock_xbmcgui.ListItem.reset_mock()
     plugin._set_resolved_url(context1)
     mock_xbmcgui.ListItem.assert_called_with(path='http://foo.bar')
     mock_xbmcplugin.setResolvedUrl.assert_called_with(
         1, True, mock_ListItem)
     mock_xbmcplugin.setResolvedUrl.reset_mock()
     play_item = mock.MagicMock()
     context2 = PlayContext('http://foo.bar', play_item, True)
     list_item = mock.MagicMock()
     plugin.create_list_item = mock.MagicMock()
     plugin.create_list_item.return_value = list_item
     plugin._set_resolved_url(context2)
     plugin.create_list_item.assert_called_with(play_item)
     mock_xbmcplugin.setResolvedUrl.assert_called_with(1, True, list_item)
    def test_run(self):
        plugin = Plugin('test.plugin')
        plugin.create_listing = mock.MagicMock()
        plugin.resolve_url = mock.MagicMock()
        plugin._add_directory_items = mock.MagicMock()
        plugin._set_resolved_url = mock.MagicMock()
        mock_actions = mock.MagicMock()
        # Test calling 'root' action
        with mock.patch('simpleplugin.sys.argv', ['test.plugin', '1', '']):
            mock_actions.root.return_value = [{'label': 'root'}]
            plugin.actions['root'] = mock_actions.root
            plugin.run(category='Foo')
            mock_actions.root.assert_called_with({})
            plugin.create_listing.assert_called_with([{'label': 'root'}])
            # Test setting plugin category
            mock_xbmcplugin.setPluginCategory.assert_called_with(1, 'Foo')
        # Test calling a child action returning list or generator
        with mock.patch('simpleplugin.sys.argv', ['test.plugin', '1', '?action=foo&param=bar']):
            plugin.create_listing.reset_mock()
            mock_actions.foo.return_value = [{'label': 'foo'}]
            plugin.actions['foo'] = mock_actions.foo
            plugin.run()
            mock_actions.foo.assert_called_with({'action': 'foo', 'param': 'bar'})
            plugin.create_listing.assert_called_with([{'label': 'foo'}])
            plugin.create_listing.reset_mock()
            generator = test_generator()
            mock_actions.foo.return_value = generator
            plugin.run()
            mock_actions.foo.assert_called_with({'action': 'foo', 'param': 'bar'})
            plugin.create_listing.assert_called_with(generator)
        # Test calling a child action returning a str
        with mock.patch('simpleplugin.sys.argv', ['test.plugin', '1', '?action=play_str']):
            mock_actions.play_str.return_value = '/play/path'
            plugin.actions['play_str'] = mock_actions.play_str
            plugin.run()
            plugin.resolve_url.assert_called_with('/play/path')
        # Test calling a child action returning ListContext namedtuple
        with mock.patch('simpleplugin.sys.argv', ['test.plugin', '1', '?action=tuple_listing']):
            plugin._add_directory_items.reset_mock()
            list_context = ListContext(
                [{
                    'url': 'plugin://foo',
                    'label': 'Foo',
                    'is_folder': True
                }],
                True,
                True,
                True,
                (0,),
                50,
                'movies'
            )

            mock_actions.dict_listing.return_value = list_context
            plugin.actions['tuple_listing'] = mock_actions.dict_listing
            plugin.run()
            plugin._add_directory_items.assert_called_with(list_context)
        # Test calling a child action returning PlayContext namedtuple
        with mock.patch('simpleplugin.sys.argv', ['test.plugin', '1', '?action=tuple_play']):
            plugin._set_resolved_url.reset_mock()
            play_context = PlayContext('http://foo.bar', None, True)
            mock_actions.dict_play.return_value = play_context
            plugin.actions['tuple_play'] = mock_actions.dict_play
            plugin.run()
            plugin._set_resolved_url.assert_called_with(play_context)
        # Test unregistered action
        with mock.patch('simpleplugin.sys.argv', ['test.plugin', '1', '?action=invalid']):
            self.assertRaises(SimplePluginError, plugin.run)
Beispiel #4
0
    def test_run(self):
        plugin = Plugin('test.plugin')
        plugin.create_listing = mock.MagicMock()
        plugin.resolve_url = mock.MagicMock()
        plugin._add_directory_items = mock.MagicMock()
        plugin._set_resolved_url = mock.MagicMock()
        mock_actions = mock.MagicMock()
        # Test calling 'root' action
        with mock.patch('simpleplugin.sys.argv', ['test.plugin', '1', '']):
            mock_actions.root.return_value = [{'label': 'root'}]
            plugin.actions['root'] = mock_actions.root
            plugin.run(category='Foo')
            mock_actions.root.assert_called_with({})
            plugin.create_listing.assert_called_with([{'label': 'root'}])
            # Test setting plugin category
            mock_xbmcplugin.setPluginCategory.assert_called_with(1, 'Foo')
        # Test calling a child action returning list or generator
        with mock.patch('simpleplugin.sys.argv',
                        ['test.plugin', '1', '?action=foo&param=bar']):
            plugin.create_listing.reset_mock()
            mock_actions.foo.return_value = [{'label': 'foo'}]
            plugin.actions['foo'] = mock_actions.foo
            plugin.run()
            mock_actions.foo.assert_called_with({
                'action': 'foo',
                'param': 'bar'
            })
            plugin.create_listing.assert_called_with([{'label': 'foo'}])
            plugin.create_listing.reset_mock()
            generator = test_generator()
            mock_actions.foo.return_value = generator
            plugin.run()
            mock_actions.foo.assert_called_with({
                'action': 'foo',
                'param': 'bar'
            })
            plugin.create_listing.assert_called_with(generator)
        # Test calling a child action returning a str
        with mock.patch('simpleplugin.sys.argv',
                        ['test.plugin', '1', '?action=play_str']):
            mock_actions.play_str.return_value = '/play/path'
            plugin.actions['play_str'] = mock_actions.play_str
            plugin.run()
            plugin.resolve_url.assert_called_with('/play/path')
        # Test calling a child action returning ListContext namedtuple
        with mock.patch('simpleplugin.sys.argv',
                        ['test.plugin', '1', '?action=tuple_listing']):
            plugin._add_directory_items.reset_mock()
            list_context = ListContext([{
                'url': 'plugin://foo',
                'label': 'Foo',
                'is_folder': True
            }], True, True, True, (0, ), 50, 'movies')

            mock_actions.dict_listing.return_value = list_context
            plugin.actions['tuple_listing'] = mock_actions.dict_listing
            plugin.run()
            plugin._add_directory_items.assert_called_with(list_context)
        # Test calling a child action returning PlayContext namedtuple
        with mock.patch('simpleplugin.sys.argv',
                        ['test.plugin', '1', '?action=tuple_play']):
            plugin._set_resolved_url.reset_mock()
            play_context = PlayContext('http://foo.bar', None, True)
            mock_actions.dict_play.return_value = play_context
            plugin.actions['tuple_play'] = mock_actions.dict_play
            plugin.run()
            plugin._set_resolved_url.assert_called_with(play_context)
        # Test unregistered action
        with mock.patch('simpleplugin.sys.argv',
                        ['test.plugin', '1', '?action=invalid']):
            self.assertRaises(SimplePluginError, plugin.run)