
    j                     V    d Z ddlZddlmc mZ ddlmZ ddl	Z	ddl
mZ  G d d      Zy)uD   Tests for app/utils/validators.py — 100% branch coverage required.    N)Decimal)validate_amountc                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)TestValidateAmountc           	         d}t        |      }d}t        |      }||k(  }|s&t        j                  d|fd||f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}x}}y )	N29.99==zP%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py10)s
{%(py10)s = %(py6)s(%(py8)s)
}r   r   py0py2py4py6py8py10assert %(py12)spy12
r   r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationself@py_assert1@py_assert3@py_assert7@py_assert9@py_assert5@py_format11@py_format13s           </var/www/html/financials/tests/test_utils/test_validators.pytest_string_decimalz&TestValidateAmount.test_string_decimal	   s    &;w';7;77+;;'+;;;;;'+;;;;;;;;;;;;;w;;;';;;;;;7;;;7;;;7;;;+;;;;;;;;;    c           	         d}t        |      }d}t        |      }||k(  }|s&t        j                  d|fd||f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}x}x}}y )
Nz$29.99r   r	   r   r   r   r   r   r   r   r   s           r'   test_string_with_dollar_signz/TestValidateAmount.test_string_with_dollar_sign   s    '<x(<G<GG,<<(,<<<<<(,<<<<<<<<<<<<<x<<<(<<<<<<G<<<G<<<G<<<,<<<<<<<<<r)   c           	         d}t        |      }d}t        |      }||k(  }|s&t        j                  d|fd||f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}x}x}}y )
Nz	$1,234.56z1234.56r	   r   r   r   r   r   r   r   r   s           r'   test_string_with_commaz)TestValidateAmount.test_string_with_comma   s    *A{+AyAwy/AA+/AAAAA+/AAAAAAAAAAAAA{AAA+AAAAAAwAAAwAAAyAAA/AAAAAAAAAr)   c           	         d}t        |      }d}t        |      }||k(  }|s&t        j                  d|fd||f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}x}x}}y )
N   z5.00r	   r   r   r   r   r   r   r   r   s           r'   test_integerzTestValidateAmount.test_integer   s     4q!4V4WV_4!_4444!_444444444444q444!444444W444W444V444_44444444r)   c                 :   t        d      }d}t        |      }||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |      rt        j                  |      nddt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}}y )
NgQ	@z3.14r	   )z0%(py0)s == %(py6)s
{%(py6)s = %(py2)s(%(py4)s)
}resultr   )r   r   r   r   zassert %(py8)sr   r   )r   r2   r!   r$   r    @py_format7@py_format9s          r'   
test_floatzTestValidateAmount.test_float   s     &!'((v((((v((((((v(((v((((((((((((((((((((((r)   c                 |   d}t        |      }t        |      }d}t        |      }||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                  t               rt        j                  t               ndt        j                  |      t        j                  |      t        j                  |      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}x}x}}y )	Nz9.99r	   )zo%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py1)s(%(py3)s)
})
} == %(py13)s
{%(py13)s = %(py9)s(%(py11)s)
}r   r   )r   py1py3py5py7py9py11py13zassert %(py15)spy15)
r   r   r   r   r   r   r   r   r   r   )	r   @py_assert2@py_assert4@py_assert6@py_assert10@py_assert12@py_assert8@py_format14@py_format16s	            r'   test_decimal_passthroughz+TestValidateAmount.test_decimal_passthrough   s    '-BwvB/B6B76?B/?BBBB/?BBBBBBBBBBBBBBBwBBBwBBBvBBBBBB/BBBBBB7BBB7BBB6BBB?BBBBBBBBr)   c           	         d}t        |      }d}t        |      }||k(  }|s&t        j                  d|fd||f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}x}x}}y )
Nz	  12.50  z12.50r	   r   r   r   r   r   r   r   r   s           r'   test_strips_whitespacez)TestValidateAmount.test_strips_whitespace   s    *?{+?w?ww/??+/?????+/?????????????{???+??????w???w???w???/?????????r)   c                 z    t        j                  t        d      5  t        d        d d d        y # 1 sw Y   y xY w)Npositive numbermatchpytestraises
ValueErrorr   r   s    r'   test_none_raisesz#TestValidateAmount.test_none_raises    s.    ]]:->? 	"D!	" 	" 	"   1:c                 z    t        j                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)NrK   rL    rN   rR   s    r'   test_empty_string_raisesz+TestValidateAmount.test_empty_string_raises$   s.    ]]:->? 	 B	  	  	 rT   c                 z    t        j                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)NrK   rL   z   rN   rR   s    r'   test_whitespace_only_raisesz.TestValidateAmount.test_whitespace_only_raises(   .    ]]:->? 	#E"	# 	# 	#rT   c                 z    t        j                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)NrK   rL   abcrN   rR   s    r'   test_non_numeric_raisesz*TestValidateAmount.test_non_numeric_raises,   rZ   rT   c                 z    t        j                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)NrK   rL   0rN   rR   s    r'   test_zero_raisesz#TestValidateAmount.test_zero_raises0   s.    ]]:->? 	!C 	! 	! 	!rT   c                 z    t        j                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)NrK   rL   z-5.00rN   rR   s    r'   test_negative_raisesz'TestValidateAmount.test_negative_raises4   s.    ]]:->? 	%G$	% 	% 	%rT   N)__name__
__module____qualname__r(   r+   r-   r0   r5   rG   rI   rS   rW   rY   r]   r`   rb    r)   r'   r   r      sF    <=B5)C@" ##!%r)   r   )__doc__builtinsr   _pytest.assertion.rewrite	assertionrewriter   decimalr   rO   app.utils.validatorsr   r   rf   r)   r'   <module>rn      s     J      0/% /%r)   