Skip to content

Commit 18da2ac

Browse files
committed
[tests] Added unit tests
1 parent 2173caa commit 18da2ac

File tree

2 files changed

+54
-3
lines changed

2 files changed

+54
-3
lines changed

pyatlan/client/asset.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
Range,
9898
SortItem,
9999
Term,
100+
Terms,
100101
with_active_category,
101102
with_active_glossary,
102103
with_active_term,
@@ -181,7 +182,7 @@ def _ensure_type_filter_present(criteria: IndexSearchRequest) -> None:
181182
return
182183

183184
has_type_filter = any(
184-
isinstance(f, Term)
185+
isinstance(f, (Term, Terms))
185186
and f.field == Referenceable.TYPE_NAME.keyword_field_name
186187
for f in criteria.dsl.query.filter
187188
)

tests/unit/test_client.py

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
from pyatlan.model.group import GroupRequest
5656
from pyatlan.model.lineage import LineageListRequest
5757
from pyatlan.model.response import AssetMutationResponse
58-
from pyatlan.model.search import Bool, Term
58+
from pyatlan.model.search import Bool, Term, TermAttributes
5959
from pyatlan.model.search_log import SearchLogRequest
6060
from pyatlan.model.typedef import EnumDef
6161
from pyatlan.model.user import AtlanUser, UserRequest
@@ -1606,6 +1606,56 @@ def test_index_search_with_no_aggregation_results(
16061606
mock_api_caller.reset_mock()
16071607

16081608

1609+
def test_type_name_in_asset_search(mock_api_caller):
1610+
# When the type name is not present in the request
1611+
request = (FluentSearch().where(CompoundQuery.active_assets())).to_request()
1612+
client = AssetClient(mock_api_caller)
1613+
client._ensure_type_filter_present(request)
1614+
1615+
assert request.dsl.query and request.dsl.query.filter
1616+
assert isinstance(request.dsl.query.filter, list)
1617+
1618+
has_type_filter = any(
1619+
isinstance(f, Term) and f.field == TermAttributes.SUPER_TYPE_NAMES.value
1620+
for f in request.dsl.query.filter
1621+
)
1622+
assert has_type_filter is True
1623+
1624+
# When the type name is present in the request (no need to add super type filter)
1625+
request = (
1626+
FluentSearch()
1627+
.where(CompoundQuery.active_assets())
1628+
.where(CompoundQuery.asset_type(AtlasGlossary))
1629+
).to_request()
1630+
client._ensure_type_filter_present(request)
1631+
1632+
assert request.dsl.query and request.dsl.query.filter
1633+
assert isinstance(request.dsl.query.filter, list)
1634+
1635+
has_type_filter = any(
1636+
isinstance(f, Term) and f.field == TermAttributes.SUPER_TYPE_NAMES.value
1637+
for f in request.dsl.query.filter
1638+
)
1639+
assert has_type_filter is False
1640+
1641+
# When multiple type name(s) is present in the request (no need to add super type filter)
1642+
request = (
1643+
FluentSearch()
1644+
.where(CompoundQuery.active_assets())
1645+
.where(CompoundQuery.asset_types([AtlasGlossary, AtlasGlossaryTerm]))
1646+
).to_request()
1647+
client._ensure_type_filter_present(request)
1648+
1649+
assert request.dsl.query and request.dsl.query.filter
1650+
assert isinstance(request.dsl.query.filter, list)
1651+
1652+
has_type_filter = any(
1653+
isinstance(f, Term) and f.field == TermAttributes.SUPER_TYPE_NAMES.value
1654+
for f in request.dsl.query.filter
1655+
)
1656+
assert has_type_filter is False
1657+
1658+
16091659
def _assert_search_results(results, response_json, sorts, bulk=False):
16101660
for i, result in enumerate(results):
16111661
assert result and response_json["entities"][i]
@@ -2553,7 +2603,7 @@ def test_atlan_client_headers(client: AtlanClient):
25532603
assert expected == client._session.headers
25542604

25552605

2556-
def test_get_all_pagation(group_client, mock_api_caller):
2606+
def test_get_all_pagination(group_client, mock_api_caller):
25572607
mock_page_1 = [
25582608
{"id": "1", "alias": "Group3"},
25592609
{"id": "2", "alias": "Group4"},

0 commit comments

Comments
 (0)