diff --git a/ckanext/validation/tests/test_interfaces.py b/ckanext/validation/tests/test_interfaces.py index cadca410..a621d0fb 100644 --- a/ckanext/validation/tests/test_interfaces.py +++ b/ckanext/validation/tests/test_interfaces.py @@ -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): @@ -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() @@ -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): @@ -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() diff --git a/ckanext/validation/tests/test_jobs.py b/ckanext/validation/tests/test_jobs.py index 6f213e89..bb2f4806 100644 --- a/ckanext/validation/tests/test_jobs.py +++ b/ckanext/validation/tests/test_jobs.py @@ -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"]) @@ -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"]) @@ -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() @@ -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):