def test_executeAction_should_call_listMenu_if_action_is_edit_search(self):
        navigation = BlipTVNavigation()
        navigation.listMenu = Mock()

        navigation.executeAction({"action": "edit_search"})

        navigation.listMenu.assert_called_with({"action": "edit_search"})
 def test_addListItem_should_call_addFolderListItem_if_item_doesnt_have_an_action(self):
     navigation = BlipTVNavigation()
     navigation.addFolderListItem = Mock()
     
     navigation.addListItem({}, {})
     
     navigation.addFolderListItem.assert_called_with({}, {})
    def test_addListItem_should_call_addVideoListItem_if_item_action_is_play_video(self):
        navigation = BlipTVNavigation()
        navigation.addVideoListItem = Mock()

        navigation.addListItem({}, {"action": "play_video"})

        navigation.addVideoListItem.assert_called_with({}, {"action": "play_video"}, 0)
 def test_addListItem_should_call_addActionListItem_if_item_has_action(self):
     navigation = BlipTVNavigation()
     navigation.addActionListItem = Mock()
     
     navigation.addListItem({}, {"action": "some_action"})
     
     navigation.addActionListItem.assert_called_with({}, {"action": "some_action"})
 def test_addActionListItem_should_call_utils_get_thumbnail_to_get_thumbnail_path(self):
     sys.argv = ["some_path", -1, "some_params"]
     navigation = BlipTVNavigation()
     
     navigation.addActionListItem({}, {"action": "some_action", "Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"})
     
     sys.modules["__main__"].utils.getThumbnail.assert_called_with("some_thumbnail")
    def test_executeAction_should_call_storage_editStoredSearch_if_action_is_edit_search(self):
        navigation = BlipTVNavigation()
        navigation.listMenu = Mock()

        navigation.executeAction({"action": "edit_search"})

        sys.modules["__main__"].storage.editStoredSearch.assert_called_with({"action": "edit_search"})
 def test_addActionListItem_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.addActionListItem({}, {"action": "some_action", "Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"})
     
     sys.modules["__main__"].xbmcgui.ListItem.assert_called_with("some_title",iconImage='DefaultFolder.png', thumbnailImage='some_image_path')
 def test_addActionListItem_should_call_listitem_setProperty_to_inidicate_item_is_playable_if_item_action_is_playbyid(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     navigation = BlipTVNavigation()
     
     navigation.addActionListItem({}, {"action": "playbyid", "Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"})
     
     sys.modules["__main__"].xbmcgui.ListItem().setProperty.assert_called_with("IsPlayable", "true")
    def test_listMenu_should_call_list_if_store_in_params(self):
        sys.argv = ["something", -1, "something_else"]
        navigation = BlipTVNavigation()
        navigation.list = Mock()
        navigation.addListItem = Mock()
        navigation.listMenu({"path": "/root/some_other_path", "store": "some_store"})

        navigation.list.assert_called_with({"path": "/root/some_other_path", "store": "some_store"})
    def test_executeAction_should_call_addToFavorites_if_action_is_add_favorite(self):
        sys.modules["__main__"].scraper.addShowToMyFavorites = Mock()
        navigation = BlipTVNavigation()
        navigation.addToFavorites = Mock()

        navigation.executeAction({"action": "add_favorite"})

        sys.modules["__main__"].scraper.addShowToMyFavorites.assert_called_with({"action": "add_favorite"})
    def test_executeAction_should_open_settings_if_action_is_settings(self):
        sys.modules["__main__"].storage.deleteFromMyFavoriteShows = Mock()
        navigation = BlipTVNavigation()
        navigation.removeFromFavorites = Mock()

        navigation.executeAction({"action": "settings"})

        sys.modules["__main__"].settings.openSettings.assert_called_with()
    def test_executeAction_should_call_removeFromFavorites_if_action_is_remove_favorite(self):
        sys.modules["__main__"].storage.deleteFromMyFavoriteShows = Mock()
        navigation = BlipTVNavigation()
        navigation.removeFromFavorites = Mock()

        navigation.executeAction({"action": "delete_favorite"})

        sys.modules["__main__"].storage.deleteFromMyFavoriteShows.assert_called_with({"action": "delete_favorite"})
 def test_addFolderListItem_should_call_listitem_setProperty_to_inidicate_item_is_a_folder(self):
     sys.argv = ["some_path", -1, "some_params"]
     navigation = BlipTVNavigation()
     navigation.addFolderContextMenuItems = Mock()
     navigation.addFolderContextMenuItems.return_value = []
     
     navigation.addFolderListItem({}, {"action": "some_action", "Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"})
     
     sys.modules["__main__"].xbmcgui.ListItem().setProperty.assert_called_with('Folder', 'true')
 def test_addFolderListItem_should_call_utils_get_thumbnail_to_get_thumbnail_path(self):
     sys.argv = ["some_path", -1, "some_params"]
     navigation = BlipTVNavigation()
     navigation.addFolderContextMenuItems = Mock()
     navigation.addFolderContextMenuItems.return_value = []
     
     navigation.addFolderListItem({}, {"action": "some_action", "icon": "some_icon", "thumbnail": "some_thumbnail"})
     
     sys.modules["__main__"].utils.getThumbnail.assert_called_with("some_thumbnail")
 def test_addFolderListItem_should_call_addFolderContextMenuItems_to_get_context_menu_items(self):
     sys.argv = ["some_path", -1, "some_params"]
     navigation = BlipTVNavigation()
     navigation.addFolderContextMenuItems = Mock()
     navigation.addFolderContextMenuItems.return_value = []
     
     navigation.addFolderListItem({}, {"action": "some_action", "icon": "some_icon"})
     
     navigation.addFolderContextMenuItems.assert_called_with({}, {"action": "some_action", "icon": "some_icon"})
    def test_showListingError_should_call_showMessage_on_listing_error_with_proper_label(self):
        sys.modules["__main__"].scraper.scrape.return_value = []
        sys.modules["__main__"].language.return_value = "some_string"
        navigation = BlipTVNavigation()

        navigation.showListingError({"scraper": "staff_picks"})

        sys.modules["__main__"].utils.showMessage.assert_any_call("some_string", "some_string")
        sys.modules["__main__"].language.assert_any_call(30601)
    def test_listMenu_should_call_settings_getSetting_to_get_listview(self):
        sys.argv = ["something", -1, "something_else"]
        navigation = BlipTVNavigation()
        navigation.list = Mock()
        navigation.addListItem = Mock()

        navigation.listMenu({"path": "/root/some_other_path"})

        sys.modules["__main__"].settings.getSetting.assert_called_with("list_view")
 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_addFolderListItem_should_call_xbmcplugin_addDirectoryItem_correctly(self):
     sys.argv = ["some_path", -1, "some_params"]
     navigation = BlipTVNavigation()
     navigation.addFolderContextMenuItems = Mock()
     navigation.addFolderContextMenuItems.return_value = []
     
     navigation.addFolderListItem({}, {"feed": "downloads", "Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"})
     
     sys.modules["__main__"].settings.getSetting.assert_called_with("downloadPath")
 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_addActionListItem_should_call_xbmcplugin_addDirectoryItem_correctly(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].xbmcgui.ListItem.return_value = []
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     navigation = BlipTVNavigation()
     
     navigation.addActionListItem({}, {"action": "some_action", "Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"})
     
     sys.modules["__main__"].xbmcplugin.addDirectoryItem.assert_called_with(totalItems = 0, url="some_path?path=None&action=some_action&", isFolder=True, listitem = [], handle=-1)
 def test_addFolderContextMenuItems_should_not_add_any_options_to_next_folders(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", "next": "true"}
     
     cm = navigation.addFolderContextMenuItems(path_params, item_params)
     
     assert(cm == [])
 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_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_executeAction_should_call_downloader_downloadVideo_if_action_is_download(self):
        sys.modules["__main__"].player.getVideoObject = Mock()
        sys.modules["__main__"].player.getVideoObject.return_value = {"videoid": "video1", "video_url": "Mock url", "Title": "Mock Title"}
        sys.modules["__main__"].settings.getSetting.return_value = "some_path"

        navigation = BlipTVNavigation()

        navigation.executeAction({"action": "download"})

        sys.modules["__main__"].downloader.download.assert_called_with("Mock Title-[video1].mp4", {"action": "download", "url": "Mock url", "download_path": "some_path", "useragent": "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3"})
 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_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_addFolderListItem_should_call_utils_buildItemUrl_to_get_proper_item_url(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     navigation = BlipTVNavigation()
     navigation.addFolderContextMenuItems = Mock()
     navigation.addFolderContextMenuItems.return_value = []
     
     navigation.addFolderListItem({}, {"action": "some_action", "Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"})
     
     sys.modules["__main__"].utils.buildItemUrl({"action": "some_action", "Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"})
 def test_addFolderListItem_should_call_listitem_addContextMenuItems_to_add_context_menu(self):
     sys.argv = ["some_path", -1, "some_params"]
     sys.modules["__main__"].utils.getThumbnail.return_value = "some_image_path"
     navigation = BlipTVNavigation()
     navigation.addFolderContextMenuItems = Mock()
     navigation.addFolderContextMenuItems.return_value = [1, 2]
     
     navigation.addFolderListItem({}, {"action": "some_action", "Title": "some_title", "icon": "some_icon", "thumbnail": "some_thumbnail"})
     
     sys.modules["__main__"].xbmcgui.ListItem().addContextMenuItems.assert_called_with([1, 2], replaceItems=False)