def test_getInfo_should_call_log_error_if_getVideoInfo_fails(self):
        sys.modules["__main__"].cache.sqlGet.return_value = {}
        sys.modules["__main__"].common.fetchPage.return_value = {"status": 200, "content": "something"}
        player = BlipTVPlayer()
        player.getVideoInfo = Mock()
        player.getVideoInfo.return_value = {}

        player.getInfo({"content": "content", "status": 200})

        sys.modules["__main__"].common.log.assert_any_call("Couldn't parse API output, BlipTV doesn't seem to know this video id?")
    def test_getInfo_should_call_core_getVideoInfo_to_parse_bliptv_data(self):
        sys.modules["__main__"].cache.sqlGet.return_value = {}
        sys.modules["__main__"].common.fetchPage.return_value = {"status": 200, "content": "something"}
        sys.modules["__main__"].player.getVideoInfo.return_value = [{"videoid": "some_id"}]
        player = BlipTVPlayer()
        player.getVideoInfo = Mock()
        player.getVideoInfo.return_value = {"id": "some_id"}

        player.getInfo({"content": "content", "status": 200})

        player.getVideoInfo.assert_called_with('content', {})
    def test_getInfo_should_call_report_error_correctly(self):
        sys.modules["__main__"].cache.sqlGet.return_value = {}
        sys.modules["__main__"].common.fetchPage.return_value = {"status": 200, "content": "something"}
        sys.modules["__main__"].player.getVideoInfo.return_value = []
        player = BlipTVPlayer()

        params = {}
        print repr(params)
        video = player.getInfo({"content": "content", "status": 303}, params)
        print repr(video)
        print repr(params)
        assert(video == {})
        assert(params["apierror"] == "content")
    def test_getVideoObject_should_test_local_file(self):
        sys.modules["__main__"].xbmcvfs.exists.return_value = True
        sys.modules["__main__"].xbmcvfs.exists.return_value
        sys.modules["__main__"].settings.getSetting.return_value = "mock_path/"
        player = BlipTVPlayer()
        player.selectVideoQuality = Mock()
        player.selectVideoQuality.return_value = "video-url"
        player._getVideoLinks = Mock()
        player.getInfo = Mock()
        player.getInfo.return_value = {"Title": "mock"}
        
        (video, status) = player.getVideoObject({"action": "check-local", "videoid": "mockid"})

        sys.modules["__main__"].xbmcvfs.exists.assert_called_with('mock_path/mock-[mockid].mp4')
    def test_getVideoObject_should_fail(self):
        sys.modules["__main__"].xbmcvfs.exists.return_value = True
        sys.modules["__main__"].settings.getSetting.return_value = "mock_path/"
        sys.modules["__main__"].language.return_value = "mock error"
        player = BlipTVPlayer()
        player.selectVideoQuality = Mock()
        player.selectVideoQuality.return_value = "video-url"
        player._getVideoLinks = Mock()
        player._getVideoLinks.return_value = False
        player.getInfo = Mock()
        player.getInfo.return_value = {}

        params = {"action": "play", "videoid": "mockid"}
        video = player.getVideoObject(params)
        print "A : " + repr(video)
        print "B : " + repr(params)
        assert(params["apierror"] == "mock error")
    def test_getVideoObject_should_return_correctly(self):
        patcher = patch("urllib2.urlopen")
        patcher.start()
        import urllib2
        urllib2.urlopen().geturl = Mock(return_value="real-video-url")
        player = BlipTVPlayer()
        player.selectVideoQuality = Mock()
        player.selectVideoQuality.return_value = "video-url"
        player._getVideoLinks = Mock()
        player.getInfo = Mock()
        player.getInfo.return_value = {"Title": "mock"}

        video = player.getVideoObject({"action": "download"})
        patcher.stop()

        print "A : " + repr(video)
        assert(video["Title"] == "mock")
        assert(video["video_url"] == "real-video-url")