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
示例#2
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_img_urls(data):
    """test method."""
    q_item = mock.Mock()
    item1 = mock.Mock()
    item2 = mock.Mock()
    with mock.patch('tumblr_ids.tumblr.Tumblr.__init__', return_value=None), \
            mock.patch('tumblr_ids.tumblr.utils') as m_utils, \
            mock.patch('tumblr_ids.tumblr.get_video_url') as m_get_vu:
        m_utils.download_page.return_value = data
        m_get_vu.return_value = [item2]
        from tumblr_ids.tumblr import Tumblr
        obj = Tumblr(blog=mock.Mock())
        obj.post_queue = queue.Queue()
        obj.post_queue.put(q_item)
        obj.base_url = mock.Mock()
        obj.num = mock.Mock()
        obj.tag = mock.Mock()
        obj.proxies = mock.Mock()
        obj.img_re = mock.Mock()
        obj.img_re.findall.return_value = [item1]
        obj._process_images = mock.Mock()
        obj._process_images.return_value = {'is_limit_reached': False, 'image_counter': 0}
        # run
        obj._get_img_urls()
        # test
        m_utils.download_page.assert_called_once_with(
            "{}{}&num={}&tagged={}".format(obj.base_url, q_item, obj.num, obj.tag),
            proxies=obj.proxies
        )
        if data:
            obj._process_images(
                image_counter=0,
                images=[item1, item2],
                is_limit_reached=False
            )
示例#4
0
def test_get_img_urls(data):
    """test method."""
    q_item = mock.Mock()
    item1 = mock.Mock()
    item2 = mock.Mock()
    with mock.patch('tumblr_ids.tumblr.Tumblr.__init__', return_value=None), \
            mock.patch('tumblr_ids.tumblr.utils') as m_utils, \
            mock.patch('tumblr_ids.tumblr.get_video_url') as m_get_vu:
        m_utils.download_page.return_value = data
        m_get_vu.return_value = [item2]
        from tumblr_ids.tumblr import Tumblr
        obj = Tumblr(blog=mock.Mock())
        obj.post_queue = queue.Queue()
        obj.post_queue.put(q_item)
        obj.base_url = mock.Mock()
        obj.num = mock.Mock()
        obj.tag = mock.Mock()
        obj.proxies = mock.Mock()
        obj.img_re = mock.Mock()
        obj.img_re.findall.return_value = [item1]
        obj._process_images = mock.Mock()
        obj._process_images.return_value = {
            'is_limit_reached': False,
            'image_counter': 0
        }
        # run
        obj._get_img_urls()
        # test
        m_utils.download_page.assert_called_once_with(
            "{}{}&num={}&tagged={}".format(obj.base_url, q_item, obj.num,
                                           obj.tag),
            proxies=obj.proxies)
        if data:
            obj._process_images(image_counter=0,
                                images=[item1, item2],
                                is_limit_reached=False)