| 
1 | 1 | from opengeodeweb_viewer.rpc.model.model_protocols import VtkModelView  | 
 | 2 | +import os  | 
 | 3 | +from pathlib import Path  | 
 | 4 | +from shutil import copyfile  | 
 | 5 | +from opengeodeweb_viewer.database.connection import db_manager  | 
 | 6 | +from opengeodeweb_microservice.database.data import Data  | 
2 | 7 | 
 
  | 
3 | 8 | 
 
  | 
 | 9 | +def _prepare_dataset(  | 
 | 10 | +    *,  | 
 | 11 | +    id: str,  | 
 | 12 | +    geode_object: str,  | 
 | 13 | +    viewable_file_name: str,  | 
 | 14 | +) -> str:  | 
 | 15 | +    tests_root = Path(__file__).resolve().parents[1]  | 
 | 16 | +    src_data = tests_root / "data"  | 
 | 17 | +    data_root = os.environ.get("DATA_FOLDER_PATH")  | 
 | 18 | +    assert data_root, "DATA_FOLDER_PATH non défini"  | 
 | 19 | +    dest_dir = Path(data_root) / id  | 
 | 20 | +    dest_dir.mkdir(parents=True, exist_ok=True)  | 
 | 21 | + | 
 | 22 | +    src_file = src_data / viewable_file_name  | 
 | 23 | +    dst_file = dest_dir / viewable_file_name  | 
 | 24 | +    copyfile(src_file, dst_file)  | 
 | 25 | + | 
 | 26 | +    session = db_manager.get_session()  | 
 | 27 | +    try:  | 
 | 28 | +        row = session.get(Data, id)  | 
 | 29 | +        if row is None:  | 
 | 30 | +            session.add(  | 
 | 31 | +                Data(  | 
 | 32 | +                    id=id,  | 
 | 33 | +                    native_file_name="",  | 
 | 34 | +                    viewable_file_name=viewable_file_name,  | 
 | 35 | +                    geode_object=geode_object,  | 
 | 36 | +                    light_viewable=None,  | 
 | 37 | +                    input_file="",  | 
 | 38 | +                    additional_files=[],  | 
 | 39 | +                )  | 
 | 40 | +            )  | 
 | 41 | +        else:  | 
 | 42 | +            row.viewable_file_name = viewable_file_name  | 
 | 43 | +            row.geode_object = geode_object  | 
 | 44 | +        session.commit()  | 
 | 45 | +    finally:  | 
 | 46 | +        session.close()  | 
 | 47 | +    return id  | 
 | 48 | + | 
4 | 49 | def test_register_model(server):  | 
5 | 50 | 
 
  | 
 | 51 | +    _prepare_dataset(id="123456789", geode_object="model", viewable_file_name="CrossSection.vtm")  | 
6 | 52 |     server.call(  | 
7 | 53 |         VtkModelView.model_prefix + VtkModelView.model_schemas_dict["register"]["rpc"],  | 
8 |  | -        [{"id": "123456789", "file_name": "CrossSection.vtm"}],  | 
 | 54 | +        [{"id": "123456789"}],  | 
9 | 55 |     )  | 
10 | 56 |     assert server.compare_image(3, "model/register.jpeg") == True  | 
11 | 57 | 
 
  | 
12 | 58 | 
 
  | 
13 | 59 | def test_register_model_cube(server):  | 
14 | 60 | 
 
  | 
 | 61 | +    _prepare_dataset(id="123456789", geode_object="model", viewable_file_name="cube.vtm")  | 
15 | 62 |     server.call(  | 
16 | 63 |         VtkModelView.model_prefix + VtkModelView.model_schemas_dict["register"]["rpc"],  | 
17 |  | -        [{"id": "123456789", "file_name": "cube.vtm"}],  | 
 | 64 | +        [{"id": "123456789"}],  | 
18 | 65 |     )  | 
19 | 66 |     assert server.compare_image(3, "model/cube_register.jpeg") == True  | 
20 | 67 | 
 
  | 
 | 
0 commit comments