Skip to content

Commit 873cf59

Browse files
vaibhavatlanAryamanz29
authored andcommitted
QA fixed and added unit test
1 parent e281e3a commit 873cf59

File tree

3 files changed

+115
-4
lines changed

3 files changed

+115
-4
lines changed

pyatlan/model/assets/core/a_i_application.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from pydantic.v1 import Field, validator
1010

11-
from pyatlan.model.enums import AIApplicationDevelopmentStage, AtlanConnectorType
11+
from pyatlan.model.enums import AIApplicationDevelopmentStage, CertificateStatus
1212
from pyatlan.model.fields.atlan_fields import KeywordField, RelationField
1313
from pyatlan.utils import init_guid, validate_required_fields, to_camel_case
1414

@@ -54,7 +54,8 @@ def creator(
5454
models: Optional[list[AIModel]] = [],
5555
) -> AIApplication:
5656
validate_required_fields(
57-
["name", "ai_application_version", "ai_application_development_stage"], [name, ai_application_version, ai_application_development_stage]
57+
["name", "ai_application_version", "ai_application_development_stage"],
58+
[name, ai_application_version, ai_application_development_stage],
5859
)
5960
attributes = AIApplication.Attributes.creator(
6061
name=name,
@@ -167,7 +168,8 @@ def creator(
167168
models: Optional[list[AIModel]] = [],
168169
) -> AIApplication.Attributes:
169170
validate_required_fields(
170-
["name", "ai_application_version", "ai_application_development_stage"], [name, ai_application_version, ai_application_development_stage]
171+
["name", "ai_application_version", "ai_application_development_stage"],
172+
[name, ai_application_version, ai_application_development_stage],
171173
)
172174
name_camel_case = to_camel_case(name)
173175
return AIApplication.Attributes(
@@ -179,7 +181,7 @@ def creator(
179181
owner_groups=owner_groups,
180182
owner_users=owner_users,
181183
models=models,
182-
certificate_status="DRAFT",
184+
certificate_status=CertificateStatus.DRAFT,
183185
asset_cover_image="/assets/default-product-cover-DeQonY47.webp",
184186
)
185187

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
import pytest
2+
3+
from pyatlan.model.assets import AIApplication
4+
from pyatlan.model.enums import AIApplicationDevelopmentStage
5+
from tests.unit.model.constants import (
6+
AI_APPLICATION_VERSION,
7+
AI_APPLICATION_NAME,
8+
AI_APPLICATION_DEVELOPMENT_STAGE,
9+
AI_APPLICATION_QUALIFIED_NAME,
10+
AI_APPLICATION_DEVELOPMENT_STAGE_UPDATED,
11+
)
12+
13+
14+
@pytest.mark.parametrize(
15+
"name, ai_application_version, ai_application_development_stage, message",
16+
[
17+
(
18+
None,
19+
AI_APPLICATION_VERSION,
20+
AI_APPLICATION_DEVELOPMENT_STAGE,
21+
"name is required",
22+
),
23+
(
24+
AI_APPLICATION_NAME,
25+
None,
26+
AI_APPLICATION_DEVELOPMENT_STAGE,
27+
"ai_application_version is required",
28+
),
29+
(
30+
AI_APPLICATION_NAME,
31+
AI_APPLICATION_VERSION,
32+
None,
33+
"ai_application_development_stage is required",
34+
),
35+
],
36+
)
37+
def test_creator_with_missing_parameters_raise_value_error(
38+
name: str,
39+
ai_application_development_stage: AIApplicationDevelopmentStage,
40+
ai_application_version: str,
41+
message: str,
42+
):
43+
with pytest.raises(ValueError, match=message):
44+
AIApplication.creator(
45+
name=name,
46+
ai_application_development_stage=ai_application_development_stage,
47+
ai_application_version=ai_application_version,
48+
)
49+
50+
51+
def test_creator():
52+
ai_application = AIApplication.creator(
53+
name=AI_APPLICATION_NAME,
54+
ai_application_version=AI_APPLICATION_VERSION,
55+
ai_application_development_stage=AI_APPLICATION_DEVELOPMENT_STAGE,
56+
)
57+
58+
assert ai_application.name == AI_APPLICATION_NAME
59+
assert ai_application.ai_application_version == AI_APPLICATION_VERSION
60+
assert (
61+
ai_application.ai_application_development_stage
62+
== AI_APPLICATION_DEVELOPMENT_STAGE
63+
)
64+
assert ai_application.qualified_name == AI_APPLICATION_QUALIFIED_NAME
65+
66+
67+
@pytest.mark.parametrize(
68+
"qualified_name, name, message",
69+
[
70+
(None, AI_APPLICATION_QUALIFIED_NAME, "qualified_name is required"),
71+
(AI_APPLICATION_NAME, None, "name is required"),
72+
],
73+
)
74+
def test_updater_with_invalid_parameter_raises_value_error(
75+
qualified_name: str, name: str, message: str
76+
):
77+
with pytest.raises(ValueError, match=message):
78+
AIApplication.updater(qualified_name=qualified_name, name=name)
79+
80+
81+
def test_updater():
82+
ai_application = AIApplication.updater(
83+
name=AI_APPLICATION_NAME, qualified_name=AI_APPLICATION_QUALIFIED_NAME
84+
)
85+
ai_application.ai_application_development_stage = (
86+
AI_APPLICATION_DEVELOPMENT_STAGE_UPDATED
87+
)
88+
89+
assert ai_application.name == AI_APPLICATION_NAME
90+
assert ai_application.qualified_name == AI_APPLICATION_QUALIFIED_NAME
91+
assert (
92+
ai_application.ai_application_development_stage
93+
== AI_APPLICATION_DEVELOPMENT_STAGE_UPDATED
94+
)
95+
96+
97+
def test_trim_to_required():
98+
dag = AIApplication.updater(
99+
name=AI_APPLICATION_NAME,
100+
qualified_name=AI_APPLICATION_QUALIFIED_NAME,
101+
).trim_to_required()
102+
103+
assert dag.name == AI_APPLICATION_NAME
104+
assert dag.qualified_name == AI_APPLICATION_QUALIFIED_NAME

tests/unit/model/constants.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,3 +292,8 @@
292292
QUICK_SIGHT_SHEET_NAME = "test-qs-sheet-name"
293293
QUICK_SIGHT_ID_DASHBOARD_VISUAL = "230455332"
294294
QUICK_SIGHT_DASHBOARD_VISUAL_QUALIFIED_NAME = f"{QUICK_SIGHT_QUALIFIED_NAME}/{QUICK_SIGHT_SHEET_ID}/{QUICK_SIGHT_ID_DASHBOARD_VISUAL}"
295+
AI_APPLICATION_NAME = "test-application-ai"
296+
AI_APPLICATION_VERSION = "2.0"
297+
AI_APPLICATION_DEVELOPMENT_STAGE = "PRODUCTION"
298+
AI_APPLICATION_QUALIFIED_NAME = "default/ai/aiapplication/testApplicationAi"
299+
AI_APPLICATION_DEVELOPMENT_STAGE_UPDATED = "DEVELOPMENT"

0 commit comments

Comments
 (0)