Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
ChasNelson1990 committed Jul 21, 2023
1 parent 976afd5 commit 169a8fc
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 16 deletions.
8 changes: 4 additions & 4 deletions ckanext/validation/tests/test_interfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class TestInterfaceSync():
@pytest.mark.ckan_config('ckanext.validation.run_on_create_async', False)
@pytest.mark.ckan_config('ckanext.validation.run_on_update_async', False)
@pytest.mark.ckan_config('ckanext.validation.run_on_create_sync', True)
@mock.patch('ckanext.validation.jobs.validate',
@mock.patch('frictionless.Package.validate',
return_value=VALID_REPORT)
def test_can_validate_called_on_create_sync(self, mock_validation):

Expand All @@ -73,7 +73,7 @@ def test_can_validate_called_on_create_sync(self, mock_validation):
@pytest.mark.ckan_config('ckanext.validation.run_on_create_async', False)
@pytest.mark.ckan_config('ckanext.validation.run_on_update_async', False)
@pytest.mark.ckan_config('ckanext.validation.run_on_create_sync', True)
@mock.patch('ckanext.validation.jobs.validate')
@mock.patch('frictionless.Package.validate')
def test_can_validate_called_on_create_sync_no_validation(self, mock_validation):

dataset = factories.Dataset()
Expand All @@ -91,7 +91,7 @@ def test_can_validate_called_on_create_sync_no_validation(self, mock_validation)
@pytest.mark.ckan_config('ckanext.validation.run_on_create_async', False)
@pytest.mark.ckan_config('ckanext.validation.run_on_update_async', False)
@pytest.mark.ckan_config('ckanext.validation.run_on_update_sync', True)
@mock.patch('ckanext.validation.jobs.validate',
@mock.patch('frictionless.Package.validate',
return_value=VALID_REPORT)
def test_can_validate_called_on_update_sync(self, mock_validation):

Expand All @@ -113,7 +113,7 @@ def test_can_validate_called_on_update_sync(self, mock_validation):
@pytest.mark.ckan_config('ckanext.validation.run_on_create_async', False)
@pytest.mark.ckan_config('ckanext.validation.run_on_update_async', False)
@pytest.mark.ckan_config('ckanext.validation.run_on_update_sync', True)
@mock.patch('ckanext.validation.jobs.validate')
@mock.patch('frictionless.Package.validate')
def test_can_validate_called_on_update_sync_no_validation(self, mock_validation):

dataset = factories.Dataset()
Expand Down
49 changes: 37 additions & 12 deletions ckanext/validation/tests/test_jobs.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,10 @@ class TestValidationJob(object):

@pytest.mark.ckan_config("ckanext.validation.run_on_create_async", False)
@mock.patch("frictionless.Package.validate", return_value=VALID_REPORT)
@mock.patch("frictionless.Resource.__create__")
@mock.patch.object(Session, "commit")
@mock.patch.object(ckantoolkit, "get_action")
def test_job_run_no_schema(self, mock_get_action, mock_commit, mock_validate):
def test_job_run_no_schema(self, mock_get_action, mock_commit, mock_frictionless_resource, mock_validate):

org = factories.Organization()
dataset = factories.Dataset(private=True, owner_org=org["id"])
Expand All @@ -51,14 +52,23 @@ def test_job_run_no_schema(self, mock_get_action, mock_commit, mock_validate):

run_validation_job(resource)

assert mock_validate.call_args[0][0] == "http://example.com/file.csv"
assert mock_validate.call_args[1]["format"] == "csv"
assert mock_validate.call_args[1]["schema"] is None
print(mock_frictionless_resource)
assert mock_frictionless_resource.call_count == 1
print(mock_frictionless_resource.call_args)
assert mock_frictionless_resource.call_args[1]["path"] == "http://example.com/file.csv"
assert mock_frictionless_resource.call_args[1]["format"] == "csv"
assert mock_frictionless_resource.call_args[1]["schema"] is None

assert mock_validate.call_count == 1
# assert mock_validate.call_args[1]["checklist"] is {}
assert mock_validate.call_args[1]["limit_errors"] is None
assert mock_validate.call_args[1]["limit_rows"] is None

@mock.patch("frictionless.Package.validate", return_value=VALID_REPORT)
@mock.patch("frictionless.Resource.__create__")
@mock.patch.object(Session, "commit")
@mock.patch.object(ckantoolkit, "get_action")
def test_job_run_schema(self, mock_get_action, mock_commit, mock_validate):
def test_job_run_schema(self, mock_get_action, mock_commit, mock_frictionless_resource, mock_validate):

org = factories.Organization()
dataset = factories.Dataset(private=True, owner_org=org["id"])
Expand All @@ -79,18 +89,27 @@ def test_job_run_schema(self, mock_get_action, mock_commit, mock_validate):

run_validation_job(resource)

assert mock_validate.call_args[0][0] == "http://example.com/file.csv"
assert mock_validate.call_args[1]["format"] == "csv"
assert mock_validate.call_args[1]["schema"].to_dict() == schema
print(mock_frictionless_resource)
assert mock_frictionless_resource.call_count == 1
print(mock_frictionless_resource.call_args)
assert mock_frictionless_resource.call_args[1]["path"] == "http://example.com/file.csv"
assert mock_frictionless_resource.call_args[1]["format"] == "csv"
assert mock_frictionless_resource.call_args[1]["schema"].to_dict() == schema

assert mock_validate.call_count == 1
# assert mock_validate.call_args[1]["checklist"] is {}
assert mock_validate.call_args[1]["limit_errors"] is None
assert mock_validate.call_args[1]["limit_rows"] is None

@mock.patch("frictionless.Package.validate", return_value=VALID_REPORT)
@mock.patch("frictionless.Resource.__create__")
@mock.patch.object(
uploader, "get_resource_uploader", return_value=mock_get_resource_uploader({})
)
@mock.patch.object(Session, "commit")
@mock.patch.object(ckantoolkit, "get_action")
def test_job_run_uploaded_file(
self, mock_get_action, mock_commit, mock_uploader, mock_validate
self, mock_get_action, mock_commit, mock_uploader, mock_frictionless_resource, mock_validate
):

org = factories.Organization()
Expand All @@ -106,9 +125,15 @@ def test_job_run_uploaded_file(

run_validation_job(resource)

assert mock_validate.call_args[0][0] == "/tmp/example/{}".format(resource["id"])
assert mock_validate.call_args[1]["format"] == "csv"
assert mock_validate.call_args[1]["schema"] is None
assert mock_frictionless_resource.call_count == 1
assert mock_frictionless_resource.call_args[1]["path"] == "/tmp/example/{}".format(resource["id"])
assert mock_frictionless_resource.call_args[1]["format"] == "csv"
assert mock_frictionless_resource.call_args[1]["schema"] is None

assert mock_validate.call_count == 1
# assert mock_validate.call_args[1]["checklist"] is {}
assert mock_validate.call_args[1]["limit_errors"] is None
assert mock_validate.call_args[1]["limit_rows"] is None

@mock.patch("frictionless.Package.validate", return_value=VALID_REPORT)
def test_job_run_valid_stores_validation_object(self, mock_validate):
Expand Down

0 comments on commit 169a8fc

Please sign in to comment.