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_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¶m=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)
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¶m=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)