Skip to content
53 changes: 50 additions & 3 deletions src/opengeodeweb_viewer/config.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import os
import tempfile
from shutil import copyfile, copytree
from sys import platform


Expand Down Expand Up @@ -26,7 +28,52 @@ def dev_config():

def test_config(path):
default_config()
print(f"{os.path.dirname(__file__)=}", flush=True)
os.environ["DATA_FOLDER_PATH"] = os.path.join(path, "data")

print(f"{os.environ.get('DATA_FOLDER_PATH')=}", flush=True)
tmp_data_root = tempfile.mkdtemp(prefix="ogw_test_data_")
os.environ["DATA_FOLDER_PATH"] = tmp_data_root

original_data_path = os.path.join(path, "data")
if not os.path.exists(original_data_path):
raise FileNotFoundError(f"Test data folder not found: {original_data_path}")

valid_extensions = {".vtp", ".vti", ".vtu", ".vtm", ".png", ".jpeg", ".jpg"}

test_ids = ["123456789", "12345678"]

for test_id in test_ids:
test_id_dir = os.path.join(tmp_data_root, test_id)
os.makedirs(test_id_dir, exist_ok=True)

test_project_uuid = "test-project-uuid"
test_data_uuid = "test-data-uuid"
new_structure_dir = os.path.join(tmp_data_root, test_project_uuid, test_data_uuid)
os.makedirs(new_structure_dir, exist_ok=True)

uploads_dir = os.path.join(tmp_data_root, test_project_uuid, "uploads")
os.makedirs(uploads_dir, exist_ok=True)

for root, dirs, files in os.walk(original_data_path):
for d in dirs:
src_dir = os.path.join(root, d)
dst_dir = os.path.join(tmp_data_root, test_ids[0], d)
if not os.path.exists(dst_dir):
copytree(src_dir, dst_dir, dirs_exist_ok=True)

for file_name in files:
ext = os.path.splitext(file_name)[1].lower()
if ext not in valid_extensions:
continue

full_path = os.path.join(root, file_name)

for test_id in test_ids:
test_id_dst = os.path.join(tmp_data_root, test_id, file_name)
copyfile(full_path, test_id_dst)

new_structure_dst = os.path.join(new_structure_dir, file_name)
copyfile(full_path, new_structure_dst)

uploads_dst = os.path.join(uploads_dir, file_name)
copyfile(full_path, uploads_dst)

print(f"\n✅ DATA_FOLDER_PATH set to: {tmp_data_root}", flush=True)
6 changes: 2 additions & 4 deletions src/opengeodeweb_viewer/object/object_methods.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@ def __init__(self):
def registerObject(self, id, file_name, reader, filter, mapper):
actor = vtk.vtkActor()
self.register_object(id, reader, filter, actor, mapper, {})

reader.SetFileName(os.path.join(self.DATA_FOLDER_PATH, file_name))

reader.SetFileName(os.path.join(self.DATA_FOLDER_PATH, id, file_name))
actor.SetMapper(mapper)
mapper.SetColorModeToMapScalars()
mapper.SetResolveCoincidentTopologyLineOffsetParameters(1, -0.1)
Expand Down Expand Up @@ -60,7 +58,7 @@ def applyTextures(self, id, textures):
new_texture = vtk.vtkTexture()
image_reader = vtk.vtkXMLImageDataReader()
image_reader.SetFileName(
os.path.join(self.DATA_FOLDER_PATH, texture_file_name)
os.path.join(self.DATA_FOLDER_PATH, id, texture_file_name)
)

shader_texture_name = f"VTK_TEXTURE_UNIT_{index}"
Expand Down
12 changes: 12 additions & 0 deletions src/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import vtk
import os
from opengeodeweb_viewer import config
import shutil


class ServerMonitor:
Expand Down Expand Up @@ -155,3 +156,14 @@ def server(xprocess):
# clean up whole process tree afterwards
xprocess.getinfo(name).terminate()
monitor.print_log()


@pytest.fixture(scope="session", autouse=True)
def configure_test_environment():
base_path = os.path.dirname(__file__)
config.test_config(base_path)
yield
tmp_data_path = os.environ.get("DATA_FOLDER_PATH")
if tmp_data_path and "ogw_test_data_" in tmp_data_path:
shutil.rmtree(tmp_data_path, ignore_errors=True)
print(f"Cleaned up test data folder: {tmp_data_path}", flush=True)