示例#1
0
def test_get_total_posts(total_posts_from_data, max_posts, limit_start, data):
    """test method"""
    default_total_posts = 0
    with mock.patch('tumblr_ids.tumblr.Tumblr.__init__', return_value=None), \
            mock.patch('tumblr_ids.tumblr.utils') as m_utils:
        m_utils.download_page.return_value = data
        from tumblr_ids.tumblr import Tumblr
        obj = Tumblr(blogs=mock.Mock())
        obj.total_post_re = mock.Mock()
        obj.total_post_re.findall.return_value = [total_posts_from_data]
        obj.max_posts = max_posts
        obj.limit_start = limit_start
        obj.post_queue = mock.Mock()
        obj.base_url = mock.Mock()
        obj.tag = mock.Mock()
        obj.num = 1
        obj.total_posts = default_total_posts
        # run
        res = obj._get_total_posts()
        if not data:
            assert res == default_total_posts
        elif not max_posts:
            assert res == int(total_posts_from_data)
            if limit_start < res:
                obj.post_queue.put.called_once_with(obj.limit_start)
            else:
                obj.post_queue.put.assert_not_called()
        elif max_posts:
            assert res == min(int(total_posts_from_data), max_posts)
            if limit_start < res:
                obj.post_queue.put.called_once_with(obj.limit_start)
            else:
                obj.post_queue.put.assert_not_called()
        else:
            raise NotImplementedError
def test_get_total_posts(total_posts_from_data, max_posts, limit_start, data):
    """test method"""
    default_total_posts = 0
    with mock.patch('tumblr_ids.tumblr.Tumblr.__init__', return_value=None), \
            mock.patch('tumblr_ids.tumblr.utils') as m_utils:
        m_utils.download_page.return_value = data
        from tumblr_ids.tumblr import Tumblr
        obj = Tumblr(blogs=mock.Mock())
        obj.total_post_re = mock.Mock()
        obj.total_post_re.findall.return_value = [total_posts_from_data]
        obj.max_posts = max_posts
        obj.limit_start = limit_start
        obj.post_queue = mock.Mock()
        obj.base_url = mock.Mock()
        obj.tag = mock.Mock()
        obj.num = 1
        obj.total_posts = default_total_posts
        # run
        res = obj._get_total_posts()
        if not data:
            assert res == default_total_posts
        elif not max_posts:
            assert res == int(total_posts_from_data)
            if limit_start < res:
                obj.post_queue.put.called_once_with(obj.limit_start)
            else:
                obj.post_queue.put.assert_not_called()
        elif max_posts:
            assert res == min(int(total_posts_from_data), max_posts)
            if limit_start < res:
                obj.post_queue.put.called_once_with(obj.limit_start)
            else:
                obj.post_queue.put.assert_not_called()
        else:
            raise NotImplementedError
示例#3
0
def test_str(total_posts):
    """test method."""
    txt_fmt = "{0} has {1} posts, left {2} json to parse, left {3} imgs to download"
    with mock.patch('tumblr_ids.tumblr.Tumblr.__init__', return_value=None):
        from tumblr_ids.tumblr import Tumblr
        obj = Tumblr(blogs=mock.Mock())
        obj.total_posts = total_posts
        obj._get_total_posts = mock.Mock()
        obj.blog = mock.Mock()
        obj.post_queue = mock.Mock()
        obj.img_queue = mock.Mock()
        assert str(obj) == txt_fmt.format(obj.blog, obj.total_posts,
                                          obj.post_queue.qsize.return_value,
                                          obj.img_queue.qsize.return_value)
def test_str(total_posts):
    """test method."""
    txt_fmt = "{0} has {1} posts, left {2} json to parse, left {3} imgs to download"
    with mock.patch('tumblr_ids.tumblr.Tumblr.__init__', return_value=None):
        from tumblr_ids.tumblr import Tumblr
        obj = Tumblr(blogs=mock.Mock())
        obj.total_posts = total_posts
        obj._get_total_posts = mock.Mock()
        obj.blog = mock.Mock()
        obj.post_queue = mock.Mock()
        obj.img_queue = mock.Mock()
        assert str(obj) == txt_fmt.format(
            obj.blog, obj.total_posts, obj.post_queue.qsize.return_value,
            obj.img_queue.qsize.return_value
        )
def test_get_imgs(is_img_queue_empty, need_save, total_posts_default, get_total_posts_retval):
    """test method."""
    with mock.patch('tumblr_ids.tumblr.Tumblr.__init__', return_value=None):
        from tumblr_ids.tumblr import Tumblr
        obj = Tumblr(blog=mock.Mock())
        obj.threads_num = 1
        obj.tags = [mock.Mock()]
        obj.total_posts = total_posts_default
        obj.need_save = need_save
        obj.img_queue = mock.Mock()
        obj.img_queue.empty.return_value = is_img_queue_empty
        obj._download_imgs = mock.Mock()
        obj._get_img_urls = mock.Mock()
        obj._get_total_posts = mock.Mock(return_value=get_total_posts_retval)
        # run
        obj.get_imgs()
        # test
        assert obj.total_posts == 0
        if total_posts_default or get_total_posts_retval:
            obj._get_img_urls.assert_called_once_with()
        if need_save and not is_img_queue_empty:
            obj._download_imgs.assert_called_once_with()
def test_get_imgs_using_threading(total_posts_default, get_total_posts_retval, need_save):
    """test method."""
    with mock.patch('tumblr_ids.tumblr.Tumblr.__init__', return_value=None):
        from tumblr_ids.tumblr import Tumblr
        obj = Tumblr(blog=mock.Mock())
        obj.need_save = need_save
        obj.tags = [mock.Mock()]
        obj.total_posts = total_posts_default
        obj._get_total_posts = mock.Mock(return_value=get_total_posts_retval)
        obj._process_img_queue = mock.Mock()
        obj._run_threads = mock.Mock()
        # run
        obj.get_imgs_using_threading()
        # test
        assert obj.tag == obj.tags[0]
        assert obj.total_posts == 0
        if total_posts_default or get_total_posts_retval:
            obj._run_threads.assert_called_once_with()
        if get_total_posts_retval:
            obj._run_threads.assert_called_once_with()
        if need_save:
            obj._process_img_queue.assert_called_once_with([])
示例#7
0
def test_get_imgs(is_img_queue_empty, need_save, total_posts_default,
                  get_total_posts_retval):
    """test method."""
    with mock.patch('tumblr_ids.tumblr.Tumblr.__init__', return_value=None):
        from tumblr_ids.tumblr import Tumblr
        obj = Tumblr(blog=mock.Mock())
        obj.threads_num = 1
        obj.tags = [mock.Mock()]
        obj.total_posts = total_posts_default
        obj.need_save = need_save
        obj.img_queue = mock.Mock()
        obj.img_queue.empty.return_value = is_img_queue_empty
        obj._download_imgs = mock.Mock()
        obj._get_img_urls = mock.Mock()
        obj._get_total_posts = mock.Mock(return_value=get_total_posts_retval)
        # run
        obj.get_imgs()
        # test
        assert obj.total_posts == 0
        if total_posts_default or get_total_posts_retval:
            obj._get_img_urls.assert_called_once_with()
        if need_save and not is_img_queue_empty:
            obj._download_imgs.assert_called_once_with()
示例#8
0
def test_get_imgs_using_threading(total_posts_default, get_total_posts_retval,
                                  need_save):
    """test method."""
    with mock.patch('tumblr_ids.tumblr.Tumblr.__init__', return_value=None):
        from tumblr_ids.tumblr import Tumblr
        obj = Tumblr(blog=mock.Mock())
        obj.need_save = need_save
        obj.tags = [mock.Mock()]
        obj.total_posts = total_posts_default
        obj._get_total_posts = mock.Mock(return_value=get_total_posts_retval)
        obj._process_img_queue = mock.Mock()
        obj._run_threads = mock.Mock()
        # run
        obj.get_imgs_using_threading()
        # test
        assert obj.tag == obj.tags[0]
        assert obj.total_posts == 0
        if total_posts_default or get_total_posts_retval:
            obj._run_threads.assert_called_once_with()
        if get_total_posts_retval:
            obj._run_threads.assert_called_once_with()
        if need_save:
            obj._process_img_queue.assert_called_once_with([])