
    i                         S r SSKrSSKJs  Jr  SSKrSSKrSSK	J
r
Jr  SSKJr  SSKJr  S rS\4S jr\R&                  " S	S
9S 5       r\R&                  S 5       rg)z Test configuration and fixtures.    N)create_enginetext)Session)Basec                  D    [         R                  R                  SS5        g )NDATABASE_URLzsqlite+pysqlite:///:memory:)osenviron
setdefault     3/root/tipsharks/tipsharks-elo-api/tests/conftest.pypytest_configurer      s    JJ.*GHr   returnc                  B    [         R                  R                  SS5      $ )z2Return the test database URL from env or fallback.TEST_DATABASE_URLzFpostgresql+psycopg://tipsharks:tipsharks@localhost:5432/tipsharks_test)r	   r
   getr   r   r   _get_test_db_urlr      s    ::>>P r   session)scopec               #     #    [        5       n [        U SS9n[        R                  R	                  U5        Uv   UR                  5        nUR                  [        S5      5        UR                  5         SSS5        [        R                  R                  U5        UR                  5         g! , (       d  f       N>= f7f)zCreate the test PostgreSQL engine and all tables once per session.

Tables are created at session start and dropped at session end.
T)pool_pre_pingz7DROP MATERIALIZED VIEW IF EXISTS latest_ratings CASCADEN)r   r   r   metadata
create_allconnectexecuter   commitdrop_alldispose)test_urlengineconns      r   	db_enginer#      s       !H848FMMV$
L 
	TTSTU 
 	MM6"
NN	 
	s   AB>
+B-58B>-
B;7B>c              #      #    U R                  5       nUR                  5       n[        US9nUv   UR                  5         UR	                  5         UR                  5         g7f)zYield a database session rolled back after each test.

Each test gets a clean transaction that is rolled back on teardown,
providing isolation between tests.
)bindN)r   beginr   closerollback)r#   
connectiontransactionr   s       r   
db_sessionr+   .   sS      ""$J""$K:&G
MMMOs   AA!)__doc__builtins@py_builtins_pytest.assertion.rewrite	assertionrewrite
@pytest_arr	   pytest
sqlalchemyr   r   sqlalchemy.ormr   packages.core.storage.modelsr   r   strr   fixturer#   r+   r   r   r   <module>r9      sb    &   	  * " -I#  i  !$  r   