diff --git a/swh/loader/base/tests/test_download.py b/swh/loader/base/tests/test_download.py new file mode 100644 --- /dev/null +++ b/swh/loader/base/tests/test_download.py @@ -0,0 +1,73 @@ +# Copyright (C) 2019 The Software Heritage developers +# See the AUTHORS file at the top-level directory of this distribution +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information + +import requests_mock + + +class TestIf_Modified_Since(): + + def test_filter_package_versions(): + pass + + def test_invalid_request(): + pass + + +class TestcompareField(): + tarballs = [] + + def check_compare_field(self): + """Check if the `compare_field` variable is declared + """ + fl = self.get_fl() + if fl.compare_field == ("""Field used to identify if the package + version is previously archived"""): + assert False + + def test_filter_package_versions(self): + """ + + """ + # test for no known version + fl = self.get_fl() + filtered_tarballs = fl.filter_package_versions(self.tarballs, None) + assert filtered_tarballs == self.tarballs + + known_versions = {} + # test with one known version + # Assuming first tarball is already known + key = fl.compare_field + known_tarball_key = self.tarballs[0][key] + known_versions[known_tarball_key] = 'some_revision_id' + filtered_tarballs = fl.filter_package_versions(self.tarballs, + known_versions) + # one tarball removed + assert len(filtered_tarballs) == (len(self.tarballs) - 1) + + # Check if the know tarball is present in filtered tarballs + for tarball in filtered_tarballs: + if known_tarball_key in tarball: + assert False + + # if all versions are known + for tarball in self.tarballs: + known_versions[tarball[key]] = 'some_revision_id' + + filtered_tarballs = fl.filter_package_versions(self.tarballs, + known_versions) + assert filtered_tarballs == [] + + @requests_mock.Mocker() + def test_invalid_request(self, http_mocker): + """ + + """ + for tarball in self.tarballs: + http_mocker.get(tarball['url'], text='Not Found', status_code=404) + + fl = self.get_fl() + generator = fl.prepare_package_versions(self.tarballs) + ll = [data for data in generator] + assert ll == [] diff --git a/swh/loader/base/tests/test_loader.py b/swh/loader/base/tests/test_loader.py new file mode 100644 --- /dev/null +++ b/swh/loader/base/tests/test_loader.py @@ -0,0 +1,60 @@ +# Copyright (C) 2019 The Software Heritage developers +# See the AUTHORS file at the top-level directory of this distribution +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information + + +class TestLoader(): + + expected_revision = {} + + def get_fl(self): + pass + + def get_response(self): + """Call convert_to_standard_format() and pass the output + + """ + pass + + def test_convert_to_standard_format(self): + """Test required field in `convert_to_standard_format()` output + """ + + package_details = self.get_response() + # Check for required field in output of convert_to_standard_format() + for key in ['name', 'origin_url', 'tarballs']: + if key not in package_details: + assert False + + # Check for `url` key in tarballs key + for package in package_details['tarballs']: + if 'url' not in package: + assert False + + def test_required_variable(self): + """Test if the required variable is declared in the loader class + + """ + fl = self.get_fl() + self.assertNotEqual(fl.loader_name, 'Name of the package manager') + self.assertNotEqual(fl.class_name, 'Name of the loader class') + + def test_download_generate_hash(self): + """Test store file + Make me + + """ + pass + + def test_first_visit(self): + """ + + """ + pass + + def test_second_visit(self): + """ + + """ + pass diff --git a/swh/loader/base/tests/test_revision.py b/swh/loader/base/tests/test_revision.py new file mode 100644 --- /dev/null +++ b/swh/loader/base/tests/test_revision.py @@ -0,0 +1,44 @@ +# Copyright (C) 2015-2018 The Software Heritage developers +# See the AUTHORS file at the top-level directory of this distribution +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information +''' +from unittest.mock import patch + +from swh.loader.base import build_revision as build + +# Under construction + + +class TestBuild_Revision(): + + expected_revision = {} + + @patch('swh.loader.base.build_revision.directory') + def test_compute_revision(self, mock_directory): + package_source_data = {} + mock_directory.return_value = 'some-other-time' + actual_revision = build.compute_revision('/some/path', + package_source_data) + # make me + expected_revision = { + 'date': { + 'timestamp': 'some-other-time', + 'offset': build.UTC_OFFSET, + }, + 'committer_date': { + 'timestamp': 'some-other-time', + 'offset': build.UTC_OFFSET, + }, + 'author': build.SWH_PERSON, + 'committer': build.SWH_PERSON, + 'type': build.REVISION_TYPE, + 'message': build.REVISION_MESSAGE, + 'synthetic': True, + } + + # then + self.assertEqual(actual_revision, expected_revision) + + mock_directory.assert_called_once_with('/some/path') +'''