diff --git a/ckanext/odsh/tests/test_validation.py b/ckanext/odsh/tests/test_validation.py new file mode 100644 index 0000000000000000000000000000000000000000..1725df0be8bb2057ba1a9a82e3d0e4a3b57932b4 --- /dev/null +++ b/ckanext/odsh/tests/test_validation.py @@ -0,0 +1,69 @@ +import sys +import json +from nose.tools import * +from mock import MagicMock, Mock, patch + + +def mockInvalid(*args, **kwargs): + return Exception(*args, **kwargs) + + +def mock_(s): + return s + + +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'] = MagicMock() +sys.modules['pylons'] = MagicMock() + +import ckan.plugins.toolkit as toolkit +toolkit.Invalid = mockInvalid +toolkit._ = mock_ + +import pylons + +from ckanext.odsh.validation import * + + +def test_get_validators(): + assert get_validators() + + +def test_tag_string_convert(): + # arrange + data = {'tag_string': 'tag1,tag2'} + # act + tag_string_convert('tag_string', data, {}, None) + # assert + assert data[('tags', 0, 'name')] == 'tag1' + assert data[('tags', 1, 'name')] == 'tag2' + + +@raises(Exception) +def test_tag_name_validator_invalid(): + tag_name_validator('&', None) + + +def test_tag_name_validator_valid(): + tag_name_validator('valid', None) + + +@patch('urllib2.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'