Skip to content
Snippets Groups Projects
Commit 12a9e6d4 authored by Thorge Petersen's avatar Thorge Petersen
Browse files

Moved legacy tests to tests_wip and previous tpsh tests to tests

parent c1c03b83
Branches
Tags
2 merge requests!48Merge dev into master,!46Remove TPSH-specific code and subject mappings
Showing
with 168 additions and 454 deletions
......@@ -118,13 +118,10 @@ test suite is provided. You can follow the instructions below to run the tests:
```sh
pytest ckanext/odsh/tests/
pytest ckanext/odsh/tests_tpsh/
```
Running these commands will initiate the test suite, which will automatically execute
various test cases and verify the expected behavior of the extension. The tests are
organized into two directories: `tests` and `tests_tpsh`, each containing different
sets of tests.
various test cases and verify the expected behavior of the extension.
### Internationalization
......
import paste.fixture
import pylons.test
import ckan.plugins
import ckan.model as model
import ckan.tests.factories as factories
import ckan.tests.legacy as tests
from ckan.common import config
import datetime
import ckanext.odsh.plugin as plugin
import unittest
# class TestOdshPlugin(object):
class TestMethodBeforeView(unittest.TestCase):
date_time_format = '%Y-%m-%dT%H:%M:%S'
# @classmethod
# def setup_class(cls):
# cls.app = paste.fixture.TestApp(pylons.test.pylonsapp)
# ckan.plugins.load('odsh')
def test_before_view_adds_false_for_old_dataset(self):
plugin_object = plugin.OdshPlugin()
today = datetime.date.today()
hundred_days_ago = today - datetime.timedelta(days=100)
hundred_days_ago_as_ckan_str = self._date_as_ckan_str(hundred_days_ago)
dict_for_template = plugin_object.before_view(
{
'extras': [
{'key': 'issued', 'value': hundred_days_ago_as_ckan_str}
]
}
)
assert dict_for_template['is_new']==False
# def teardown(self):
# model.repo.rebuild_db()
def _date_as_ckan_str(self, date):
return date.strftime(self.date_time_format)
# @classmethod
# def teardown_class(cls):
# ckan.plugins.unload('odsh')
def test_before_view_adds_true_for_new_dataset(self):
plugin_object = plugin.OdshPlugin()
today = datetime.date.today()
ten_days_ago = today - datetime.timedelta(days=10)
ten_days_ago_as_ckan_str = self._date_as_ckan_str(ten_days_ago)
dict_for_template = plugin_object.before_view(
{
'extras': [
{'key': 'issued', 'value': ten_days_ago_as_ckan_str}
]
}
)
assert dict_for_template['is_new']==True
# def test_plugin(self):
# pass
# def test_user_cannot_access_dashboard(self):
# user = factories.User()
# tests.call_action_api(self.app, 'group_create', name='test-group',
# apikey=user['apikey'])
def test_before_view_does_not_modify_unconcerned_dict_values(self):
plugin_object = plugin.OdshPlugin()
today = datetime.date.today()
ten_days_ago = today - datetime.timedelta(days=10)
ten_days_ago_as_ckan_str = self._date_as_ckan_str(ten_days_ago)
dict_for_template = plugin_object.before_view(
{
'extras': [
{'key': 'issued', 'value': ten_days_ago_as_ckan_str}
],
'some_other_key': 'some_other_value',
}
)
assert dict_for_template['some_other_key']=='some_other_value'
# encoding: utf-8
import ckan.tests.factories as factories
import ckan.tests.helpers as helpers
from bs4 import BeautifulSoup
from ckan import model
from ckan.lib.mailer import create_reset_key
from routes import url_for
import ckan.plugins
from .test_helpers import odsh_test
import pdb
class TestSearch(helpers.FunctionalTestBase):
_load_plugins = ['odsh', 'spatial_metadata', 'spatial_query']
def teardown(self):
model.repo.rebuild_db()
@odsh_test()
def test_dataset_is_in_search_result(self):
# arrange
dataset = self._create_dataset()
import ckanext.odsh.search as search
import unittest
class Test_before_search(unittest.TestCase):
def setUp(self):
self.search_params_before_test = {
'extras': {},
'facet.field': ['organization', 'groups'],
'fq': 'organization:"test-organisation" groups:"gove" +dataset_type:dataset',
'include_private': True,
'q': '',
'rows': 20,
'sort': 'score desc, metadata_modified desc',
'start': 0
}
self.search_params_with_facet_mincount = self.search_params_before_test.copy()
self.search_params_with_facet_mincount.update({'facet.mincount': 0})
def test_it_solely_adds_facet_mincount_to_dict_if_no_extras(self):
# arange
search_params = self.search_params_before_test.copy()
# act
response = self._perform_search()
search.before_search(search_params)
# assert
assert dataset['name'] in response
@odsh_test()
def test_query_with_no_match_finds_no_dataset(self):
# arrange
dataset = self._create_dataset()
search_params_expected = self.search_params_with_facet_mincount.copy()
assert search_params == search_params_expected
def test_it_adds_fq_if_empty_range(self):
# arange
search_params = self.search_params_before_test.copy()
extras = {'ext_enddate': '2019-08-01', 'ext_startdate': '2019-08-02'}
search_params.update({'extras': extras})
search_params_expected = self.search_params_with_facet_mincount.copy()
search_params_expected.update({'extras': extras})
search_params_expected.update({
'fq': (
'organization:"test-organisation" groups:"gove" '
'+dataset_type:dataset (+extras_temporal_start:[2019-08-02T00:00:00Z TO 2019-08-01T00:00:00Z] '
'OR +extras_temporal_end:[2019-08-02T00:00:00Z TO 2019-08-01T00:00:00Z] OR '
'((*:* NOT extras_temporal_end:[* TO *]) AND extras_temporal_start:[* TO 2019-08-01T00:00:00Z]))'
)
})
# act
response = self._perform_search("foobar")
search.before_search(search_params)
# assert
self._assert_no_results(response)
@odsh_test()
def test_query_with_no_dates_finds_dataset(self):
# arrange
dataset = self._create_dataset()
assert search_params == search_params_expected
def test_it_solely_adds_facet_mincount_to_dict_if_wrong_date_format_in_extras(self):
# arange
search_params = self.search_params_before_test.copy()
extras = {'ext_enddate': 'some_date', 'ext_startdate': 'some_date'}
search_params.update({'extras': extras})
search_params_expected = self.search_params_with_facet_mincount.copy()
search_params_expected.update({'extras': extras})
# act
response = self._perform_date_search(None, None)
search.before_search(search_params)
# assert
assert dataset['name'] in response
@odsh_test()
def test_query_with_very_old_dataset(self):
# arrange
dataseta = self._create_dataset('do_not_find_me', '2011-01-01', '2013-12-31')
datasetb = self._create_dataset('old_dataset', '1111-01-01', '1860-12-31')
assert search_params == search_params_expected
def test_it_adds_fq_if_enclosing_range(self):
# arange
search_params = self.search_params_before_test.copy()
extras = {'ext_enddate': '2019-08-02', 'ext_startdate': '2019-08-01'}
search_params.update({'extras': extras})
search_params_expected = self.search_params_with_facet_mincount.copy()
search_params_expected.update({'extras': extras})
search_params_expected.update({
'fq': (
'organization:"test-organisation" groups:"gove" '
'+dataset_type:dataset '
'(+extras_temporal_start:[2019-08-01T00:00:00Z TO 2019-08-02T00:00:00Z] '
'OR +extras_temporal_end:[2019-08-01T00:00:00Z TO 2019-08-02T00:00:00Z] '
'OR (extras_temporal_start:[* TO 2019-08-01T00:00:00Z] AND '
'extras_temporal_end:[2019-08-02T00:00:00Z TO *]) OR '
'((*:* NOT extras_temporal_end:[* TO *]) AND '
'extras_temporal_start:[* TO 2019-08-02T00:00:00Z]))'
)
})
# act
response = self._perform_date_search('1110-12-30', '1960-02-01')
search.before_search(search_params)
# assert
assert 'wrong_start_date_for_search' not in response
self._assert_datasets_in_response([datasetb], response)
self._assert_datasets_not_in_response([dataseta], response)
@odsh_test()
def test_query_with_end_before_start_finds_no_dataset(self):
# arrange
datasetA = self._create_dataset('dataseta', '1960-01-01', '1960-12-31')
assert search_params == search_params_expected
def test_it_adds_fq_if_start_only(self):
# arange
search_params = self.search_params_before_test.copy()
extras = {'ext_startdate': '2019-08-01'}
search_params.update({'extras': extras})
search_params_expected = self.search_params_with_facet_mincount.copy()
search_params_expected.update({'extras': extras})
search_params_expected.update({
'fq': (
'organization:"test-organisation" groups:"gove" '
'+dataset_type:dataset '
'(+extras_temporal_start:[2019-08-01T00:00:00Z TO *] '
'OR +extras_temporal_end:[2019-08-01T00:00:00Z TO *] '
'OR (*:* NOT extras_temporal_end:[* TO *]))'
)
})
# act
response = self._perform_date_search('1960-12-30', '1960-02-01')
search.before_search(search_params)
# assert
self._assert_no_results(response)
@odsh_test()
def test_query_with_wrong_dates_shows_error(self):
# arrange
dataset = self._create_dataset()
assert search_params == search_params_expected
def test_it_adds_fq_if_end_only(self):
# arange
search_params = self.search_params_before_test.copy()
extras = {'ext_enddate': '2019-08-02'}
search_params.update({'extras': extras})
search_params_expected = self.search_params_with_facet_mincount.copy()
search_params_expected.update({'extras': extras})
search_params_expected.update({
'fq': (
'organization:"test-organisation" groups:"gove" '
'+dataset_type:dataset '
'(+extras_temporal_start:[* TO 2019-08-02T00:00:00Z] OR '
'+extras_temporal_end:[* TO 2019-08-02T00:00:00Z] '
'OR ((*:* NOT extras_temporal_end:[* TO *]) '
'AND extras_temporal_start:[* TO 2019-08-02T00:00:00Z]))'
)
})
# act
response1 = self._perform_date_search('foo', None)
response2 = self._perform_date_search(None, 'foo')
response3 = self._perform_date_search('11-11-11', None)
search.before_search(search_params)
# assert
assert 'wrong_start_date_for_search' in response1
self._assert_datasets_in_response([dataset], response1)
assert 'daterange: to' not in response1
assert 'daterange: from' not in response1
assert 'wrong_end_date_for_search' in response2
self._assert_datasets_in_response([dataset], response2)
assert 'daterange: to' not in response2
assert 'daterange: from' not in response2
assert 'wrong_start_date_for_search' in response3
assert 'daterange: to' not in response3
assert 'daterange: from' not in response3
self._assert_datasets_in_response([dataset], response3)
@odsh_test()
def test_query_with_start_date_finds_one_dataset(self):
# arrange
datasetA = self._create_dataset('dataseta', '1960-01-01', '1960-12-31')
datasetB = self._create_dataset('datasetb', '1980-01-01', '1990-06-30')
datasetC = self._create_dataset('datasetc', '2001-03-01', '2001-04-30')
assert search_params == search_params_expected
def test_it_returns_search_params(self):
# arange
search_params = self.search_params_before_test.copy()
# act
response1 = self._perform_date_search(None, '1990-01-01')
response2 = self._perform_date_search(None, '2010-12-31')
response3 = self._perform_date_search('2010-12-31', None)
response4 = self._perform_date_search('1985-04-01', '1985-04-20')
response5 = self._perform_date_search('2001-04-01', None)
return_value = search.before_search(search_params)
# assert
self._assert_datasets_in_response([datasetA, datasetB], response1)
self._assert_datasets_not_in_response([datasetC], response1)
assert 'daterange: to' in response1
self._assert_datasets_in_response(
[datasetA, datasetB, datasetC], response2)
assert 'daterange: to' in response2
self._assert_no_results(response3)
assert 'daterange: from' in response3
self._assert_datasets_in_response([datasetB], response4)
self._assert_datasets_not_in_response([datasetA, datasetC], response4)
assert 'daterange: to' in response4
assert 'daterange: from' in response4
self._assert_datasets_in_response([datasetC], response5)
self._assert_datasets_not_in_response([datasetA, datasetB], response5)
@odsh_test()
def test_dataset_combime_date_range_search_and_text_search_same_title(self):
# arrange
datasetA = self._create_dataset('dataseta', '1960-01-01', '1960-12-31','mytitle')
datasetB = self._create_dataset('datasetb', '1980-01-01', '1990-06-30', 'mytitle')
# act
response = self._perform_text_and_date_search('mytitle', None, '1970-01-01')
# assert
self._assert_datasets_in_response([datasetA], response)
self._assert_datasets_not_in_response([datasetB], response)
@odsh_test()
def test_dataset_combime_date_range_search_and_text_search_same_dates(self):
# arrange
datasetA = self._create_dataset('dataseta', '1960-01-01', '1960-12-31','mytitle')
datasetB = self._create_dataset('datasetb', '1960-01-01', '1960-12-31','othertitle')
datasetC = self._create_dataset('datasetc', '1980-01-01', '1990-06-30', 'mytitle')
# act
response = self._perform_text_and_date_search('mytitle', None, '1970-01-01')
# assert
self._assert_datasets_in_response([datasetA], response)
self._assert_datasets_not_in_response([datasetB, datasetC], response)
@odsh_test()
def test_dataset_without_end(self):
# arrange
datasetA = self._create_dataset('dataseta', '1960-01-01', None,'mytitle')
# act
response1 = self._perform_text_and_date_search('mytitle', '1950-01-01', '1950-02-01')
response2 = self._perform_text_and_date_search('mytitle', '1950-01-01', '1960-02-01')
response3 = self._perform_text_and_date_search('mytitle', '1950-01-01', None)
response4 = self._perform_text_and_date_search('mytitle', None, '1970-01-01')
response5 = self._perform_text_and_date_search('mytitle', '1970-01-01', '1980-02-01')
response6 = self._perform_text_and_date_search('mytitle', None, '1950-01-01')
# assert
self._assert_datasets_not_in_response([datasetA], response1)
self._assert_datasets_in_response([datasetA], response2)
self._assert_datasets_in_response([datasetA], response3)
self._assert_datasets_in_response([datasetA], response4)
self._assert_datasets_in_response([datasetA], response5)
self._assert_datasets_not_in_response([datasetA], response6)
@odsh_test()
def test_dataset_new_has_label(self):
# arrange
datasetA = self._create_dataset('dataseta', '1960-01-01', None,'mytitle')
# act
response = self._perform_text_and_date_search('mytitle', None, None)
# assert
response.mustcontain('new-dataset-label')
def _assert_datasets_in_response(self, datasets, response):
for dataset in datasets:
assert dataset['name'] in response
def _assert_datasets_not_in_response(self, datasets, response):
for dataset in datasets:
assert dataset['name'] not in response
def _assert_no_results(self, response):
assert "No datasets found" in response
def _create_dataset(self, name='my-own-dataset', temporal_start='2000-01-27', temporal_end='2000-01-27',title='title'):
user = factories.User()
extras = [
{'key': 'temporal_start', 'value': temporal_start},
{'key': 'temporal_end', 'value': temporal_end},
{'key': 'issued', 'value': '2000-01-27'},
{'key': 'groups', 'value': 'soci'},
{'key': 'licenseAttributionByText', 'value': 'text'},
{'key': 'spatial_uri', 'value': 'http://dcat-ap.de/def/politicalGeocoding/districtKey/01001'}
]
return factories.Dataset(user=user,
name=name,
title=title,
issued='27-01-2000',
extras=extras,
license_id='http://dcat-ap.de/def/licenses/dl-by-de/2.0')
def _perform_search(self, query=None):
search_form = self._perform_search_for_form('dataset-search-box-form')
if query is not None:
search_form['q'] = query
return helpers.webtest_submit(search_form)
def _perform_date_search(self, search_from, search_to):
search_form = self._perform_search_for_form('dataset-search-box-form')
if search_form is not None:
search_form['ext_startdate'] = search_from
if search_to is not None:
search_form['ext_enddate'] = search_to
return helpers.webtest_submit(search_form)
def _perform_text_and_date_search(self, query, search_from, search_to):
search_form = self._perform_search_for_form('dataset-search-box-form')
search_form['q'] = query
if search_form is not None:
search_form['ext_startdate'] = search_from
if search_to is not None:
search_form['ext_enddate'] = search_to
return helpers.webtest_submit(search_form)
def _perform_search_for_form(self, form):
search_url = url_for(named_route='dataset.search')
search_response = self._get_test_app().get(search_url)
search_form = search_response.forms[form]
return search_form
assert search_params == return_value
import datetime
import ckanext.odsh.plugin as plugin
import unittest
class TestMethodBeforeView(unittest.TestCase):
date_time_format = '%Y-%m-%dT%H:%M:%S'
def test_before_view_adds_false_for_old_dataset(self):
plugin_object = plugin.OdshPlugin()
today = datetime.date.today()
hundred_days_ago = today - datetime.timedelta(days=100)
hundred_days_ago_as_ckan_str = self._date_as_ckan_str(hundred_days_ago)
dict_for_template = plugin_object.before_view(
{
'extras': [
{'key': 'issued', 'value': hundred_days_ago_as_ckan_str}
]
}
)
assert dict_for_template['is_new']==False
def _date_as_ckan_str(self, date):
return date.strftime(self.date_time_format)
def test_before_view_adds_true_for_new_dataset(self):
plugin_object = plugin.OdshPlugin()
today = datetime.date.today()
ten_days_ago = today - datetime.timedelta(days=10)
ten_days_ago_as_ckan_str = self._date_as_ckan_str(ten_days_ago)
dict_for_template = plugin_object.before_view(
{
'extras': [
{'key': 'issued', 'value': ten_days_ago_as_ckan_str}
]
}
)
assert dict_for_template['is_new']==True
def test_before_view_does_not_modify_unconcerned_dict_values(self):
plugin_object = plugin.OdshPlugin()
today = datetime.date.today()
ten_days_ago = today - datetime.timedelta(days=10)
ten_days_ago_as_ckan_str = self._date_as_ckan_str(ten_days_ago)
dict_for_template = plugin_object.before_view(
{
'extras': [
{'key': 'issued', 'value': ten_days_ago_as_ckan_str}
],
'some_other_key': 'some_other_value',
}
)
assert dict_for_template['some_other_key']=='some_other_value'
import ckanext.odsh.search as search
import unittest
class Test_before_search(unittest.TestCase):
def setUp(self):
self.search_params_before_test = {
'extras': {},
'facet.field': ['organization', 'groups'],
'fq': 'organization:"test-organisation" groups:"gove" +dataset_type:dataset',
'include_private': True,
'q': '',
'rows': 20,
'sort': 'score desc, metadata_modified desc',
'start': 0
}
self.search_params_with_facet_mincount = self.search_params_before_test.copy()
self.search_params_with_facet_mincount.update({'facet.mincount': 0})
def test_it_solely_adds_facet_mincount_to_dict_if_no_extras(self):
# arange
search_params = self.search_params_before_test.copy()
# act
search.before_search(search_params)
# assert
search_params_expected = self.search_params_with_facet_mincount.copy()
assert search_params == search_params_expected
def test_it_adds_fq_if_empty_range(self):
# arange
search_params = self.search_params_before_test.copy()
extras = {'ext_enddate': '2019-08-01', 'ext_startdate': '2019-08-02'}
search_params.update({'extras': extras})
search_params_expected = self.search_params_with_facet_mincount.copy()
search_params_expected.update({'extras': extras})
search_params_expected.update({
'fq': (
'organization:"test-organisation" groups:"gove" '
'+dataset_type:dataset (+extras_temporal_start:[2019-08-02T00:00:00Z TO 2019-08-01T00:00:00Z] '
'OR +extras_temporal_end:[2019-08-02T00:00:00Z TO 2019-08-01T00:00:00Z] OR '
'((*:* NOT extras_temporal_end:[* TO *]) AND extras_temporal_start:[* TO 2019-08-01T00:00:00Z]))'
)
})
# act
search.before_search(search_params)
# assert
assert search_params == search_params_expected
def test_it_solely_adds_facet_mincount_to_dict_if_wrong_date_format_in_extras(self):
# arange
search_params = self.search_params_before_test.copy()
extras = {'ext_enddate': 'some_date', 'ext_startdate': 'some_date'}
search_params.update({'extras': extras})
search_params_expected = self.search_params_with_facet_mincount.copy()
search_params_expected.update({'extras': extras})
# act
search.before_search(search_params)
# assert
assert search_params == search_params_expected
def test_it_adds_fq_if_enclosing_range(self):
# arange
search_params = self.search_params_before_test.copy()
extras = {'ext_enddate': '2019-08-02', 'ext_startdate': '2019-08-01'}
search_params.update({'extras': extras})
search_params_expected = self.search_params_with_facet_mincount.copy()
search_params_expected.update({'extras': extras})
search_params_expected.update({
'fq': (
'organization:"test-organisation" groups:"gove" '
'+dataset_type:dataset '
'(+extras_temporal_start:[2019-08-01T00:00:00Z TO 2019-08-02T00:00:00Z] '
'OR +extras_temporal_end:[2019-08-01T00:00:00Z TO 2019-08-02T00:00:00Z] '
'OR (extras_temporal_start:[* TO 2019-08-01T00:00:00Z] AND '
'extras_temporal_end:[2019-08-02T00:00:00Z TO *]) OR '
'((*:* NOT extras_temporal_end:[* TO *]) AND '
'extras_temporal_start:[* TO 2019-08-02T00:00:00Z]))'
)
})
# act
search.before_search(search_params)
# assert
assert search_params == search_params_expected
def test_it_adds_fq_if_start_only(self):
# arange
search_params = self.search_params_before_test.copy()
extras = {'ext_startdate': '2019-08-01'}
search_params.update({'extras': extras})
search_params_expected = self.search_params_with_facet_mincount.copy()
search_params_expected.update({'extras': extras})
search_params_expected.update({
'fq': (
'organization:"test-organisation" groups:"gove" '
'+dataset_type:dataset '
'(+extras_temporal_start:[2019-08-01T00:00:00Z TO *] '
'OR +extras_temporal_end:[2019-08-01T00:00:00Z TO *] '
'OR (*:* NOT extras_temporal_end:[* TO *]))'
)
})
# act
search.before_search(search_params)
# assert
assert search_params == search_params_expected
def test_it_adds_fq_if_end_only(self):
# arange
search_params = self.search_params_before_test.copy()
extras = {'ext_enddate': '2019-08-02'}
search_params.update({'extras': extras})
search_params_expected = self.search_params_with_facet_mincount.copy()
search_params_expected.update({'extras': extras})
search_params_expected.update({
'fq': (
'organization:"test-organisation" groups:"gove" '
'+dataset_type:dataset '
'(+extras_temporal_start:[* TO 2019-08-02T00:00:00Z] OR '
'+extras_temporal_end:[* TO 2019-08-02T00:00:00Z] '
'OR ((*:* NOT extras_temporal_end:[* TO *]) '
'AND extras_temporal_start:[* TO 2019-08-02T00:00:00Z]))'
)
})
# act
search.before_search(search_params)
# assert
assert search_params == search_params_expected
def test_it_returns_search_params(self):
# arange
search_params = self.search_params_before_test.copy()
# act
return_value = search.before_search(search_params)
# assert
assert search_params == return_value
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment