Skip to content
48 changes: 36 additions & 12 deletions ckanext/validation/tests/test_form.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import ckantoolkit as t
from ckantoolkit.tests.factories import Sysadmin, Dataset
from ckantoolkit.tests.helpers import (
call_action,
call_action
)

from ckanext.validation.tests.helpers import VALID_CSV, INVALID_CSV, mock_uploads
Expand All @@ -34,6 +34,20 @@ def _get_resource_update_page_as_sysadmin(app, id, resource_id):
return env, response


def _post(app, url, extra_environ=None, data=None):
''' Submit a POST request to 'app',
using either webtest or Flask syntax.
'''
if hasattr(app, 'test_client'):
# Flask app
app.post(url=url, extra_environ=extra_environ, data=data)
else:
if not app:
from ckantoolkit.tests.helpers import _get_test_app
app = _get_test_app()
app.post(url, data, extra_environ=extra_environ)


@pytest.mark.usefixtures("clean_db", "validation_setup", "with_plugins")
class TestResourceSchemaForm(object):
def test_resource_form_includes_json_fields(self, app):
Expand All @@ -59,7 +73,8 @@ def test_resource_form_create(self, app):
user = Sysadmin()
env = {"REMOTE_USER": user["name"].encode("ascii")}
# TODO: url
app.post(
_post(
app,
url="/dataset/{}/resource/new".format(dataset['id']),
extra_environ=env,
data=data,
Expand All @@ -84,7 +99,8 @@ def test_resource_form_create_json(self, app):
user = Sysadmin()
env = {"REMOTE_USER": user["name"].encode("ascii")}
# TODO: url
app.post(
_post(
app,
url="/dataset/{}/resource/new".format(dataset['id']),
extra_environ=env,
data=data,
Expand All @@ -95,7 +111,7 @@ def test_resource_form_create_json(self, app):
assert dataset["resources"][0]["schema"] == value

@mock_uploads
def test_resource_form_create_upload(self, mock_open, app):
def test_resource_form_create_upload(self, mock_open, app=None):
dataset = Dataset()

value = {"fields": [{"name": "code"}, {"name": "department"}]}
Expand All @@ -113,7 +129,8 @@ def test_resource_form_create_upload(self, mock_open, app):
user = Sysadmin()
env = {"REMOTE_USER": user["name"].encode("ascii")}
# TODO: url
app.post(
_post(
app,
url="/dataset/{}/resource/new".format(dataset['id']),
extra_environ=env,
data=data,
Expand All @@ -137,7 +154,8 @@ def test_resource_form_create_url(self, app):
user = Sysadmin()
env = {"REMOTE_USER": user["name"].encode("ascii")}
# TODO: url
app.post(
_post(
app,
url="/dataset/{}/resource/new".format(dataset['id']),
extra_environ=env,
data=data,
Expand Down Expand Up @@ -169,7 +187,8 @@ def test_resource_form_update(self, app):
user = Sysadmin()
env = {"REMOTE_USER": user["name"].encode("ascii")}
# TODO: url
app.post(
_post(
app,
url="/dataset/{}/resource/{}/edit".format(dataset['id'], dataset['resources'][0]['id']),
extra_environ=env,
data=data,
Expand Down Expand Up @@ -198,7 +217,8 @@ def test_resource_form_update_json(self, app):
user = Sysadmin()
env = {"REMOTE_USER": user["name"].encode("ascii")}
# TODO: url
app.post(
_post(
app,
url="/dataset/{}/resource/{}/edit".format(dataset['id'], dataset['resources'][0]['id']),
extra_environ=env,
data=data,
Expand Down Expand Up @@ -226,7 +246,8 @@ def test_resource_form_update_url(self, app):
user = Sysadmin()
env = {"REMOTE_USER": user["name"].encode("ascii")}
# TODO: url
app.post(
_post(
app,
url="/dataset/{}/resource/{}/edit".format(dataset['id'], dataset['resources'][0]['id']),
extra_environ=env,
data=data,
Expand Down Expand Up @@ -257,7 +278,8 @@ def test_resource_form_update_upload(self, app):
user = Sysadmin()
env = {"REMOTE_USER": user["name"].encode("ascii")}
# TODO: url
app.post(
_post(
app,
url="/dataset/{}/resource/{}/edit".format(dataset['id'], dataset['resources'][0]['id']),
extra_environ=env,
data=data,
Expand Down Expand Up @@ -295,7 +317,8 @@ def test_resource_form_create(self, app):
user = Sysadmin()
env = {"REMOTE_USER": user["name"].encode("ascii")}
# TODO: url
app.post(
_post(
app,
url="/dataset/{}/resource/new".format(dataset['id']),
extra_environ=env,
data=data,
Expand Down Expand Up @@ -336,7 +359,8 @@ def test_resource_form_update(self, app):
user = Sysadmin()
env = {"REMOTE_USER": user["name"].encode("ascii")}
# TODO: url
app.post(
_post(
app,
url="/dataset/{}/resource/{}/edit".format(dataset['id'], dataset['resources'][0]['id']),
extra_environ=env,
data=data,
Expand Down
6 changes: 3 additions & 3 deletions ckanext/validation/tests/test_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def test_get_validation_badge_success(self):
resource = factories.Resource(
format="CSV",
validation_status="success",
validation_timestamp=datetime.datetime.utcnow(),
validation_timestamp=datetime.datetime.utcnow().isoformat(),
)

out = get_validation_badge(resource)
Expand All @@ -63,7 +63,7 @@ def test_get_validation_badge_failure(self):
resource = factories.Resource(
format="CSV",
validation_status="failure",
validation_timestamp=datetime.datetime.utcnow(),
validation_timestamp=datetime.datetime.utcnow().isoformat(),
)

out = get_validation_badge(resource)
Expand All @@ -83,7 +83,7 @@ def test_get_validation_badge_error(self):
resource = factories.Resource(
format="CSV",
validation_status="error",
validation_timestamp=datetime.datetime.utcnow(),
validation_timestamp=datetime.datetime.utcnow().isoformat(),
)

out = get_validation_badge(resource)
Expand Down
2 changes: 1 addition & 1 deletion dev-requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
pyfakefs==4.5.1
pyfakefs==3.7.2
pytest-ckan
pytest-cov
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
six
six>=1.12.0
ckantoolkit>=0.0.3
goodtables==1.5.1
-e git+https://github.com/ckan/ckanext-scheming.git#egg=ckanext-scheming
9 changes: 7 additions & 2 deletions test.ini
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ ckan.plugins = validation scheming_datasets

scheming.dataset_schemas = ckanext.validation.examples:ckan_default_schema.json
scheming.presets = ckanext.scheming:presets.json
ckanext.validation:presets.json
ckanext.validation:presets.json


# Logging configuration
[loggers]
keys = root, ckan, sqlalchemy
keys = root, ckan, ckanext, sqlalchemy

[handlers]
keys = console
Expand All @@ -39,6 +39,11 @@ qualname = ckan
handlers =
level = INFO

[logger_ckanext]
qualname = ckanext
handlers =
level = DEBUG

[logger_sqlalchemy]
handlers =
qualname = sqlalchemy.engine
Expand Down