Skip to content

Commit

Permalink
[test] Added update, retrieve, and deletion integration tests f…
Browse files Browse the repository at this point in the history
…or `dataverse` assets
  • Loading branch information
Aryamanz29 committed Jan 12, 2025
1 parent 7d702f1 commit 2c09ca5
Show file tree
Hide file tree
Showing 2 changed files with 134 additions and 9 deletions.
141 changes: 133 additions & 8 deletions tests/integration/dataverse_asset_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@
import pytest

from pyatlan.client.atlan import AtlanClient
from pyatlan.model.assets import (
DataverseEntity,
DataverseAttribute,
Connection,
from pyatlan.model.assets import Connection, DataverseAttribute, DataverseEntity
from pyatlan.model.core import Announcement
from pyatlan.model.enums import (
AnnouncementType,
AtlanConnectorType,
CertificateStatus,
EntityStatus,
)
from pyatlan.model.enums import AtlanConnectorType
from pyatlan.model.response import AssetMutationResponse
from tests.integration.client import TestId, delete_asset
from tests.integration.connection_test import create_connection
from tests.integration.utils import block

MODULE_NAME = TestId.make_unique("DATAVERSE")

Expand All @@ -21,7 +21,12 @@
DATAVERSE_ATTRIBUTE_NAME = f"{MODULE_NAME}-dataverse-attribute"
DATAVERSE_ATTRIBUTE_NAME_OVERLOAD = f"{MODULE_NAME}-dataverse-attribute-overload"

response = block(AtlanClient(), AssetMutationResponse())
CERTIFICATE_STATUS = CertificateStatus.VERIFIED

ANNOUNCEMENT_TITLE = "Python SDK testing."
ANNOUNCEMENT_TYPE = AnnouncementType.INFORMATION
CERTIFICATE_MESSAGE = "Automated testing of the Python SDK."
ANNOUNCEMENT_MESSAGE = "Automated testing of the Python SDK."


@pytest.fixture(scope="module")
Expand Down Expand Up @@ -123,3 +128,123 @@ def test_overload_dataverse_attribute(
dataverse_attribute_overload.connector_name
== AtlanConnectorType.DATAVERSE.value
)


def _update_cert_and_annoucement(client, asset, asset_type):
assert asset.name
assert asset.qualified_name

updated = client.asset.update_certificate(
name=asset.name,
asset_type=asset_type,
qualified_name=asset.qualified_name,
message=CERTIFICATE_MESSAGE,
certificate_status=CERTIFICATE_STATUS,
)
assert updated
assert updated.certificate_status == CERTIFICATE_STATUS
assert updated.certificate_status_message == CERTIFICATE_MESSAGE

updated = client.asset.update_announcement(
name=asset.name,
asset_type=asset_type,
qualified_name=asset.qualified_name,
announcement=Announcement(
announcement_type=ANNOUNCEMENT_TYPE,
announcement_title=ANNOUNCEMENT_TITLE,
announcement_message=ANNOUNCEMENT_MESSAGE,
),
)
assert updated
assert updated.announcement_type == ANNOUNCEMENT_TYPE
assert updated.announcement_title == ANNOUNCEMENT_TITLE
assert updated.announcement_message == ANNOUNCEMENT_MESSAGE


def test_update_dataverse_assets(
client: AtlanClient,
dataverse_entity: DataverseEntity,
dataverse_attribute: DataverseAttribute,
):
_update_cert_and_annoucement(client, dataverse_entity, DataverseEntity)
_update_cert_and_annoucement(client, dataverse_attribute, DataverseAttribute)


def _retrieve_dataverse_assets(client, asset, asset_type):
retrieved = client.asset.get_by_guid(
asset.guid, asset_type=asset_type, ignore_relationships=False
)
assert retrieved
assert not retrieved.is_incomplete
assert retrieved.guid == asset.guid
assert retrieved.qualified_name == asset.qualified_name
assert retrieved.name == asset.name
assert retrieved.connector_name == AtlanConnectorType.DATAVERSE
assert retrieved.certificate_status == CERTIFICATE_STATUS
assert retrieved.certificate_status_message == CERTIFICATE_MESSAGE


@pytest.mark.order(after="test_update_dataverse_assets")
def test_retrieve_dataverse_assets(
client: AtlanClient,
dataverse_entity: DataverseEntity,
dataverse_attribute: DataverseAttribute,
):
_retrieve_dataverse_assets(client, dataverse_entity, DataverseEntity)
_retrieve_dataverse_assets(client, dataverse_attribute, DataverseAttribute)


@pytest.mark.order(after="test_retrieve_dataverse_assets")
def test_delete_dataverse_attribute(
client: AtlanClient,
dataverse_attribute: DataverseAttribute,
):
response = client.asset.delete_by_guid(guid=dataverse_attribute.guid)
assert response
assert not response.assets_created(asset_type=DataverseAttribute)
assert not response.assets_updated(asset_type=DataverseAttribute)
deleted = response.assets_deleted(asset_type=DataverseAttribute)

assert deleted
assert len(deleted) == 1
assert deleted[0].guid == dataverse_attribute.guid
assert deleted[0].delete_handler == "SOFT"
assert deleted[0].status == EntityStatus.DELETED
assert deleted[0].qualified_name == dataverse_attribute.qualified_name


@pytest.mark.order(after="test_delete_dataverse_attribute")
def test_read_deleted_dataverse_attribute(
client: AtlanClient,
dataverse_attribute: DataverseAttribute,
):
deleted = client.asset.get_by_guid(
dataverse_attribute.guid,
asset_type=DataverseAttribute,
ignore_relationships=False,
)
assert deleted
assert deleted.status == EntityStatus.DELETED
assert deleted.guid == dataverse_attribute.guid
assert deleted.qualified_name == dataverse_attribute.qualified_name


@pytest.mark.order(after="test_read_deleted_dataverse_attribute")
def test_restore_dataverse_attribute(
client: AtlanClient,
dataverse_attribute: DataverseAttribute,
):
assert dataverse_attribute.qualified_name
assert client.asset.restore(
asset_type=DataverseAttribute, qualified_name=dataverse_attribute.qualified_name
)
assert dataverse_attribute.qualified_name
restored = client.asset.get_by_qualified_name(
asset_type=DataverseAttribute,
qualified_name=dataverse_attribute.qualified_name,
ignore_relationships=False,
)
assert restored
assert restored.guid == dataverse_attribute.guid
assert restored.status == EntityStatus.ACTIVE
assert restored.qualified_name == dataverse_attribute.qualified_name
2 changes: 1 addition & 1 deletion tests/unit/model/dataverse_entity_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def test_creator():
(DATAVERSE_ENTITY_NAME, None, "name is required"),
],
)
def test_updater_modification_with_invalid_parameter_raises_value_error(
def test_updater_with_invalid_parameter_raises_value_error(
qualified_name: str, name: str, message: str
):
with pytest.raises(ValueError, match=message):
Expand Down

0 comments on commit 2c09ca5

Please sign in to comment.