diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 097ece1..f97ab26 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -43,9 +43,17 @@ jobs: run: | poetry run pytest -v --tb=short tests/unit-tests/ - - name: Integration Tests + - name: Integration Tests on a shared cluster env: XATA_WORKSPACE_ID: ${{ secrets.INTEGRATION_TEST_WORKSPACE }} XATA_API_KEY: ${{ secrets.INTEGRATION_TEST_API_KEY }} run: | poetry run pytest -v --tb=short -W ignore::DeprecationWarning tests/integration-tests/ + + - name: Integration Tests on a dedicated cluster + env: + XATA_WORKSPACE_ID: ${{ secrets.INTEGRATION_DC_TEST_WORKSPACE }} + XATA_API_KEY: ${{ secrets.INTEGRATION_TEST_API_KEY }} + XATA_STATIC_DB_NAME: ${{ secrets.INTEGRATION_DC_STATIC_DB_NAME }} + run: | + poetry run pytest -v --tb=short -W ignore::DeprecationWarning tests/integration-tests/ diff --git a/test.py b/test.py new file mode 100644 index 0000000..3b8129c --- /dev/null +++ b/test.py @@ -0,0 +1,5 @@ +from xata.client import XataClient + +xata = XataClient(db_name="xata-py", workspace_id="xata-uq2d57") +record = xata.records().get("AttachmentsIssue", "rec_cpleilidajcq52kshbpg", columns=["one_file.id"]) +print(record) diff --git a/tests/data/attachments/images/01.gif b/tests/data/attachments/images/01.gif index b488f41..1ca14a9 100644 Binary files a/tests/data/attachments/images/01.gif and b/tests/data/attachments/images/01.gif differ diff --git a/tests/data/attachments/images/02.gif b/tests/data/attachments/images/02.gif index a6493d5..50c49a1 100644 Binary files a/tests/data/attachments/images/02.gif and b/tests/data/attachments/images/02.gif differ diff --git a/tests/integration-tests/api_request_test.py b/tests/integration-tests/api_request_test.py index ae573f2..4145e40 100644 --- a/tests/integration-tests/api_request_test.py +++ b/tests/integration-tests/api_request_test.py @@ -43,7 +43,7 @@ def test_direct_instance_in_namespace_wit_client_dependencies(self): Direct namespace invocation with dependency on internal client config :link https://github.com/xataio/xata-py/issues/57 """ - db_name = utils.get_db_name() + db_name = utils.get_db_name(True) databases = XataClient().databases() # workspace_id should be provided by the the client implicitly diff --git a/tests/integration-tests/api_response_test.py b/tests/integration-tests/api_response_test.py index f6eb969..f590a5d 100644 --- a/tests/integration-tests/api_response_test.py +++ b/tests/integration-tests/api_response_test.py @@ -17,6 +17,8 @@ # under the License. # +import os + import utils from xata.client import XataClient @@ -26,9 +28,11 @@ class TestApiResponse(object): def setup_class(self): self.db_name = utils.get_db_name() self.client = XataClient(db_name=self.db_name) - assert self.client.databases().create(self.db_name).is_success() - assert self.client.table().create("Posts").is_success() - assert self.client.table().set_schema("Posts", utils.get_posts_schema()).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() + if not self.client.table().get_schema("Posts").is_success(): + assert self.client.table().create("Posts").is_success() + assert self.client.table().set_schema("Posts", utils.get_posts_schema()).is_success() payload = { "operations": [ @@ -47,7 +51,9 @@ def setup_class(self): assert self.client.records().transaction(payload).is_success() def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + assert self.client.table().delete("Posts").is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() def test_is_success_true(self): user = XataClient().users().get() diff --git a/tests/integration-tests/branch_test.py b/tests/integration-tests/branch_test.py index cae7d3b..5506188 100644 --- a/tests/integration-tests/branch_test.py +++ b/tests/integration-tests/branch_test.py @@ -17,6 +17,8 @@ # under the License. # +import os + import pytest import utils @@ -29,28 +31,19 @@ def setup_class(self): self.branch_name = "main" self.client = XataClient(db_name=self.db_name, branch_name=self.branch_name) - # create database - assert self.client.databases().create(self.db_name).is_success() - assert self.client.table().create("Posts").is_success - assert ( - self.client.table() - .set_schema( - "Posts", - { - "columns": [ - {"name": "title", "type": "string"}, - {"name": "labels", "type": "multiple"}, - {"name": "slug", "type": "string"}, - {"name": "text", "type": "text"}, - ] - }, - ) - .is_success() - ) + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() + assert self.client.table().create("Posts").is_success() + assert self.client.table().set_schema("Posts", utils.get_posts_schema()).is_success() def teardown_class(self): - r = self.client.databases().delete(self.db_name) - assert r.is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() + else: + assert self.client.table().delete("Posts").is_success() + for b in self.client.branch().list(self.db_name).get("branches"): + if b["name"] != "main": + self.client.branch().delete(branch_name=b["name"]) def test_get_branch_list(self): r = self.client.branch().list(self.db_name) diff --git a/tests/integration-tests/databases_test.py b/tests/integration-tests/databases_test.py index 599b31b..f345ada 100644 --- a/tests/integration-tests/databases_test.py +++ b/tests/integration-tests/databases_test.py @@ -26,7 +26,7 @@ class TestDatabasesNamespace(object): def setup_class(self): - self.db_name = utils.get_db_name() + self.db_name = utils.get_db_name(True) self.branch_name = "main" self.client = XataClient(db_name=self.db_name, branch_name=self.branch_name) diff --git a/tests/integration-tests/files_access.py b/tests/integration-tests/files_access.py index b8d7abb..8c23cf1 100644 --- a/tests/integration-tests/files_access.py +++ b/tests/integration-tests/files_access.py @@ -17,6 +17,7 @@ # under the License. # +import os import time import utils @@ -28,25 +29,19 @@ class TestFilesAccess(object): def setup_class(self): self.db_name = utils.get_db_name() - self.branch_name = "main" - self.client = XataClient(db_name=self.db_name, branch_name=self.branch_name) + self.client = XataClient(db_name=self.db_name) self.fake = utils.get_faker() - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() assert self.client.table().create("Attachments").is_success() - assert ( - self.client.table() - .set_schema( - "Attachments", - utils.get_attachments_schema(), - db_name=self.db_name, - branch_name=self.branch_name, - ) - .is_success() - ) + assert self.client.table().set_schema("Attachments", utils.get_attachments_schema()).is_success() def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() + else: + assert self.client.table().delete("Attachments").is_success() def test_public_flag_true(self): payload = { diff --git a/tests/integration-tests/files_multiple_files_test.py b/tests/integration-tests/files_multiple_files_test.py index 207b523..e5a02ea 100644 --- a/tests/integration-tests/files_multiple_files_test.py +++ b/tests/integration-tests/files_multiple_files_test.py @@ -17,6 +17,8 @@ # under the License. # +import os + import utils from requests import request @@ -26,29 +28,22 @@ class TestFilesMultipleFiles(object): def setup_class(self): self.db_name = utils.get_db_name() - self.branch_name = "main" - self.client = XataClient(db_name=self.db_name, branch_name=self.branch_name) + self.client = XataClient(db_name=self.db_name) self.fake = utils.get_faker() - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() assert self.client.table().create("Attachments").is_success() - assert ( - self.client.table() - .set_schema( - "Attachments", - utils.get_attachments_schema(), - db_name=self.db_name, - branch_name=self.branch_name, - ) - .is_success() - ) + assert self.client.table().set_schema("Attachments", utils.get_attachments_schema()).is_success() def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + assert self.client.table().delete("Attachments").is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() def test_put_file_item(self): payload = { - "title": self.fake.catch_phrase(), + "title": "test_put_file", "many_files": [ utils.get_file("images/01.gif", public_url=True), utils.get_file("images/02.gif", public_url=True), @@ -74,7 +69,12 @@ def test_put_file_item(self): assert img_2 == proof_2.content # overwrite item 1 with image 2 + assert record["many_files"][0] == "" file_1 = self.client.files().put_item("Attachments", rid, "many_files", record["many_files"][0]["id"], img_2) + + # assert file_1.status_code == 0 # extra + # assert file_1.json() == "" # extra + assert file_1.is_success() assert "attributes" in file_1 assert "mediaType" in file_1 @@ -91,7 +91,7 @@ def test_put_file_item(self): def test_delete_file(self): payload = { - "title": self.fake.catch_phrase(), + "title": "test_delete_file", "many_files": [ utils.get_file("images/01.gif", public_url=True), utils.get_file("images/02.gif", public_url=True), @@ -118,7 +118,7 @@ def test_delete_file(self): def test_get_item(self): payload = { - "title": self.fake.catch_phrase(), + "title": "test_get_item", "many_files": [ utils.get_file("images/01.gif", public_url=True), utils.get_file("images/02.gif", public_url=True), diff --git a/tests/integration-tests/files_single_file_test.py b/tests/integration-tests/files_single_file_test.py index 6be4d9a..a65ee6f 100644 --- a/tests/integration-tests/files_single_file_test.py +++ b/tests/integration-tests/files_single_file_test.py @@ -17,6 +17,8 @@ # under the License. # +import os + import utils from faker import Faker @@ -26,25 +28,19 @@ class TestFilesSingleFile(object): def setup_class(self): self.db_name = utils.get_db_name() - self.branch_name = "main" - self.client = XataClient(db_name=self.db_name, branch_name=self.branch_name) - self.fake = Faker() + self.client = XataClient(db_name=self.db_name) + self.fake = utils.get_faker() - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() assert self.client.table().create("Attachments").is_success() - assert ( - self.client.table() - .set_schema( - "Attachments", - utils.get_attachments_schema(), - db_name=self.db_name, - branch_name=self.branch_name, - ) - .is_success() - ) + assert self.client.table().set_schema("Attachments", utils.get_attachments_schema()).is_success() def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() + else: + assert self.client.table().delete("Attachments").is_success() def test_put_csv_file(self): payload = {"title": self.fake.catch_phrase()} diff --git a/tests/integration-tests/files_transormations_test.py b/tests/integration-tests/files_transormations_test.py index c5485bf..b1f34fb 100644 --- a/tests/integration-tests/files_transormations_test.py +++ b/tests/integration-tests/files_transormations_test.py @@ -19,6 +19,7 @@ import io import json +import os import pytest import utils @@ -33,22 +34,17 @@ class TestFilesTransformations(object): def setup_class(self): self.db_name = utils.get_db_name() self.client = XataClient(db_name=self.db_name) - self.fake = Faker() + self.fake = utils.get_faker() - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() assert self.client.table().create("Attachments").is_success() - assert ( - self.client.table() - .set_schema( - "Attachments", - utils.get_attachments_schema(), - db_name=self.db_name, - ) - .is_success() - ) + assert self.client.table().set_schema("Attachments", utils.get_attachments_schema()).is_success() def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + assert self.client.table().delete("Attachments").is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() def test_rotate_public_file(self): payload = { diff --git a/tests/integration-tests/files_upload_url_test.py b/tests/integration-tests/files_upload_url_test.py index 30a44aa..b0e8e5d 100644 --- a/tests/integration-tests/files_upload_url_test.py +++ b/tests/integration-tests/files_upload_url_test.py @@ -17,33 +17,29 @@ # under the License. # -import utils +import os +import utils from requests import request + from xata.client import XataClient + class TestFilesSingleFile(object): def setup_class(self): self.db_name = utils.get_db_name() - self.branch_name = "main" - self.client = XataClient(db_name=self.db_name, branch_name=self.branch_name) + self.client = XataClient(db_name=self.db_name) self.fake = utils.get_faker() - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() assert self.client.table().create("Attachments").is_success() - assert ( - self.client.table() - .set_schema( - "Attachments", - utils.get_attachments_schema(), - db_name=self.db_name, - branch_name=self.branch_name, - ) - .is_success() - ) + assert self.client.table().set_schema("Attachments", utils.get_attachments_schema()).is_success() def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + assert self.client.table().delete("Attachments").is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() def test_upload_file(self): payload = {"title": self.fake.catch_phrase()} diff --git a/tests/integration-tests/helpers_bulkprocessor_test.py b/tests/integration-tests/helpers_bulkprocessor_test.py index 98b5c72..cf3de6d 100644 --- a/tests/integration-tests/helpers_bulkprocessor_test.py +++ b/tests/integration-tests/helpers_bulkprocessor_test.py @@ -17,6 +17,8 @@ # under the License. # +import os + import pytest import utils from faker import Faker @@ -31,24 +33,13 @@ def setup_class(self): self.client = XataClient(db_name=self.db_name) self.fake = Faker() - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() assert self.client.table().create("Posts").is_success() + assert self.client.table().set_schema("Posts", utils.get_posts_schema()).is_success() assert self.client.table().create("Users").is_success() # create schema - assert ( - self.client.table() - .set_schema( - "Posts", - { - "columns": [ - {"name": "title", "type": "string"}, - {"name": "text", "type": "text"}, - ] - }, - ) - .is_success() - ) assert ( self.client.table() .set_schema( @@ -64,7 +55,11 @@ def setup_class(self): ) def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() + else: + assert self.client.table().delete("Posts").is_success() + assert self.client.table().delete("Users").is_success() @pytest.fixture def record(self) -> dict: diff --git a/tests/integration-tests/helpers_transaction_test.py b/tests/integration-tests/helpers_transaction_test.py index 87b38b6..ad5bf4f 100644 --- a/tests/integration-tests/helpers_transaction_test.py +++ b/tests/integration-tests/helpers_transaction_test.py @@ -17,6 +17,8 @@ # under the License. # +import os + import pytest import utils from faker import Faker @@ -28,29 +30,20 @@ class TestHelpersTransaction(object): def setup_class(self): self.db_name = utils.get_db_name() - self.branch_name = "main" - self.client = XataClient(db_name=self.db_name, branch_name=self.branch_name) + self.client = XataClient(db_name=self.db_name) self.fake = Faker() - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() assert self.client.table().create("Posts").is_success() - assert ( - self.client.table() - .set_schema( - "Posts", - { - "columns": [ - {"name": "title", "type": "string"}, - {"name": "content", "type": "text"}, - ] - }, - ) - .is_success() - ) + assert self.client.table().set_schema("Posts", utils.get_posts_schema()).is_success() def teardown_class(self): - r = self.client.databases().delete(self.db_name) - assert r.is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() + else: + assert self.client.table().delete("Posts").is_success() + assert self.client.branch().delete(branch_name="testing-issue-170").is_success() @pytest.fixture def record(self) -> dict: diff --git a/tests/integration-tests/records_branch_transactions_test.py b/tests/integration-tests/records_branch_transactions_test.py index 49e4267..f529cab 100644 --- a/tests/integration-tests/records_branch_transactions_test.py +++ b/tests/integration-tests/records_branch_transactions_test.py @@ -17,6 +17,8 @@ # under the License. # +import os + import pytest import utils @@ -35,12 +37,16 @@ def setup_class(self): self.record_ids = [] self.fake = utils.get_faker() - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() assert self.client.table().create("Posts").is_success() assert self.client.table().set_schema("Posts", utils.get_posts_schema()).is_success() def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() + else: + assert self.client.table().delete("Posts").is_success() def test_insert_only(self): payload = { diff --git a/tests/integration-tests/records_file_operations_test.py b/tests/integration-tests/records_file_operations_test.py index bba79a8..519d53e 100644 --- a/tests/integration-tests/records_file_operations_test.py +++ b/tests/integration-tests/records_file_operations_test.py @@ -17,6 +17,8 @@ # under the License. # +import os + import utils from xata.client import XataClient @@ -28,20 +30,15 @@ def setup_class(self): self.client = XataClient(db_name=self.db_name) self.fake = utils.get_faker() - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() assert self.client.table().create("Attachments").is_success() - assert ( - self.client.table() - .set_schema( - "Attachments", - utils.get_attachments_schema(), - db_name=self.db_name, - ) - .is_success() - ) + assert self.client.table().set_schema("Attachments", utils.get_attachments_schema()).is_success() def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + assert self.client.table().delete("Attachments").is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() def test_insert_record_with_files_and_read_it(self): payload = { diff --git a/tests/integration-tests/records_test.py b/tests/integration-tests/records_test.py index 77b4453..560c9d0 100644 --- a/tests/integration-tests/records_test.py +++ b/tests/integration-tests/records_test.py @@ -17,6 +17,8 @@ # under the License. # +import os + import pytest import utils @@ -30,12 +32,16 @@ def setup_class(self): self.fake = utils.get_faker() self.record_id = utils.get_random_string(24) - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() assert self.client.table().create("Posts").is_success() assert self.client.table().set_schema("Posts", utils.get_posts_schema()).is_success() def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() + else: + assert self.client.table().delete("Posts").is_success() @pytest.fixture def record(self) -> dict: diff --git a/tests/integration-tests/search_and_filter_query_test.py b/tests/integration-tests/search_and_filter_query_test.py index 8acac04..536aa8f 100644 --- a/tests/integration-tests/search_and_filter_query_test.py +++ b/tests/integration-tests/search_and_filter_query_test.py @@ -17,6 +17,8 @@ # under the License. # +import os + import utils from faker import Faker @@ -35,14 +37,17 @@ def setup_class(self): self.posts = utils.get_posts(50) self.client = XataClient(db_name=self.db_name) - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() assert self.client.table().create("Posts").is_success() assert self.client.table().set_schema("Posts", utils.get_posts_schema()).is_success() assert self.client.records().bulk_insert("Posts", {"records": self.posts}).is_success() utils.wait_until_records_are_indexed("Posts", "title", self.client) def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + assert self.client.table().delete("Posts").is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() def test_query_table(self): payload = { diff --git a/tests/integration-tests/search_and_filter_revlinks_test.py b/tests/integration-tests/search_and_filter_revlinks_test.py index 761f794..c773fa6 100644 --- a/tests/integration-tests/search_and_filter_revlinks_test.py +++ b/tests/integration-tests/search_and_filter_revlinks_test.py @@ -17,6 +17,7 @@ # under the License. # +import os import random import utils @@ -32,7 +33,8 @@ def setup_class(self): self.record_id = utils.get_random_string(24) self.client = XataClient(db_name=self.db_name) - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() assert self.client.table().create("Users").is_success() assert self.client.table().create("Posts").is_success() @@ -80,7 +82,10 @@ def setup_class(self): assert self.client.records().bulk_insert("Posts", {"records": self.posts}).is_success() def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + assert self.client.table().delete("Posts").is_success() + assert self.client.table().delete("Users").is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() def test_revlinks_with_alias(self): payload = { diff --git a/tests/integration-tests/search_and_filter_test.py b/tests/integration-tests/search_and_filter_test.py index 9a4242d..c4e86ab 100644 --- a/tests/integration-tests/search_and_filter_test.py +++ b/tests/integration-tests/search_and_filter_test.py @@ -17,6 +17,8 @@ # under the License. # +import os + import utils from faker import Faker @@ -31,14 +33,17 @@ def setup_class(self): self.posts = utils.get_posts(50) self.client = XataClient(db_name=self.db_name) - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() assert self.client.table().create("Posts").is_success() assert self.client.table().set_schema("Posts", utils.get_posts_schema()).is_success() assert self.client.records().bulk_insert("Posts", {"records": self.posts}).is_success() utils.wait_until_records_are_indexed("Posts", "title", self.client) def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + assert self.client.table().delete("Posts").is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() def test_search_branch(self): """ diff --git a/tests/integration-tests/search_and_filter_vector_search_test.py b/tests/integration-tests/search_and_filter_vector_search_test.py index 5e6c292..65b3fd6 100644 --- a/tests/integration-tests/search_and_filter_vector_search_test.py +++ b/tests/integration-tests/search_and_filter_vector_search_test.py @@ -17,6 +17,8 @@ # under the License. # +import os + import utils from xata.client import XataClient @@ -32,7 +34,8 @@ def setup_class(self): self.branch_name = "main" self.client = XataClient(db_name=self.db_name, branch_name=self.branch_name) - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() assert self.client.table().create("users").is_success() # create schema @@ -63,7 +66,9 @@ def setup_class(self): utils.wait_until_records_are_indexed("users", "full_name", self.client) def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + assert self.client.table().delete("users").is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() def test_vector_search_table_simple(self): payload = { diff --git a/tests/integration-tests/search_and_filter_with_alias_test.py b/tests/integration-tests/search_and_filter_with_alias_test.py index 2931d88..edf5662 100644 --- a/tests/integration-tests/search_and_filter_with_alias_test.py +++ b/tests/integration-tests/search_and_filter_with_alias_test.py @@ -16,6 +16,7 @@ # specific language governing permissions and limitations # under the License. # +import os import utils from faker import Faker @@ -27,26 +28,13 @@ class TestSearchAndFilterWithAliasNamespace(object): def setup_class(self): self.fake = Faker() self.db_name = utils.get_db_name() - self.branch_name = "main" self.record_id = utils.get_random_string(24) - self.client = XataClient(db_name=self.db_name, branch_name=self.branch_name) + self.client = XataClient(db_name=self.db_name) - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() assert self.client.table().create("Posts").is_success() - - # create schema - r = self.client.table().set_schema( - "Posts", - { - "columns": [ - {"name": "title", "type": "string"}, - {"name": "labels", "type": "multiple"}, - {"name": "slug", "type": "string"}, - {"name": "text", "type": "text"}, - ] - }, - ) - assert r.is_success() + assert self.client.table().set_schema("Posts", utils.get_posts_schema()).is_success() # ingests posts self.posts = [ @@ -63,7 +51,9 @@ def setup_class(self): utils.wait_until_records_are_indexed("Posts", "title", self.client) def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + assert self.client.table().delete("Posts").is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() def test_query_table(self): """ diff --git a/tests/integration-tests/sql_query_test.py b/tests/integration-tests/sql_query_test.py index 343f97c..84d64e4 100644 --- a/tests/integration-tests/sql_query_test.py +++ b/tests/integration-tests/sql_query_test.py @@ -17,6 +17,8 @@ # under the License. # +import os + import utils from xata.client import XataClient @@ -26,7 +28,10 @@ class TestSqlQuery(object): def setup_class(self): self.db_name = utils.get_db_name() self.client = XataClient(db_name=self.db_name) - assert self.client.databases().create(self.db_name).is_success() + + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() + assert self.client.table().create("Users").is_success() assert ( self.client.table() @@ -46,7 +51,9 @@ def setup_class(self): assert self.client.records().bulk_insert("Users", {"records": users}).is_success() def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + assert self.client.table().delete("Users").is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() def test_query(self): r = self.client.sql().query('SELECT * FROM "Users" LIMIT 5') diff --git a/tests/integration-tests/table_test.py b/tests/integration-tests/table_test.py index d0f26ff..2982082 100644 --- a/tests/integration-tests/table_test.py +++ b/tests/integration-tests/table_test.py @@ -17,6 +17,8 @@ # under the License. # +import os + import pytest import utils @@ -26,13 +28,16 @@ class TestTableNamespace(object): def setup_class(self): self.db_name = utils.get_db_name() - self.branch_name = "main" - self.client = XataClient(db_name=self.db_name, branch_name=self.branch_name) + self.client = XataClient(db_name=self.db_name) - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() + else: + assert self.client.table().delete("NewName").is_success() @pytest.fixture def columns(self) -> dict: @@ -60,12 +65,7 @@ def test_update_table(self): r = self.client.table().create("RenameMe") assert r.is_success() - r = self.client.table().update( - "RenameMe", - {"name": "NewName"}, - db_name=self.db_name, - branch_name=self.branch_name, - ) + r = self.client.table().update("RenameMe", {"name": "NewName"}, db_name=self.db_name) assert r.is_success() assert r["status"] == "completed" assert "migrationID" in r diff --git a/tests/integration-tests/type_json_test.py b/tests/integration-tests/type_json_test.py index 0f6155a..0716e96 100644 --- a/tests/integration-tests/type_json_test.py +++ b/tests/integration-tests/type_json_test.py @@ -18,6 +18,7 @@ # import json +import os import utils from faker import Faker @@ -32,10 +33,13 @@ def setup_class(self): self.record_id = utils.get_random_string(24) self.client = XataClient(db_name=self.db_name) - assert self.client.databases().create(self.db_name).is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().create(self.db_name).is_success() def teardown_class(self): - assert self.client.databases().delete(self.db_name).is_success() + assert self.client.table().delete("Posts").is_success() + if not os.environ.get("XATA_STATIC_DB_NAME"): + assert self.client.databases().delete(self.db_name).is_success() def test_create_table_with_type(self): assert self.client.table().create("Posts").is_success() diff --git a/tests/integration-tests/utils.py b/tests/integration-tests/utils.py index 72b3c0a..1bbfb40 100644 --- a/tests/integration-tests/utils.py +++ b/tests/integration-tests/utils.py @@ -29,15 +29,18 @@ from xata.client import XataClient faker = Faker() -#Faker.seed(412) +# Faker.seed(412) def get_faker() -> Faker: return faker -def get_db_name() -> str: - return f"sdk-integration-py-{get_random_string(6)}" +def get_db_name(always_random: bool = False) -> str: + generated_name = f"sdk-integration-py-{get_random_string(6)}" + if always_random: + return generated_name + return os.environ.get("XATA_STATIC_DB_NAME", generated_name) def wait_until_records_are_indexed(table: str, col: str, client: XataClient): @@ -115,5 +118,6 @@ def get_posts_schema() -> dict: {"name": "labels", "type": "multiple"}, {"name": "slug", "type": "string"}, {"name": "content", "type": "text"}, + {"name": "text", "type": "text"}, ] } diff --git a/tests/integration-tests/workspaces_test.py b/tests/integration-tests/workspaces_test.py index 515e641..5f4b77c 100644 --- a/tests/integration-tests/workspaces_test.py +++ b/tests/integration-tests/workspaces_test.py @@ -25,9 +25,8 @@ class TestWorkspacesNamespace(object): def setup_class(self): - self.db_name = utils.get_db_name() - self.branch_name = "main" - self.client = XataClient(db_name=self.db_name, branch_name=self.branch_name) + self.db_name = utils.get_db_name(True) + self.client = XataClient(db_name=self.db_name) self.workspace_name = "py-sdk-tests-%s" % utils.get_random_string(6) def test_list_workspaces(self):