From a839cac1447d303378a36f406cc47770025d366f Mon Sep 17 00:00:00 2001 From: chbaeh <chbaeh@gmail.com> Date: Tue, 9 Apr 2019 14:35:52 +0200 Subject: [PATCH] add unit tests for validation --- ckanext/odsh/tests/test_validation.py | 69 +++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 ckanext/odsh/tests/test_validation.py diff --git a/ckanext/odsh/tests/test_validation.py b/ckanext/odsh/tests/test_validation.py new file mode 100644 index 00000000..1725df0b --- /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' -- GitLab