Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/common/test_origin_visits.py
# Copyright (C) 2018 The Software Heritage developers | # Copyright (C) 2018-2019 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU Affero General Public License version 3, or any later version | # License: GNU Affero General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
from unittest.mock import patch | import pytest | ||||
from swh.web.common.exc import NotFoundExc | from swh.web.common.exc import NotFoundExc | ||||
from swh.web.common.origin_visits import ( | from swh.web.common.origin_visits import ( | ||||
get_origin_visits, get_origin_visit | get_origin_visits, get_origin_visit | ||||
) | ) | ||||
from swh.web.tests.testcase import WebTestCase | |||||
class OriginVisitsTestCase(WebTestCase): | def test_get_origin_visits(mocker): | ||||
@patch('swh.web.common.service') | mock_service = mocker.patch('swh.web.common.service') | ||||
def test_get_origin_visits(self, mock_service): | |||||
mock_service.MAX_LIMIT = 2 | mock_service.MAX_LIMIT = 2 | ||||
def _lookup_origin_visits(*args, **kwargs): | def _lookup_origin_visits(*args, **kwargs): | ||||
if kwargs['last_visit'] is None: | if kwargs['last_visit'] is None: | ||||
return [{'visit': 1, | return [ | ||||
{ | |||||
'visit': 1, | |||||
'date': '2017-05-06T00:59:10+00:00', | 'date': '2017-05-06T00:59:10+00:00', | ||||
'metadata': {}}, | 'metadata': {} | ||||
{'visit': 2, | }, | ||||
{ | |||||
'visit': 2, | |||||
'date': '2017-08-06T00:59:10+00:00', | 'date': '2017-08-06T00:59:10+00:00', | ||||
'metadata': {}} | 'metadata': {} | ||||
} | |||||
] | ] | ||||
else: | else: | ||||
return [{'visit': 3, | return [ | ||||
{ | |||||
'visit': 3, | |||||
'date': '2017-09-06T00:59:10+00:00', | 'date': '2017-09-06T00:59:10+00:00', | ||||
'metadata': {}} | 'metadata': {} | ||||
} | |||||
] | ] | ||||
mock_service.lookup_origin_visits.side_effect = _lookup_origin_visits | mock_service.lookup_origin_visits.side_effect = _lookup_origin_visits | ||||
origin_info = { | origin_info = { | ||||
'id': 1, | 'id': 1, | ||||
'type': 'git', | 'type': 'git', | ||||
'url': 'https://github.com/foo/bar', | 'url': 'https://github.com/foo/bar', | ||||
} | } | ||||
origin_visits = get_origin_visits(origin_info) | origin_visits = get_origin_visits(origin_info) | ||||
self.assertEqual(len(origin_visits), 3) | assert len(origin_visits) == 3 | ||||
@patch('swh.web.common.origin_visits.get_origin_visits') | |||||
def test_get_origin_visit(self, mock_origin_visits): | def test_get_origin_visit(mocker): | ||||
mock_origin_visits = mocker.patch( | |||||
'swh.web.common.origin_visits.get_origin_visits') | |||||
origin_info = { | origin_info = { | ||||
'id': 2, | 'id': 2, | ||||
'type': 'git', | 'type': 'git', | ||||
'url': 'https://github.com/foo/bar', | 'url': 'https://github.com/foo/bar', | ||||
} | } | ||||
visits = \ | visits = [ | ||||
[{'status': 'full', | { | ||||
'status': 'full', | |||||
'date': '2015-07-09T21:09:24+00:00', | 'date': '2015-07-09T21:09:24+00:00', | ||||
'visit': 1, | 'visit': 1, | ||||
'origin': origin_info['id']}, | 'origin': origin_info['id'] | ||||
{'status': 'full', | }, | ||||
{ | |||||
'status': 'full', | |||||
'date': '2016-02-23T18:05:23.312045+00:00', | 'date': '2016-02-23T18:05:23.312045+00:00', | ||||
'visit': 2, | 'visit': 2, | ||||
'origin': origin_info['id']}, | 'origin': origin_info['id'] | ||||
{'status': 'full', | }, | ||||
{ | |||||
'status': 'full', | |||||
'date': '2016-03-28T01:35:06.554111+00:00', | 'date': '2016-03-28T01:35:06.554111+00:00', | ||||
'visit': 3, | 'visit': 3, | ||||
'origin': origin_info['id']}, | 'origin': origin_info['id'] | ||||
{'status': 'full', | }, | ||||
{ | |||||
'status': 'full', | |||||
'date': '2016-06-18T01:22:24.808485+00:00', | 'date': '2016-06-18T01:22:24.808485+00:00', | ||||
'visit': 4, | 'visit': 4, | ||||
'origin': origin_info['id']}, | 'origin': origin_info['id'] | ||||
{'status': 'full', | }, | ||||
{ | |||||
'status': 'full', | |||||
'date': '2016-08-14T12:10:00.536702+00:00', | 'date': '2016-08-14T12:10:00.536702+00:00', | ||||
'visit': 5, | 'visit': 5, | ||||
'origin': origin_info['id']}] | 'origin': origin_info['id'] | ||||
} | |||||
] | |||||
mock_origin_visits.return_value = visits | mock_origin_visits.return_value = visits | ||||
visit_id = 12 | visit_id = 12 | ||||
with self.assertRaises(NotFoundExc) as cm: | with pytest.raises(NotFoundExc) as e: | ||||
visit = get_origin_visit(origin_info, | visit = get_origin_visit(origin_info, | ||||
visit_id=visit_id) | visit_id=visit_id) | ||||
exception_text = cm.exception.args[0] | |||||
self.assertIn('Visit with id %s' % visit_id, exception_text) | assert e.match('Visit with id %s' % visit_id) | ||||
self.assertIn('url %s' % origin_info['url'], exception_text) | assert e.match('url %s' % origin_info['url']) | ||||
visit = get_origin_visit(origin_info, visit_id=2) | visit = get_origin_visit(origin_info, visit_id=2) | ||||
self.assertEqual(visit, visits[1]) | assert visit == visits[1] | ||||
visit = get_origin_visit( | visit = get_origin_visit( | ||||
origin_info, visit_ts='2016-02-23T18:05:23.312045+00:00') | origin_info, visit_ts='2016-02-23T18:05:23.312045+00:00') | ||||
self.assertEqual(visit, visits[1]) | assert visit == visits[1] | ||||
visit = get_origin_visit( | visit = get_origin_visit( | ||||
origin_info, visit_ts='2016-02-20') | origin_info, visit_ts='2016-02-20') | ||||
self.assertEqual(visit, visits[1]) | assert visit == visits[1] | ||||
visit = get_origin_visit( | visit = get_origin_visit( | ||||
origin_info, visit_ts='2016-06-18T01:22') | origin_info, visit_ts='2016-06-18T01:22') | ||||
self.assertEqual(visit, visits[3]) | assert visit == visits[3] | ||||
visit = get_origin_visit( | visit = get_origin_visit( | ||||
origin_info, visit_ts='2016-06-18 01:22') | origin_info, visit_ts='2016-06-18 01:22') | ||||
self.assertEqual(visit, visits[3]) | assert visit == visits[3] | ||||
visit = get_origin_visit( | visit = get_origin_visit( | ||||
origin_info, visit_ts=1466208000) | origin_info, visit_ts=1466208000) | ||||
self.assertEqual(visit, visits[3]) | assert visit == visits[3] | ||||
visit = get_origin_visit( | visit = get_origin_visit( | ||||
origin_info, visit_ts='2014-01-01') | origin_info, visit_ts='2014-01-01') | ||||
self.assertEqual(visit, visits[0]) | assert visit == visits[0] | ||||
visit = get_origin_visit( | visit = get_origin_visit( | ||||
origin_info, visit_ts='2018-01-01') | origin_info, visit_ts='2018-01-01') | ||||
self.assertEqual(visit, visits[-1]) | assert visit == visits[-1] |