def test_get_random_line_with_search_or_author_retries(db): result = Mock() result.sort = result result.count.side_effect = (0, 1) result.limit.return_value = result result.skip.return_value = result result.next.return_value = {'message': 'fives1'} fake_find = Mock(return_value=result) db.haiku.find = fake_find poems.get_random_line(5, about='me') assert fake_find.call_count == 2 assert fake_find.call_args_list[-1] == call({'syllables': 5})
def test_get_random_line_with_author(db): result = Mock() result.sort = result result.count.return_value = 1 result.limit.return_value = result result.skip.return_value = result result.next.return_value = {'message': u'fives☃'} # Ensure unicode test fake_find = Mock(return_value=result) db.haiku.find = fake_find poems.get_random_line(5, by='me') fake_find.assert_called_with({ 'syllables': 5, 'author': { '$regex': re.compile('me', re.I) } })
def test_get_random_line_with_search(db): result = Mock() result.sort = result result.count.return_value = 1 result.limit.return_value = result result.skip.return_value = result result.next.return_value = {'message': 'fives1'} fake_find = Mock(return_value=result) db.haiku.find = fake_find poems.get_random_line(5, about='me') fake_find.assert_called_with({ 'syllables': 5, 'message': { '$regex': re.compile('me', re.I) } })
def test_get_random_line(db): result = Mock() result.sort = result result.count.return_value = 1 result.limit.return_value = result result.skip.return_value = result result.next.return_value = {'message': 'fives1'} fake_find = Mock(return_value=result) db.haiku.find = fake_find line = poems.get_random_line(5) assert line == 'fives1'
def test_get_random_line_returns_none(db): db.haiku.find.return_value = db db.count.return_value = 0 assert poems.get_random_line(5) is None