
    V2j
                     b    d dl Zd dlmc mZ d dlmZ d dlm	Z	 d dl
mZ d Zd Zd Zd Zd	 ZdS )
    N)date)
TestClient)appc                     | d         D ]9}|d         d         D ](}|d         dk    r|d         d         |d         fc c S ):t          d          )	Nchildrentasksopenkindrequiredchildidzno required task foundAssertionErrorpayloadr   tasks      D/home/agent/projects/FamilyDashboard/backend/tests/test_day_close.py_required_task_idr      s|    $ 8 8'N6* 	8 	8DF|z))W~d+T$Z777777 *	8 1
2
22    c                     | d         D ]9}|d         d         D ](}|d         dk    r|d         d         |d         fc c S ):t          d          )	Nr   r   r	   r
   bonusr   r   zno bonus task foundr   r   s      r   _bonus_task_idr      s|    $ 8 8'N6* 	8 	8DF|w&&W~d+T$Z777777 '	8 .
/
//r   c                     t          t                    5 } |                     d                                          }t	          |          \  }}|                     d| d                                          }|                     d           |                     d| d                                          }d d d            n# 1 swxY w Y   |d         }dddd}||k    }|slt          j        d|fd	||f          t          j        |          t          j        |          d
z  }	dd|	iz  }
t          t          j	        |
                    d x}x}}d |d         D             }t          |          }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        t                    rt          j        t                    nddt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }
dd|
iz  }t          t          j	        |                    d x}x}}|d         }|d         }||k    }|slt          j        d|fd	||f          t          j        |          t          j        |          d
z  }	dd|	iz  }
t          t          j	        |
                    d x}x}}d S )Nz/api/dashboard?date=2026-06-01/api/coins//ledgersummaryr   postedreserved	available==z%(py1)s == %(py4)spy1py4assert %(py6)spy6c                 *    g | ]}|d          dk    |S )transaction_typepenalty .0txs     r   
<listcomp>zCtest_past_open_required_task_books_penalty_once.<locals>.<listcomp>!   s)    cccrBT?UYb?b?b?b?b?br   transactions   z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slen	penaltiespy0r&   py3r)   assert %(py8)spy8)r   r   getjsonr   
@pytest_ar_call_reprcompare	_safereprr   _format_explanationr5   @py_builtinslocals_should_repr_global_name)client	dashboardchild_id_task_idfirst_ledgersecond_ledger@py_assert0@py_assert3@py_assert2@py_format5@py_format7r6   @py_assert5@py_assert4@py_format9s                  r   /test_past_open_required_task_books_penalty_oncerS      s   	C KFJJ?@@EEGG	.y99(zz"A"A"A"ABBGGII

3444

#B#B#B#BCCHHJJK K K K K K K K K K K K K K K 	"TQS&T&TT"&TTTTTTTTTTT"&TTTTTT"TTTT&TTTTTTTTTTTTTTTTTTTTTTTTTTTTccmN;cccIy>>Q>Q>Q33yy>Q#>|I'>>#'>>>>>>>>>>>#'>>>>>>#>>>>'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>s   B%CC
C
c                  
   t          t                    5 } |                     d                                          }t	          |          \  }}|                     d| d                                          d         }|                     d| dddi	          }|                     d| dddi	          }|                     d| d                                          }d d d            n# 1 swxY w Y   d
dd
d}||k    }	|	st          j        d|	fd||f          dt          j	                    v st          j
        |          rt          j        |          ndt          j        |          dz  }
dd|
iz  }t          t          j        |                    d x}	}|j        }	d}|	|k    }|st          j        d|fd|	|f          dt          j	                    v st          j
        |          rt          j        |          ndt          j        |	          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}	x}}d |                                d         D             }	t          |	          }|sddt          j	                    v st          j
        t                    rt          j        t                    ndt          j        |	          t          j        |          dz  }t          t          j        |                    d x}	}|                                d         }d}||u }|slt          j        d |fd!||f          t          j        |          t          j        |          d"z  }d#d$|iz  }t          t          j        |                    d x}x}}|d         }d%dd%d}||k    }|slt          j        d|fd&||f          t          j        |          t          j        |          d"z  }d#d$|iz  }t          t          j        |                    d x}x}}d' |d(         D             }t!          |          }d)}||k    }|st          j        d|fd*||f          d+t          j	                    v st          j
        t                     rt          j        t                     nd+d,t          j	                    v st          j
        |          rt          j        |          nd,t          j        |          t          j        |          d-z  }d.d/|iz  }t          t          j        |                    d x}x}}d S )0Nz/api/dashboard?date=2026-06-02r   r   r   z/api/tasks/z	/completeidempotency_keyzlate-required)r=   r   r   r   r"   )z%(py0)s == %(py3)sbefore)r8   r9   zassert %(py5)spy5   )z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)scomplete)r8   py2rW   zassert %(py7)spy7c              3   F   K   | ]}|d          dk    o|d         dk    V  dS )r+   penalty_reversalamount   Nr-   r.   s     r   	<genexpr>zFtest_late_required_completion_reverses_penalty_once.<locals>.<genexpr>1   sV        B  BVXr$%);;Q8PQ@Q  B  B  B  B  B  Br   coin_transactions,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}anyr8   rZ   r'   
idempotentT)is)z%(py1)s is %(py4)sr%   r(   r)   r$   c                 *    g | ]}|d          dk    |S )r+   r]   r-   r.   s     r   r1   zGtest_late_required_completion_reverses_penalty_once.<locals>.<listcomp>4   s)    eee;M8NRd8d8d8d8d8dr   r2   r_   r4   r5   	reversalsr7   r:   r;   )r   r   r<   r=   r   postr>   r?   rB   rC   rD   r@   r   rA   status_coderc   r5   )rE   rF   rG   task_idrV   rY   secondledgerrM   @py_assert1@py_format4@py_format6rQ   rL   @py_format8rN   rK   rO   ri   rP   rR   s                        r   3test_late_required_completion_reverses_penalty_oncers   &   s   	C DFJJ?@@EEGG	-i88';(;;;<<AACCIN;;?W???GXZiFj;kk=7===EVXgDhii;(;;;<<AACCD D D D D D D D D D D D D D D !#CCC6CCCCCCCCCCC6CCCCCCCCCCCCC6CCCCC6CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC&3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&& B  B\d\i\i\k\kl  ]A  B  B  B  B3  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B3  B  B  B  B  B3  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B  B;;==&.$.&$..........&$.....&....$...........................)N212 N NN NNNNNNNNNNN NNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNeef^4eeeIy>>Q>Q>Q33yy>Qs   CC11C58C5c                     t          t                    5 } |                     d                                          }t	          |          \  }|                     d| d                                          }d d d            n# 1 swxY w Y   fd|d         D             }t          |          }|sddt          j                    v st          j	        t
                    rt          j
        t
                    ndt          j
        |          t          j
        |          dz  }t          t          j        |                    d x}}d S )	Nz/api/dashboard?date=2026-06-03r   r   c              3   0   K   | ]}|d          k    V  dS )task_instance_idNr-   )r/   r0   rH   s     r   r`   zDtest_bonus_tasks_do_not_receive_day_close_penalty.<locals>.<genexpr>>   s.      SSbr$%1SSSSSSr   r2   rb   allrd   )r   r   r<   r=   r   rw   rB   rC   r>   rD   r@   r   rA   )rE   rF   rG   rn   ro   rL   rN   rH   s          @r   1test_bonus_tasks_do_not_receive_day_close_penaltyrx   8   s   	C DFJJ?@@EEGG	+I66(;(;;;<<AACCD D D D D D D D D D D D D D D
 TSSSF><RSSSS3SSSSSSSSSSSSSSSS3SSSSS3SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSs   A%BBB)builtinsrB   _pytest.assertion.rewrite	assertionrewriter>   datetimer   fastapi.testclientr   app.mainr   r   r   rS   rs   rx   r-   r   r   <module>r      s                        ) ) ) ) ) )      3 3 30 0 0? ? ?  $T T T T Tr   