Skip to content

Commit fbc1e78

Browse files
committed
test: add integration tests for load_view
1 parent 88116cc commit fbc1e78

2 files changed

Lines changed: 56 additions & 0 deletions

File tree

tests/conftest.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2353,6 +2353,13 @@ def table_list(table_name: str) -> list[str]:
23532353
return [f"{table_name}_{idx}" for idx in range(NUM_TABLES)]
23542354

23552355

2356+
@pytest.fixture()
2357+
def view_name() -> str:
2358+
prefix = "my_iceberg_view-"
2359+
random_tag = "".join(choice(string.ascii_letters) for _ in range(RANDOM_LENGTH))
2360+
return (prefix + random_tag).lower()
2361+
2362+
23562363
@pytest.fixture()
23572364
def database_name() -> str:
23582365
prefix = "my_iceberg_database-"

tests/integration/test_rest_catalog.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,15 @@
1616
# under the License.
1717
# pylint:disable=redefined-outer-name
1818

19+
import time
20+
1921
import pytest
2022
from pytest_lazy_fixtures import lf
2123

2224
from pyiceberg.catalog.rest import RestCatalog
25+
from pyiceberg.exceptions import NoSuchViewError
26+
from pyiceberg.schema import Schema
27+
from pyiceberg.view.metadata import SQLViewRepresentation, ViewVersion
2328

2429
TEST_NAMESPACE_IDENTIFIER = "TEST NS"
2530

@@ -62,3 +67,47 @@ def test_create_namespace_if_already_existing(catalog: RestCatalog) -> None:
6267
catalog.create_namespace_if_not_exists(TEST_NAMESPACE_IDENTIFIER)
6368

6469
assert catalog.namespace_exists(TEST_NAMESPACE_IDENTIFIER)
70+
71+
72+
@pytest.mark.integration
73+
@pytest.mark.parametrize("catalog", [lf("session_catalog")])
74+
def test_load_view(catalog: RestCatalog, table_schema_nested: Schema, database_name: str, view_name: str) -> None:
75+
identifier = (database_name, view_name)
76+
if not catalog.namespace_exists(database_name):
77+
catalog.create_namespace(database_name)
78+
79+
view_version = ViewVersion(
80+
version_id=1,
81+
schema_id=1,
82+
timestamp_ms=int(time.time() * 1000),
83+
summary={},
84+
representations=[
85+
SQLViewRepresentation(
86+
type="sql",
87+
sql="SELECT 1 as some_col",
88+
dialect="spark",
89+
)
90+
],
91+
default_namespace=["default"],
92+
)
93+
view = catalog.create_view(identifier, table_schema_nested, view_version=view_version)
94+
loaded_view = catalog.load_view(identifier)
95+
assert view.name() == loaded_view.name()
96+
assert view.metadata == loaded_view.metadata
97+
98+
99+
@pytest.mark.integration
100+
@pytest.mark.parametrize("catalog", [lf("session_catalog")])
101+
def test_load_view_with_table_ident(
102+
catalog: RestCatalog, table_name: str, table_schema_nested: Schema, database_name: str
103+
) -> None:
104+
table_identifier = (database_name, table_name)
105+
if not catalog.namespace_exists(database_name):
106+
catalog.create_namespace(database_name)
107+
108+
if not catalog.table_exists(table_identifier):
109+
catalog.create_table(table_identifier, table_schema_nested)
110+
111+
assert catalog.table_exists(table_identifier)
112+
with pytest.raises(NoSuchViewError):
113+
catalog.load_view(table_identifier)

0 commit comments

Comments
 (0)