from ckanext.odsh.validation import * import ckan.plugins.toolkit as toolkit import ckan.model as modelMock import sys import json import pytest from mock import MagicMock, Mock, patch def mockInvalid(*args, **kwargs): return Exception(*args, **kwargs) def mock_(s): return s m = MagicMock() class MissingMock: pass m.Missing = MissingMock sys.modules['ckan'] = MagicMock() sys.modules['ckan.plugins'] = MagicMock() sys.modules['ckan.plugins.toolkit'] = MagicMock() sys.modules['ckan.model'] = MagicMock() sys.modules['ckan.lib'] = MagicMock() sys.modules['ckan.lib.navl'] = MagicMock() sys.modules['ckan.lib.navl.dictization_functions'] = m sys.modules['pylons'] = MagicMock() toolkit.Invalid = mockInvalid toolkit._ = mock_ def test_get_validators(): assert get_validators() @patch('urllib.request.urlopen') @patch('pylons.config.get', side_effect='foo') @patch('csv.reader', side_effect=[[['uri', 'text', json.dumps({"geometry": 0})]]]) def test_known_spatial_uri(url_mock, get_mock, csv_mock): # arrange data = {('extras', 0, 'key'): 'spatial_uri', ('extras', 0, 'value'): 'uri'} # act known_spatial_uri('spatial_uri', data, {}, None) # assert assert data[('extras', 1, 'key')] == 'spatial_text' assert data[('extras', 1, 'value')] == 'text' assert data[('extras', 2, 'key')] == 'spatial' assert data[('extras', 2, 'value')] == '0' @pytest.mark.parametrize('exception_type', [Exception]) @patch('urllib.request.urlopen') @patch('pylons.config.get', side_effect='foo') @patch('csv.reader', side_effect=[[['uri', 'text', json.dumps({"geometry": 0})]]]) def test_known_spatial_uri_without_uri(url_mock, get_mock, csv_mock, exception_type): # arrange data = {('extras', 0, 'key'): 'spatial_uri', ('extras', 0, 'value'): ''} # act and assert with pytest.raises(exception_type): known_spatial_uri('spatial_uri', data, {}, None) @pytest.mark.parametrize('exception_type', [Exception]) def test_known_spatial_uri_without_uri_with_spatial(exception_type): # arrange data = {('extras', 0, 'key'): 'spatial', ('extras', 0, 'value'): 'value', ('extras', 1, 'key'): 'spatial_uri', ('extras', 1, 'value'): ''} # act and assert with pytest.raises(exception_type): known_spatial_uri('spatial_uri', data, {}, None) def test_validate_licenseAttributionByText(): # arrange def get_licenses(): return {} modelMock.Package.get_license_register = get_licenses data = {'license_id': '0', ('extras', 0, 'key'): 'licenseAttributionByText', ('extras', 0, 'value'): ''} validate_licenseAttributionByText('key', data, {}, None) def test_tag_name_validator_invalid(): with pytest.raises(Exception): tag_name_validator('', None) def test_tag_name_validator_valid(): tag_name_validator('Regionalplan für den Planungsraum_I: (5.8 – Windenergie_an_Land)', None) def _create_test_string(length): base_string = "Lorem ipsum dolor sit amet." num_repetitions = (length // len(base_string)) + 1 test_string = base_string * num_repetitions test_string = test_string[:length] return test_string