§
    ¸Ø”j$  ã                  ó´   — d dl mZ d dlZd dlmc mZ d dlZd dl	Z	d dl
mZ d dlmZ d dlmZ  G d„ de	j        ¦  «        Zedk    r e	j        ¦   «          dS dS )	é    )ÚannotationsN)ÚPath)ÚMock)ÚPostgresClientc                  ón   — e Zd Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	dd
„Z
dd„Zdd„Zdd„Zdd„ZdS )ÚPostgresSchemaContractTestsÚreturnÚNonec                óÆ   — t          j        t          j        ¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         d S )Nz&INSERT INTO employee_work_log_sessionsÚmetadataÚsession_metadata)ÚinspectÚ	getsourcer   Ú upsert_employee_work_log_sessionÚassertInÚassertNotIn©ÚselfÚsources     ú:C:\Projects\DSCons\tests\test_postgres_schema_contracts.pyÚDtest_upsert_employee_work_log_session_sql_references_runtime_columnsz`PostgresSchemaContractTests.test_upsert_employee_work_log_session_sql_references_runtime_columns   s]   € õ Ô"¥>Ô#RÑSÔSˆà�ŠÐ>ÀÑGÔGÐGØ�Š�j &Ñ)Ô)Ð)Ø×ÒÐ+¨VÑ4Ô4Ð4Ð4Ð4ó    c                óò   — t          j        t          j        ¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         d S )Nz%INSERT INTO employee_work_log_actionsÚ
shift_dater   Úevent_metadata)r   r   r   Úappend_employee_work_log_actionr   r   r   s     r   ÚCtest_append_employee_work_log_action_sql_references_runtime_columnsz_PostgresSchemaContractTests.test_append_employee_work_log_action_sql_references_runtime_columns   sq   € õ Ô"¥>Ô#QÑRÔRˆà�ŠÐ=¸vÑFÔFÐFØ�Š�l FÑ+Ô+Ð+Ø�Š�j &Ñ)Ô)Ð)Ø×ÒÐ)¨6Ñ2Ô2Ð2Ð2Ð2r   c                óš   — t          j        t          j        ¦  «        }|                      d|¦  «         |                      d|¦  «         d S )Nz&INSERT INTO dossier_review_submissionsÚreview_session_id)r   r   r   Ú submit_dossier_review_supplementr   r   s     r   ÚDtest_submit_dossier_review_supplement_sql_requires_review_session_idz`PostgresSchemaContractTests.test_submit_dossier_review_supplement_sql_requires_review_session_id   sG   € õ Ô"¥>Ô#RÑSÔSˆà�ŠÐ>ÀÑGÔGÐGØ�ŠÐ)¨6Ñ2Ô2Ð2Ð2Ð2r   c                ó  — t          j        t          j        ¦  «        }t          j        t          j        ¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         d S )Nz%(dossier_scope)sz::jsonbz'json.dumps(payload.get("dossier_scope"))r   r   r   Úcreate_dossier_review_sessionÚ_build_create_session_paramsr   )r   Úcreate_sourceÚparams_sources      r   ÚDtest_create_dossier_review_session_serializes_dossier_scope_as_jsonbz`PostgresSchemaContractTests.test_create_dossier_review_session_serializes_dossier_scope_as_jsonb'   sn   € õ  Ô)­.Ô*VÑWÔWˆÝÔ)­.Ô*UÑVÔVˆà�ŠÐ)¨=Ñ9Ô9Ð9Ø�Š�i Ñ/Ô/Ð/Ø�ŠÐ?ÀÑOÔOÐOÐOÐOr   c                ó  — t          j        t          j        ¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         d S )Nz&INSERT INTO dossier_review_assignmentsÚassigned_department_codeÚassigned_employee_idÚassigned_by_employee_idÚassignment_type)r   r   r   Úassign_dossier_review_findingr   r   r   s     r   ÚCtest_assign_dossier_review_finding_uses_runtime_assignment_contractz_PostgresSchemaContractTests.test_assign_dossier_review_finding_uses_runtime_assignment_contract1   sˆ   € õ Ô"¥>Ô#OÑPÔPˆà�ŠÐ>ÀÑGÔGÐGØ�ŠÐ0°&Ñ9Ô9Ð9Ø�ŠÐ,¨fÑ5Ô5Ð5Ø�ŠÐ/°Ñ8Ô8Ð8Ø×ÒÐ*¨FÑ3Ô3Ð3Ð3Ð3r   c                óZ  — t          j        t          j        ¦  «        }t          j        t          j        ¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         d S )Nz#INSERT INTO dossier_review_findingsÚsupplement_statusÚstatusÚresponsible_department_codeÚcurrent_assignment_id)r   r   r   Úcreate_dossier_review_findingr-   r   )r   r   Úassignment_sources      r   Ú>test_create_dossier_review_finding_uses_runtime_status_columnszZPostgresSchemaContractTests.test_create_dossier_review_finding_uses_runtime_status_columns<   sŸ   € ÝÔ"¥>Ô#OÑPÔPˆÝ#Ô-ÝÔ8ñ
ô 
Ðð 	�ŠÐ;¸VÑDÔDÐDØ�ŠÐ)¨6Ñ2Ô2Ð2Ø�Š�h Ñ'Ô'Ð'Ø�ŠÐ3°VÑ<Ô<Ð<Ø�ŠÐ-Ð/@ÑAÔAÐAÐAÐAr   c                ó  — t          d¦  «                             d¬¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d	|¦  «         |                      d
|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         d S )Nz docker/postgres/init/01_init.sqlúutf-8©Úencodingzmetadata JSONBzsession_metadata JSONBzevent_metadata JSONBzdossier_scope JSONBzBreview_session_id UUID NOT NULL REFERENCES dossier_review_sessionsÚ%chk_employee_work_log_sessions_statusz0'planned', 'in_progress', 'completed', 'blocked'Ú"chk_employee_work_log_actions_typez?'manual_update', 'ai_analysis', 'task_update', 'issue_recorded'zE'handover_note', 'progress_update', 'checklist_update', 'system_sync'Ú"chk_dossier_review_sessions_statusz7'draft', 'in_review', 'awaiting_assignment', 'assigned'z7'partially_resolved', 'resolved', 'closed', 'cancelled'Ú"chk_dossier_review_findings_statusz9'open', 'assigned', 'in_progress', 'pending_verification'z 'resolved', 'waived', 'rejected'Ú-chk_dossier_review_findings_supplement_statusz*'not_requested', 'requested', 'collecting'z''submitted', 'insufficient', 'accepted'Ú'chk_dossier_review_assignments_priorityz#'low', 'medium', 'high', 'critical'zcurrent_assignment_id UUID)r   Ú	read_textr   r   )r   Úinit_sqls     r   ÚDtest_bootstrap_sql_matches_runtime_contracts_for_wave_one_guardrailsz`PostgresSchemaContractTests.test_bootstrap_sql_matches_runtime_contracts_for_wave_one_guardrailsH   s.  € õ Ð:Ñ;Ô;×EÒEÈwÐEÑWÔWˆà�ŠÐ&¨Ñ1Ô1Ð1Ø×ÒÐ1°8Ñ<Ô<Ð<Ø×ÒÐ/°Ñ:Ô:Ð:Ø�ŠÐ+¨XÑ6Ô6Ð6Ø�ŠØPØñ	
ô 	
ð 	
ð 	�ŠÐ=¸xÑHÔHÐHØ�ŠÐHÈ(ÑSÔSÐSØ�ŠÐ:¸HÑEÔEÐEØ�ŠØMØñ	
ô 	
ð 	
ð 	�ŠØSØñ	
ô 	
ð 	
ð 	�ŠÐ:¸HÑEÔEÐEØ�ŠØEÀxñ	
ô 	
ð 	
ð 	�ŠØEÀxñ	
ô 	
ð 	
ð 	�ŠÐ:¸HÑEÔEÐEØ�ŠØGÈñ	
ô 	
ð 	
ð 	�ŠÐ8¸(ÑCÔCÐCØ�ŠÐEÀxÑPÔPÐPØ�ŠÐBÀHÑMÔMÐMØ�ŠÐ?ÀÑJÔJÐJØ�ŠÐ?ÀÑJÔJÐJØ�ŠÐ;¸XÑFÔFÐFØ�ŠÐ2°HÑ=Ô=Ð=Ð=Ð=r   c                óü   — t          d¦  «                             d¬¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         d S )Nz&db/migrations/0001_schema_baseline.sqlr8   r9   z,CREATE TABLE IF NOT EXISTS schema_migrationszversion VARCHAR(50) PRIMARY KEYz-applied_at TIMESTAMPTZ NOT NULL DEFAULT NOW()Ú0001_schema_baseline)r   rA   r   )r   Úmigration_sqls     r   Ú4test_migration_backbone_exists_for_schema_governancezPPostgresSchemaContractTests.test_migration_backbone_exists_for_schema_governances   s…   € ÝÐEÑFÔF×PÒPØð Qñ 
ô 
ˆð 	�ŠÐDÀmÑTÔTÐTØ�ŠÐ7¸ÑGÔGÐGØ�ŠÐEÀ}ÑUÔUÐUØ�ŠÐ,¨mÑ<Ô<Ð<Ð<Ð<r   c                ó~  — t          j        t          j        ¦  «        }t          j        t          j        ¦  «        }t          j        t          j        ¦  «        }t          j        t          j        ¦  «        }t          j        t          j        ¦  «        }t          j        t          j        ¦  «        }|  	                    d|¦  «         |  	                    d|¦  «         |  	                    d|¦  «         |  	                    d|¦  «         |  	                    d|¦  «         |  	                    d|¦  «         |  	                    d|¦  «         |  	                    d|¦  «         |  	                    d|¦  «         |  	                    d|¦  «         |  	                    d|¦  «         |  	                    d|¦  «         d S )Nz%_fetch_single_dossier_review_session(zconnection=connection)
r   r   r   r#   r4   r-   r    Úverify_dossier_review_findingÚclose_dossier_review_sessionr   )r   r%   Úfinding_sourceÚassign_sourceÚsubmit_sourceÚverify_sourceÚclose_sources          r   ÚNtest_transactional_review_writes_refetch_using_active_connection_when_providedzjPostgresSchemaContractTests.test_transactional_review_writes_refetch_using_active_connection_when_provided}   s  € õ  Ô)­.Ô*VÑWÔWˆÝ Ô*­>Ô+WÑXÔXˆÝÔ)­.Ô*VÑWÔWˆÝÔ)ÝÔ;ñ
ô 
ˆõ  Ô)­.Ô*VÑWÔWˆÝÔ(­Ô)TÑUÔUˆà�ŠÐ=¸}ÑMÔMÐMØ�ŠÐ-¨}Ñ=Ô=Ð=Ø�ŠÐ=¸~ÑNÔNÐNØ�ŠÐ-¨~Ñ>Ô>Ð>Ø�ŠÐ=¸}ÑMÔMÐMØ�ŠÐ-¨}Ñ=Ô=Ð=Ø�ŠÐ=¸}ÑMÔMÐMØ�ŠÐ-¨}Ñ=Ô=Ð=Ø�ŠÐ=¸}ÑMÔMÐMØ�ŠÐ-¨}Ñ=Ô=Ð=Ø�ŠÐ=¸|ÑLÔLÐLØ�ŠÐ-¨|Ñ<Ô<Ð<Ð<Ð<r   c                ó  — t          j        t          j        ¦  «        }t          j        t          j        ¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         d S )Nz/_fetch_dossier_review_sessions_with_connection(z7self.fetch_dossier_review_sessions(review_id=review_id)z"with connection.cursor() as cursor)r   r   r   Ú$_fetch_single_dossier_review_sessionÚ._fetch_dossier_review_sessions_with_connectionr   )r   Úhelper_sourceÚscoped_reader_sources      r   ÚGtest_fetch_single_dossier_review_session_uses_transaction_scoped_readerzcPostgresSchemaContractTests.test_fetch_single_dossier_review_session_uses_transaction_scoped_reader–   s‡   € õ  Ô)ÝÔ?ñ
ô 
ˆõ  'Ô0ÝÔIñ 
ô  
Ðð 	�ŠÐGÈÑWÔWÐWØ�ŠØEÀ}ñ	
ô 	
ð 	
ð 	�ŠÐ:Ð<PÑQÔQÐQÐQÐQr   c                ó   ‡— ddl m}m}  |¦   «         }t          j        t          ¦  «        } |¦   «         |_        ||j        j        j        _        g Šd	ˆfd„}t          j        ||¦  «        }|  	                    |d¦  «         |  	                    ‰|g¦  «         |j
                             ¦   «          |j                             ¦   «          d S )
Nr   ©r   Ú	MagicMockÚpassed_connectionÚobjectr	   Ústrc                ó2   •— ‰                      | ¦  «         dS )NÚok)Úappend)rZ   Úobserveds    €r   Ú	operationzoPostgresSchemaContractTests.test_run_in_transaction_commits_on_success_and_closes_connection.<locals>.operation¯   s   ø€ Ø�OŠOÐ-Ñ.Ô.Ð.Ø�4r   r^   )rZ   r[   r	   r\   )Úunittest.mockr   rY   r   Ú__new__Úget_connectionÚreturn_valueÚ	__enter__Úrun_in_transactionÚassertEqualÚcommitÚassert_called_once_withÚrollbackÚassert_not_called)r   r   rY   Ú
connectionÚclientra   Úresultr`   s          @r   Ú@test_run_in_transaction_commits_on_success_and_closes_connectionz\PostgresSchemaContractTests.test_run_in_transaction_commits_on_success_and_closes_connection¦   sê   ø€ Ø1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ø�T‘V”Vˆ
ÝÔ'­Ñ7Ô7ˆØ ) 	¡¤ˆÔØDNˆÔÔ*Ô4ÔAàˆð	ð 	ð 	ð 	ð 	ð 	õ  Ô2°6¸9ÑEÔEˆà×Ò˜ Ñ&Ô&Ð&Ø×Ò˜ J <Ñ0Ô0Ð0ØÔ×1Ò1Ñ3Ô3Ð3ØÔ×-Ò-Ñ/Ô/Ð/Ð/Ð/r   c                ó¢  — ddl m}m}  |¦   «         }t          j        t          ¦  «        } |¦   «         |_        ||j        j        j        _        d	d„}|                      t          d¦  «        5  t          j
        ||¦  «         d d d ¦  «         n# 1 swxY w Y   |j                             ¦   «          |j                             ¦   «          d S )
Nr   rX   Ú_r[   r	   r
   c                ó    — t          d¦  «        ‚)NÚboom)ÚRuntimeError)rr   s    r   ra   zrPostgresSchemaContractTests.test_run_in_transaction_rolls_back_on_failure_and_closes_connection.<locals>.operationÃ   s   € Ý˜vÑ&Ô&Ð&r   rt   )rr   r[   r	   r
   )rb   r   rY   r   rc   rd   re   rf   ÚassertRaisesRegexru   rg   ri   rl   rk   rj   )r   r   rY   rm   rn   ra   s         r   ÚCtest_run_in_transaction_rolls_back_on_failure_and_closes_connectionz_PostgresSchemaContractTests.test_run_in_transaction_rolls_back_on_failure_and_closes_connectionº   s-  € ð 	2Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ø�T‘V”Vˆ
ÝÔ'­Ñ7Ô7ˆØ ) 	¡¤ˆÔØDNˆÔÔ*Ô4ÔAð	'ð 	'ð 	'ð 	'ð ×#Ò#¥L°&Ñ9Ô9ð 	Að 	AÝÔ-¨f°iÑ@Ô@Ð@ð	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	Að 	Ô×+Ò+Ñ-Ô-Ð-ØÔ×3Ò3Ñ5Ô5Ð5Ð5Ð5s   Á0BÂBÂBN)r	   r
   )Ú__name__Ú
__module__Ú__qualname__r   r   r!   r'   r.   r6   rC   rG   rP   rV   rp   rw   © r   r   r   r      s  € € € € € ð5ð 5ð 5ð 5ð3ð 3ð 3ð 3ð3ð 3ð 3ð 3ðPð Pð Pð Pð	4ð 	4ð 	4ð 	4ð
Bð 
Bð 
Bð 
Bð)>ð )>ð )>ð )>ðV=ð =ð =ð =ð=ð =ð =ð =ð2Rð Rð Rð Rð 0ð 0ð 0ð 0ð(6ð 6ð 6ð 6ð 6ð 6r   r   Ú__main__)Ú
__future__r   ÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriteÚ
@pytest_arr   ÚunittestÚpathlibr   rb   r   Úapp.core.postgresr   ÚTestCaser   rx   Úmainr{   r   r   ú<module>r‰      sÕ   ðØ "Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € €€€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à ,Ð ,Ð ,Ð ,Ð ,Ð ,ð6ð 6ð 6ð 6ð 6 (Ô"3ñ 6ô 6ð 6ðD ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   