Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/browse/views/test_revision.py
# Copyright (C) 2017-2018 The Software Heritage developers | # Copyright (C) 2017-2018 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 | ||||
# flake8: noqa | # flake8: noqa | ||||
from unittest.mock import patch | from unittest.mock import patch | ||||
from nose.tools import istest | |||||
from django.utils.html import escape | from django.utils.html import escape | ||||
from swh.web.common.exc import NotFoundExc | from swh.web.common.exc import NotFoundExc | ||||
from swh.web.common.utils import ( | from swh.web.common.utils import ( | ||||
reverse, format_utc_iso_date, get_swh_persistent_id | reverse, format_utc_iso_date, get_swh_persistent_id | ||||
) | ) | ||||
from swh.web.tests.testcase import SWHWebTestCase | from swh.web.tests.testcase import SWHWebTestCase | ||||
from .data.revision_test_data import ( | from .data.revision_test_data import ( | ||||
revision_id_test, revision_metadata_test, | revision_id_test, revision_metadata_test, | ||||
revision_history_log_test | revision_history_log_test | ||||
) | ) | ||||
from .data.origin_test_data import stub_origin_visits | from .data.origin_test_data import stub_origin_visits | ||||
class SwhBrowseRevisionTest(SWHWebTestCase): | class SwhBrowseRevisionTest(SWHWebTestCase): | ||||
@patch('swh.web.browse.views.revision.service') | @patch('swh.web.browse.views.revision.service') | ||||
@patch('swh.web.browse.utils.service') | @patch('swh.web.browse.utils.service') | ||||
@patch('swh.web.common.utils.service') | @patch('swh.web.common.utils.service') | ||||
@istest | def test_revision_browse(self, mock_service_common, mock_service_utils, | ||||
def revision_browse(self, mock_service_common, mock_service_utils, | |||||
mock_service): | mock_service): | ||||
mock_service.lookup_revision.return_value = revision_metadata_test | mock_service.lookup_revision.return_value = revision_metadata_test | ||||
url = reverse('browse-revision', | url = reverse('browse-revision', | ||||
kwargs={'sha1_git': revision_id_test}) | kwargs={'sha1_git': revision_id_test}) | ||||
author_id = revision_metadata_test['author']['id'] | author_id = revision_metadata_test['author']['id'] | ||||
author_name = revision_metadata_test['author']['name'] | author_name = revision_metadata_test['author']['name'] | ||||
▲ Show 20 Lines • Show All 89 Lines • ▼ Show 20 Lines | def test_revision_browse(self, mock_service_common, mock_service_utils, | ||||
swh_dir_id = get_swh_persistent_id('directory', dir_id) | swh_dir_id = get_swh_persistent_id('directory', dir_id) | ||||
swh_dir_id_url = reverse('browse-swh-id', | swh_dir_id_url = reverse('browse-swh-id', | ||||
kwargs={'swh_id': swh_dir_id}) | kwargs={'swh_id': swh_dir_id}) | ||||
self.assertContains(resp, swh_dir_id) | self.assertContains(resp, swh_dir_id) | ||||
self.assertContains(resp, swh_dir_id_url) | self.assertContains(resp, swh_dir_id_url) | ||||
@patch('swh.web.browse.views.revision.service') | @patch('swh.web.browse.views.revision.service') | ||||
@istest | def test_revision_log_browse(self, mock_service): | ||||
def revision_log_browse(self, mock_service): | |||||
per_page = 10 | per_page = 10 | ||||
mock_service.lookup_revision_log.return_value = \ | mock_service.lookup_revision_log.return_value = \ | ||||
revision_history_log_test[:per_page+1] | revision_history_log_test[:per_page+1] | ||||
url = reverse('browse-revision-log', | url = reverse('browse-revision-log', | ||||
kwargs={'sha1_git': revision_id_test}, | kwargs={'sha1_git': revision_id_test}, | ||||
query_params={'per_page': per_page}) | query_params={'per_page': per_page}) | ||||
▲ Show 20 Lines • Show All 89 Lines • ▼ Show 20 Lines | def test_revision_log_browse(self, mock_service): | ||||
self.assertContains(resp, '<tr class="swh-revision-log-entry">', | self.assertContains(resp, '<tr class="swh-revision-log-entry">', | ||||
count=per_page//2) | count=per_page//2) | ||||
self.assertContains(resp, '<li class="page-item disabled"><a class="page-link">Older</a></li>') | self.assertContains(resp, '<li class="page-item disabled"><a class="page-link">Older</a></li>') | ||||
self.assertContains(resp, '<li class="page-item"><a class="page-link" href="%s">Newer</a></li>' % | self.assertContains(resp, '<li class="page-item"><a class="page-link" href="%s">Newer</a></li>' % | ||||
escape(prev_page_url)) | escape(prev_page_url)) | ||||
@patch('swh.web.browse.utils.service') | @patch('swh.web.browse.utils.service') | ||||
@patch('swh.web.browse.views.revision.service') | @patch('swh.web.browse.views.revision.service') | ||||
@istest | def test_revision_request_errors(self, mock_service, mock_utils_service): | ||||
def revision_request_errors(self, mock_service, mock_utils_service): | |||||
mock_service.lookup_revision.side_effect = \ | mock_service.lookup_revision.side_effect = \ | ||||
NotFoundExc('Revision not found') | NotFoundExc('Revision not found') | ||||
url = reverse('browse-revision', | url = reverse('browse-revision', | ||||
kwargs={'sha1_git': revision_id_test}) | kwargs={'sha1_git': revision_id_test}) | ||||
resp = self.client.get(url) | resp = self.client.get(url) | ||||
self.assertEquals(resp.status_code, 404) | self.assertEquals(resp.status_code, 404) | ||||
self.assertTemplateUsed('error.html') | self.assertTemplateUsed('error.html') | ||||
self.assertContains(resp, 'Revision not found', status_code=404) | self.assertContains(resp, 'Revision not found', status_code=404) | ||||
Show All 23 Lines |