def test_addVideoContextMenuItems_should_call_utils_makeAscii_on_Title(self):
     sys.argv = ["some_plugin", -1, "some_path"]
     sys.modules["__main__"].language.return_value = "some_button_string %s"
     sys.modules["__main__"].common.makeAscii.side_effect = lambda x: x
     navigation = BlipTVNavigation()
     path_params = {}
     item_params = {"Title": "some_title", "path": "some_path", "icon": "some_icon", "thumbnail": "some_thumbnail"}
     
     navigation.addVideoContextMenuItems(path_params,item_params)
     
     sys.modules["__main__"].common.makeAscii.assert_any_call("some_title")
 def test_addVideoListItem_should_call_addVideoContextMenuItems_to_get_context_menu_items(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     navigation = BlipTVNavigation()
     navigation.addVideoContextMenuItems = Mock()
     
     navigation.addVideoListItem({}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"})
     
     navigation.addVideoContextMenuItems.assert_called_with({}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"})
 def test_addVideoListItem_should_call_xbmcgui_ListItem_to_fetch_xbmc_listitem_object(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     navigation = BlipTVNavigation()
     navigation.addVideoContextMenuItems = Mock()
     
     navigation.addVideoListItem({}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"})
     
     sys.modules["__main__"].xbmcgui.ListItem.assert_called_with("some_title", iconImage="some_image_path", thumbnailImage="some_thumbnail")
 def test_addVideoContextMenuItems_should_add_download_video_to_all_video_items(self):
     self.prepareContestMenu()
     navigation = BlipTVNavigation()
     path_params = {}
     item_params = {"Title": "some_title", "path": "some_path", "icon": "some_icon", "thumbnail": "some_thumbnail", "videoid": "some_id"}
     
     cm = navigation.addVideoContextMenuItems(path_params, item_params)
     
     sys.modules["__main__"].language.assert_any_call(30501)
     self.assert_context_menu_contains(cm, "some_button_string %s", 'XBMC.RunPlugin(some_plugin?path=some_path&action=download&videoid=some_id)')
 def test_parseFolderList_should_call_xbmcplugin_endOfDirectory_correctly(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     navigation = BlipTVNavigation()
     navigation.addVideoContextMenuItems = Mock()
     navigation.addFolderListItem = Mock()
     
     navigation.parseFolderList({"user_feed": "some_feed", "path": "some_path"}, [{"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"}])
     
     sys.modules["__main__"].xbmcplugin.endOfDirectory.assert_called_with(handle=-1, succeeded=True, cacheToDisc=False)
 def test_parseFolderList_should_call_addFolderListItem_for_each_item(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     navigation = BlipTVNavigation()
     navigation.addVideoContextMenuItems = Mock()
     navigation.addFolderListItem = Mock()
     
     navigation.parseFolderList({"user_feed": "some_feed", "path": "some_path"}, [{"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"}])
     
     assert(navigation.addFolderListItem.call_count == 3)
 def test_addVideoContextMenuItems_should_not_add_more_videos_by_user_if_item_is_in_uploads_feed(self):
     self.prepareContestMenu()
     sys.modules["__main__"].settings.getSetting.return_value = "something"
     navigation = BlipTVNavigation()
     path_params = {"user_feed": "uploads"}
     item_params = {"Title": "some_title", "path": "some_path", "icon": "some_icon", "thumbnail": "some_thumbnail"}
     
     cm = navigation.addVideoContextMenuItems(path_params, item_params)
     
     self.assert_context_menu_doesnt_contain(cm, "some_button_string Unknown Author", 'XBMC.Container.Update(some_plugin?path=/root/video&feed=uploads&channel=Unknown+Author)')
 def test_addVideoListItem_should_call_listitem_setInfo_to_allow_xbmc_to_sort_and_display_video_info(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     navigation = BlipTVNavigation()
     navigation.addVideoContextMenuItems = Mock()
     navigation.addVideoContextMenuItems.return_value = []
     
     navigation.addVideoListItem({}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"})
     
     sys.modules["__main__"].xbmcgui.ListItem().setInfo.assert_called_with(infoLabels={'icon': 'some_icon', 'thumbnail': 'some_thumbnail', 'Title': 'some_title'}, type='Video')
 def test_parseVideoList_should_skip_items_where_videoid_is_false(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     sys.modules["__main__"].settings.getSetting.return_value = 0
     navigation = BlipTVNavigation()
     navigation.addVideoContextMenuItems = Mock()
     navigation.addVideoListItem = Mock()
     
     navigation.parseVideoList({"user_feed": "some_feed", "path": "some_path"}, [{"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail", "videoid": "false"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"}])
     
     assert(navigation.addVideoListItem.call_count == 2)
 def test_addVideoListItem_should_call_listitem_setProperty_to_indicate_listitem_is_video(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     navigation = BlipTVNavigation()
     navigation.addVideoContextMenuItems = Mock()
     navigation.addVideoContextMenuItems.return_value = []
     
     navigation.addVideoListItem({}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"})
     
     sys.modules["__main__"].xbmcgui.ListItem().setProperty.assert_any_call("Video", "true")
     sys.modules["__main__"].xbmcgui.ListItem().setProperty.assert_any_call("IsPlayable", "true")
 def test_addVideoContextMenuItems_should_add_video_info_option_to_video_items(self):
     self.prepareContestMenu()
     sys.modules["__main__"].settings.getSetting.return_value = "something"
     navigation = BlipTVNavigation()
     path_params = {}
     item_params = {"Title": "some_title", "path": "some_path", "icon": "some_icon", "thumbnail": "some_thumbnail", "videoid": "someid"}
     
     cm = navigation.addVideoContextMenuItems(path_params, item_params)
     
     sys.modules["__main__"].language.assert_any_call(30523)
     self.assert_context_menu_contains(cm, "some_button_string %s", 'XBMC.Action(Info)')
 def test_parseVideoList_should_call_xbmcplugin_endOfDirectory_correctly(self):
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     sys.modules["__main__"].settings.getSetting.return_value = 1
     navigation = BlipTVNavigation()
     navigation.addVideoContextMenuItems = Mock()
     navigation.addVideoListItem = Mock()
     navigation.addFolderListItem = Mock()
     
     navigation.parseVideoList({"scraper": "watch_later", "path": "some_path"}, [{"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail", "videoid": "false"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail", "next": "true"}])
     
     sys.modules["__main__"].xbmcplugin.endOfDirectory.assert_called_with(cacheToDisc=True, handle=-1, succeeded=True)
 def test_parseVideoList_should_call_settings_getSetting_to_get_list_view(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     sys.modules["__main__"].settings.getSetting.return_value = 0
     navigation = BlipTVNavigation()
     navigation.addVideoContextMenuItems = Mock()
     navigation.addVideoListItem = Mock()
     navigation.addFolderListItem = Mock()
     
     navigation.parseVideoList({"scraper": "watch_later", "path": "some_path"}, [{"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail", "videoid": "false"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail", "next": "true"}])
     
     sys.modules["__main__"].settings.getSetting.assert_called_with("list_view")
 def test_addVideoListItem_should_call_xbmcplugin_addDirectoryItem_correctly(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     list_item = Mock()
     sys.modules["__main__"].xbmcgui.ListItem.return_value = list_item 
     navigation = BlipTVNavigation()
     navigation.addVideoContextMenuItems = Mock()
     navigation.addVideoContextMenuItems.return_value = []
     
     navigation.addVideoListItem({}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"})
     
     sys.modules["__main__"].xbmcplugin.addDirectoryItem.assert_called_with(handle=-1, url="some_path?path=/root/video&action=play_video&videoid=None", listitem=list_item, isFolder=False, totalItems=1)
 def ttest_parseVideoList_should_call_addVideoListItem_if_item_is_not_next_item(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     sys.modules["__main__"].settings.getSetting.return_value = 0
     navigation = BlipTVNavigation()
     navigation.addVideoContextMenuItems = Mock()
     navigation.addVideoListItem = Mock()
     navigation.addFolderListItem = Mock()
     
     navigation.parseVideoList({"scraper": "watch_later", "path": "some_path"}, [{"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail", "videoid": "false"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail", "next": "true"}])
     
     navigation.addVideoListItem.assert_called_once_with({'path': 'some_path', 'scraper': 'watch_later'}, {'path': 'some_path', 'icon': 'some_icon', 'index': '1', 'thumbnail': 'some_thumbnail', 'Title': 'some_title'}, 3)
 def test_parseVideoList_should_call_xbmc_executebuiltin_if_list_view_is_set(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     sys.modules["__main__"].settings.getSetting.return_value = 1
     navigation = BlipTVNavigation()
     navigation.addVideoContextMenuItems = Mock()
     navigation.addVideoListItem = Mock()
     navigation.addFolderListItem = Mock()
     
     navigation.parseVideoList({"scraper": "watch_later", "path": "some_path"}, [{"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail", "videoid": "false"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail", "next": "true"}])
     
     sys.modules["__main__"].xbmc.executebuiltin.assert_called_with('Container.SetViewMode(500)')
 def ttest_addVideoContextMenuItems_should_add_add_favorite_option_if_user_is_logged_in_and_item_is_not_in_favorites_feed(self):
     self.prepareContestMenu()
     sys.modules["__main__"].settings.getSetting.return_value = "something"
     navigation = BlipTVNavigation()
     path_params = {}
     item_params = {"Title": "some_title", "path": "some_path", "icon": "some_icon", "thumbnail": "some_thumbnail", "videoid": "some_id"}
     
     cm = navigation.addVideoContextMenuItems(path_params, item_params)
     
     sys.modules["__main__"].language.assert_any_call(30503)
     sys.modules["__main__"].settings.getSetting.assert_any_call("username")
     sys.modules["__main__"].settings.getSetting.assert_any_call("oauth2_access_token")
     self.assert_context_menu_contains(cm, "some_button_string %s", 'XBMC.RunPlugin(some_plugin?path=some_path&action=add_favorite&videoid=some_id&)')
 def test_parseVideoList_should_call_xbmcplugin_addSortMethod_for_valid_sort_methods(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     sys.modules["__main__"].settings.getSetting.return_value = 1
     navigation = BlipTVNavigation()
     navigation.addVideoContextMenuItems = Mock()
     navigation.addVideoListItem = Mock()
     navigation.addFolderListItem = Mock()
     
     navigation.parseVideoList({"scraper": "watch_later", "path": "some_path"}, [{"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail", "videoid": "false"}, {"Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail", "next": "true"}])
     
     sys.modules["__main__"].xbmcplugin.addSortMethod.assert_any_call(handle=-1, sortMethod=sys.modules["__main__"].xbmcplugin.SORT_METHOD_UNSORTED)
     sys.modules["__main__"].xbmcplugin.addSortMethod.assert_any_call(handle=-1, sortMethod=sys.modules["__main__"].xbmcplugin.SORT_METHOD_LABEL)
     sys.modules["__main__"].xbmcplugin.addSortMethod.assert_any_call(handle=-1, sortMethod=sys.modules["__main__"].xbmcplugin.SORT_METHOD_VIDEO_RATING)
     sys.modules["__main__"].xbmcplugin.addSortMethod.assert_any_call(handle=-1, sortMethod=sys.modules["__main__"].xbmcplugin.SORT_METHOD_DATE)
     sys.modules["__main__"].xbmcplugin.addSortMethod.assert_any_call(handle=-1, sortMethod=sys.modules["__main__"].xbmcplugin.SORT_METHOD_PROGRAM_COUNT)
     sys.modules["__main__"].xbmcplugin.addSortMethod.assert_any_call(handle=-1, sortMethod=sys.modules["__main__"].xbmcplugin.SORT_METHOD_VIDEO_RUNTIME)
     sys.modules["__main__"].xbmcplugin.addSortMethod.assert_any_call(handle=-1, sortMethod=sys.modules["__main__"].xbmcplugin.SORT_METHOD_GENRE)