33# pylint: disable=unused-variable
44# pylint: disable=too-many-arguments
55
6+ import json
67from collections .abc import Iterator
78
89import pytest
1415from faker import Faker
1516from pytest_simcore .helpers import postgres_tools
1617from pytest_simcore .helpers .faker_factories import random_project , random_user
17- from simcore_postgres_database .models .projects import projects
18+ from simcore_postgres_database .models .projects import ProjectType , projects
1819from simcore_postgres_database .models .projects_to_jobs import projects_to_jobs
1920
2021
@@ -97,7 +98,7 @@ def test_populate_projects_to_jobs_during_migration(
9798 "Study associated to solver job:"
9899 """{
99100 "id": "cd03450c-4c17-4c2c-85fd-0d951d7dcd5a",
100- "name": "solvers/simcore%2Fservices%2Fcomp%2Fitis%2Fsleeper/releases/2.2.1/jobs/cd03450c-4c2c-85fd-0d951d7dcd5a",
101+ "name": "solvers/simcore%2Fservices%2Fcomp%2Fitis%2Fsleeper/releases/2.2.1/jobs/cd03450c-4c17- 4c2c-85fd-0d951d7dcd5a",
101102 "inputs_checksum": "015ba4cd5cf00c511a8217deb65c242e3b15dc6ae4b1ecf94982d693887d9e8a",
102103 "created_at": "2025-01-27T13:12:58.676564Z"
103104 }
@@ -120,8 +121,37 @@ def test_populate_projects_to_jobs_during_migration(
120121 prj_owner = user_id ,
121122 ),
122123 ]
124+
125+ default_column_values = {
126+ # NOTE: not server_default values are not applied here!
127+ "type" : ProjectType .STANDARD .value ,
128+ "workbench" : {},
129+ "access_rights" : {},
130+ "published" : False ,
131+ "hidden" : False ,
132+ "workspace_id" : None ,
133+ }
134+
135+ # NOTE: cannot use `projects` table directly here because it changes
136+ # throughout time
123137 for prj in projects_data :
124- conn .execute (sa .insert (projects ).values (prj ))
138+ for key , value in default_column_values .items ():
139+ prj .setdefault (key , value )
140+
141+ for key , value in prj .items ():
142+ if isinstance (value , dict ):
143+ prj [key ] = json .dumps (value )
144+
145+ columns = list (prj .keys ())
146+ values_clause = ", " .join (f":{ col } " for col in columns )
147+ columns_clause = ", " .join (columns )
148+ stmt = sa .text (
149+ f"""
150+ INSERT INTO projects ({ columns_clause } )
151+ VALUES ({ values_clause } )
152+ """ # noqa: S608
153+ ).bindparams (** prj )
154+ conn .execute (stmt )
125155
126156 # MIGRATE UPGRADE: this should populate
127157 simcore_postgres_database .cli .upgrade .callback ("head" )
0 commit comments