コード例 #1
0
ファイル: test_ckan.py プロジェクト: enermaps/frictionless-py
    def test_read_resource_valid(self):
        resource_id = "79843e49-7974-411c-8eb5-fb2d1111d707"
        base_url = "https://demo.ckan.org"

        _mock_json_call(
            f"{base_url}/api/3/action/datastore_search?limit=0&resource_id={resource_id}",
            "data/ckan_mock_responses/datastore_search_describe.json",
        )

        # First response gets the data rows
        _mock_json_call(
            f"{base_url}/api/3/action/datastore_search?resource_id={resource_id}",
            "data/ckan_mock_responses/datastore_search_rows.json",
        )
        # Second response is empty, indicating the results are exhausted
        _mock_json_call(
            f"{base_url}/api/3/action/datastore_search?resource_id={resource_id}&offset=100",
            "data/ckan_mock_responses/datastore_search_rows_empty.json",
        )

        resource = Resource.from_ckan(
            base_url=base_url,
            resource_id=resource_id,
            api_key="env:CKAN_API_KEY",
        )
        resource.onerror = "raise"  # be strict about errors under test

        self._assert_resource_valid(resource)
コード例 #2
0
ファイル: test_ckan.py プロジェクト: enermaps/frictionless-py
def test_read_resource_bad_resource_id():
    resource_id = "bad-resource-id"
    base_url = "https://demo.ckan.org"

    _mock_json_call(
        f"{base_url}/api/3/action/datastore_search?limit=0&resource_id={resource_id}",
        "data/ckan_mock_responses/ckan_error.json",
        status=404,
    )

    with pytest.raises(exceptions.FrictionlessException) as excinfo:
        Resource.from_ckan(
            base_url=base_url,
            resource_id=resource_id,
            api_key="env:CKAN_API_KEY",
        )
    error = excinfo.value.error
    assert error.code == "storage-error"
    assert error.note.count("Not found")