
    jx                         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 ddlmZ  G d d      Z G d d	      Z G d
 d      Z G d d      Zy)u2   
Settings — monthly income tests — Story 4.1.
    N)Decimal)db)Settingsc                   $    e Zd Zd Zd Zd Zd Zy)TestIncomeGetc                    |j                  d      }|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}}y 	N/settings/income   ==z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sresponsepy0py2py5assert %(py7)spy7
getstatus_code
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation	selfclientr   r   @py_assert1@py_assert4@py_assert3@py_format6@py_format8s	            F/var/www/html/financials/tests/test_blueprints/test_settings_income.pytest_returns_200zTestIncomeGet.test_returns_200   s    ::01##*s*#s****#s******x***x***#***s*******    c                    |j                  d      }g }d}|j                  }||v }|}|sd}	|j                  }
|	|
v }|}|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd	|iz  }|j                  |       |st        j                  dfd
	
f      t        j                  |	      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |
      dz  }dd|iz  }|j                  |       t        j                  |d      i z  }dd|iz  }t        t        j                  |            d x}x}x}x}x}x}	x}}
y )Nr
   s   monthly_incomes   Incomein)z,%(py3)s in %(py7)s
{%(py7)s = %(py5)s.data
}r   )py3r   r   z%(py9)spy9)z0%(py12)s in %(py16)s
{%(py16)s = %(py14)s.data
})py12py14py16z%(py18)spy18   zassert %(py21)spy21)r   datar   r   r   r   r   r   append_format_boolopr   r    )r"   r#   r   r   r$   @py_assert2@py_assert6r%   @py_assert0@py_assert11@py_assert15@py_assert13r(   @py_format10@py_format17@py_format19@py_format20@py_format22s                     r)   test_shows_income_formz$TestIncomeGet.test_shows_income_form   s   ::01O OHMMO M1OYO(--OY-5OOOOO MOOO OOOOOOHOOOHOOOMOOOOOOOY-OOOYOOOOOO(OOO(OOO-OOOOOOOOOOOOOOr+   c                    |j                  d      }|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}}y r	   r   r!   s	            r)   test_shows_blank_when_not_setz+TestIncomeGet.test_shows_blank_when_not_set   s    ::01##*s*#s****#s******x***x***#***s*******r+   c                 Z   t        dt        d            }t        j                  j	                  |       t        j                  j                          |j                  d      }d}|j                  }||v }|st        j                  d|fd||f      t        j                  |      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}x}}y )Nr5   z4500.00idmonthly_incomer
   s   4500r-   z,%(py1)s in %(py5)s
{%(py5)s = %(py3)s.data
}r   py1r/   r   r   r   r   r   _dbsessionaddcommitr   r7   r   r   r   r   r   r   r   r    
r"   r#   r   sr   r<   r%   r:   r'   r(   s
             r)   $test_shows_existing_income_prefilledz2TestIncomeGet.test_shows_existing_income_prefilled   s    ')*<=::01'(--'w-''''w-'''w''''''('''('''-'''''''r+   N)__name__
__module____qualname__r*   rE   rG   rV    r+   r)   r   r      s    +P+
(r+   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestIncomePostValidc                    |j                  dddid      }|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}}y )Nr
   rK   5000.00Fr7   follow_redirects.  r   r   r   r   r   r   
postr   r   r   r   r   r   r   r   r    r!   s	            r)   test_valid_post_redirectsz-TestIncomePostValid.test_valid_post_redirects'   s    ;;1%5y$A05  7 ##*s*#s****#s******x***x***#***s*******r+   c                 B   |j                  dddid      }d}|j                  d   }||v }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            d x}x}}y )Nr
   rK   r^   Fr_   Locationr-   )z%(py1)s in %(py4)s)rN   py4zassert %(py6)spy6)rc   headersr   r   r   r   r    )	r"   r#   r   r   r<   r&   r:   @py_format5@py_format7s	            r)   #test_redirect_target_is_income_pagez7TestIncomePostValid.test_redirect_target_is_income_page-   s    ;;1%5y$A05  7 "AX%5%5j%AA!%AAAAA!%AAAA!AAA%AAAAAAAAr+   c                    |j                  dddi       t        j                  j                         }d }||u}|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}t        |      }	||	k(  }
|
s
t	        j
                  d|
fd||	f      dt        j                         v st	        j                  |      rt	        j                  |      nd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}}	y )Nr
   rK   r^   r7   )is not)z%(py0)s is not %(py3)srU   )r   r/   zassert %(py5)sr   r   zT%(py2)s
{%(py2)s = %(py0)s.monthly_income
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r   r   r   rg   rh   py8assert %(py10)spy10)rc   r   queryfirstr   r   r   r   r   r   r   r    rK   r   )r"   r#   r   rU   r:   r$   @py_format4r'   @py_assert5@py_assert7r&   @py_format9@py_format11s                r)   test_valid_post_saves_valuez/TestIncomePostValid.test_valid_post_saves_value3   s,   &.>	-JKNN  "q}qqq59579#55#55555#5555555q555q555555555755575559555#55555555r+   c                 <   |j                  dddid      }d}|j                  }|j                  } |       }||v }|st        j                  d|fd||f      t        j
                  |      d	t        j                         v st        j                  |      rt        j
                  |      nd	t        j
                  |      t        j
                  |      t        j
                  |      d
z  }	dd|	iz  }
t        t        j                  |
            d x}x}x}x}}y )Nr
   rK   r^   Tr_   s   updatedr-   )z^%(py1)s in %(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.data
}.lower
}()
}r   )rN   r/   r   r   r0   assert %(py11)spy11)rc   r7   lowerr   r   r   r   r   r   r   r    )r"   r#   r   r   r<   r%   r;   @py_assert8r:   r@   @py_format12s              r)   test_valid_post_flashes_successz3TestIncomePostValid.test_valid_post_flashes_success9   s    ;;1%5y$A04  6 2X]]2]002022z22222z2222z222222X222X222]2220222222222222r+   c                    t        dt        d            }t        j                  j	                  |       t        j                  j                          |j                  dddi       t         j                  }|j                  } |       }d}||k(  }|st        j                  d|fd	||f      d
t        j                         v st        j                  t               rt        j                  t               nd
t        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }	dd|	iz  }
t        t        j                   |
            d x}x}x}x}}t        j                  j#                  |       |j$                  }d}t        |      }||k(  }|s
t        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      nd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}}y )Nr5   z3000.00rI   r
   rK   z4000.00rn   r   )z_%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.query
}.count
}()
} == %(py9)sr   r   r   rg   rh   r0   r~   r   rp   rU   r   rq   rs   rt   )r   r   rP   rQ   rR   rS   rc   ru   countr   r   r   r   r   r   r   r    refreshrK   )r"   r#   r   rU   r$   r&   rx   r   ry   r@   r   rz   r{   s                r)   )test_updates_existing_row_not_creates_newz=TestIncomePostValid.test_updates_existing_row_not_creates_new?   s   ')*<=&.>	-JK~~*~##*#%**%****%******x***x***~***#***%**********A59579#55#55555#5555555q555q555555555755575559555#55555555r+   c                 b   |j                  dddid      }|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}}t        j                  j                         }	|	j                  }d}
t        |
      }||k(  }|s
t        j                  d|fd||f      dt	        j
                         v st        j                  |	      rt        j                  |	      nd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}
}y )Nr
   rK   0Fr_   ra   r   r   r   r   r   r   rp   rU   r   rq   rs   rt   )rc   r   r   r   r   r   r   r   r   r    r   ru   rv   rK   r   )r"   r#   r   r   r$   r%   r&   r'   r(   rU   rx   ry   rz   r{   s                 r)   test_zero_income_acceptedz-TestIncomePostValid.test_zero_income_acceptedH   sN   ;;1%5s$;05  7 ##*s*#s****#s******x***x***#***s*******NN  "/3/73</<////<//////q///q/////////7///7///3///<///////r+   c                    |j                  dddi       t        j                  j                         }|j                  }d}t        |      }||k(  }|s
t        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      nd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}}y )Nr
   rK   z4567.89rn   r   rp   rU   r   rq   rs   rt   )rc   r   ru   rv   rK   r   r   r   r   r   r   r   r   r    )
r"   r#   r   rU   r$   rx   ry   r&   rz   r{   s
             r)   test_decimal_precision_storedz1TestIncomePostValid.test_decimal_precision_storedP   s    &.>	-JKNN  "59579#55#55555#5555555q555q555555555755575559555#55555555r+   N)
rW   rX   rY   rd   rl   r|   r   r   r   r   rZ   r+   r)   r\   r\   &   s&    +B63606r+   r\   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestIncomePostInvalidc                    |j                  dddi      }|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}}y )Nr
   rK   znot-a-numberrn   r   r   r   r   r   r   r   rb   r!   s	            r)   test_non_numeric_rerenders_formz5TestIncomePostInvalid.test_non_numeric_rerenders_formY   s    ;;1%5~$F  H##*s*#s****#s******x***x***#***s*******r+   c                    |j                  dddi      }g }d}|j                  }|j                  } |       }||v }	|	}
|	sPd}|j                  }|j                  } |       }||v }|}
|s'd}|j                  }|j                  } |       }||v }|}
|
st        j                  d|	fd	||f      t        j
                  |      d
t        j                         v st        j                  |      rt        j
                  |      nd
t        j
                  |      t        j
                  |      t        j
                  |      dz  }dd|iz  }|j                  |       |	st        j                  dfdf      t        j
                  |      d
t        j                         v st        j                  |      rt        j
                  |      nd
t        j
                        t        j
                        t        j
                  |      dz  }dd|iz  }|j                  |       |st        j                  dfdf      t        j
                  |      d
t        j                         v st        j                  |      rt        j
                  |      nd
t        j
                        t        j
                        t        j
                  |      dz  }dd|iz  }|j                  |       t        j                  |d      i z  }dd|iz  }t        t        j                  |            d x}
x}x}x}	x}x}x}x}x}x}x}x}x}x}x}x}}y )Nr
   rK   abcrn   s   valids   numerics   numberr-   z`%(py3)s in %(py11)s
{%(py11)s = %(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py5)s.data
}.lower
}()
}r   r/   r   r   r0   r   %(py13)spy13zf%(py16)s in %(py24)s
{%(py24)s = %(py22)s
{%(py22)s = %(py20)s
{%(py20)s = %(py18)s.data
}.lower
}()
}r3   r4   py20py22py24%(py26)spy26)zf%(py29)s in %(py37)s
{%(py37)s = %(py35)s
{%(py35)s = %(py33)s
{%(py33)s = %(py31)s.data
}.lower
}()
})py29py31py33py35py37z%(py39)spy39r5   zassert %(py42)spy42rc   r7   r   r   r   r   r   r   r   r8   r9   r   r    )r"   r#   r   r   r$   r:   r;   r   @py_assert10r%   r<   r>   @py_assert19@py_assert21@py_assert23@py_assert17@py_assert28@py_assert32@py_assert34@py_assert36@py_assert30r   @py_format14@py_format25@py_format27@py_format38@py_format40@py_format41@py_format43s                                r)   test_non_numeric_shows_errorz2TestIncomePostInvalid.test_non_numeric_shows_error^   s   ;;1%5u$=  ?}x}8==}=..}.0}x00}J}(--}-BUBU}BUBW}JBW4W}[d}hphuhu}huh{h{}h{h}}[dh}[}}}}}x0}}}x}}}}}}8}}}8}}}=}}}.}}}0}}}}}}}JBW}}}J}}}}}}(}}}(}}}-}}}BU}}}BW}}}}}}}[dh}}}}[d}}}}}}hp}}}hp}}}hu}}}h{}}}h}}}}}}}}}}}}}}}}}}r+   c                    |j                  dddi      }|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}}y )Nr
   rK   -100rn   r   r   r   r   r   r   r   rb   r!   s	            r)   test_negative_value_rejectedz2TestIncomePostInvalid.test_negative_value_rejectedc   s    ;;1%5v$>  @##*s*#s****#s******x***x***#***s*******r+   c                    |j                  dddi      }g }d}|j                  }|j                  } |       }||v }	|	}
|	s'd}|j                  }|j                  } |       }||v }|}
|
st        j                  d|	fd||f      t        j
                  |      d	t        j                         v st        j                  |      rt        j
                  |      nd	t        j
                  |      t        j
                  |      t        j
                  |      d
z  }dd|iz  }|j                  |       |	st        j                  dfdf      t        j
                  |      d	t        j                         v st        j                  |      rt        j
                  |      nd	t        j
                        t        j
                        t        j
                  |      dz  }dd|iz  }|j                  |       t        j                  |d      i z  }dd|iz  }t        t        j                  |            d x}
x}x}x}	x}x}x}x}x}x}x}}y )Nr
   rK   r   rn   s   zero or greaters   negativer-   r   r   r   r   r   r   r   r   r   r5   zassert %(py29)sr   r   )r"   r#   r   r   r$   r:   r;   r   r   r%   r<   r>   r   r   r   r   r   r   r   r   @py_format28@py_format30s                         r)   test_negative_value_shows_errorz5TestIncomePostInvalid.test_negative_value_shows_errorh   sq   ;;1%5v$>  @b!bX]]b]%8%8b%8%:b!%::bkbX]]b]M`M`bM`MbbkMb>bbbbb!%:bbb!bbbbbbXbbbXbbb]bbb%8bbb%:bbbbbbbkMbbbbkbbbbbbXbbbXbbb]bbbM`bbbMbbbbbbbbbbbbbbbbr+   c                 R   |j                  dddi       t        j                  }|j                  } |       }d }||u }|st	        j
                  d|fd||f      dt        j                         v st	        j                  t              rt	        j                  t              ndt	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |      dz  }d	d
|iz  }	t        t	        j                  |	            d x}x}x}x}}y )Nr
   rK   r   rn   )is)z_%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.query
}.first
}()
} is %(py9)sr   r   r~   r   )rc   r   ru   rv   r   r   r   r   r   r   r   r    )
r"   r#   r   r$   r&   rx   r   ry   r@   r   s
             r)   test_negative_does_not_savez1TestIncomePostInvalid.test_negative_does_not_savem   s    &.>-GH~~-~##-#%--%----%------x---x---~---#---%-----------r+   c                    |j                  dddi      }|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}}y )Nr
   rK    rn   r   r   r   r   r   r   r   rb   r!   s	            r)    test_empty_string_rerenders_formz6TestIncomePostInvalid.test_empty_string_rerenders_formq   s    ;;19I28N;O##*s*#s****#s******x***x***#***s*******r+   N)	rW   rX   rY   r   r   r   r   r   r   rZ   r+   r)   r   r   X   s"    +
~
+
c
.+r+   r   c                       e Zd Zd Zd Zd Zy)TestSettingsIndexc                    |j                  d      }d}|j                  }||v }|st        j                  d|fd||f      t        j                  |      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}x}}y )	N
/settings/s   /settings/incomer-   rL   r   rM   r   r   )
r   r7   r   r   r   r   r   r   r   r    )	r"   r#   r   r   r<   r%   r:   r'   r(   s	            r)   test_index_shows_income_linkz.TestSettingsIndex.test_index_shows_income_linky   s    ::l+"3hmm3"m3333"m333"333333h333h333m3333333r+   c                 Z   t        dt        d            }t        j                  j	                  |       t        j                  j                          |j                  d      }d}|j                  }||v }|st        j                  d|fd||f      t        j                  |      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}x}}y )Nr5   z6000.00rI   r   s   6000r-   rL   r   rM   r   r   rO   rT   s
             r)   (test_index_shows_current_income_when_setz:TestSettingsIndex.test_index_shows_current_income_when_set}   s    ')*<=::l+'(--'w-''''w-'''w''''''('''('''-'''''''r+   c                 "   |j                  d      }g }d}|j                  }|j                  } |       }||v }	|	}
|	sd}|j                  }||v }|}
|
st        j                  d|	fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      ndt        j
                  |      t        j
                  |      t        j
                  |      dz  }dd	|iz  }|j                  |       |	st        j                  dfd
f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      ndt        j
                  |      dz  }dd|iz  }|j                  |       t        j                  |d      i z  }dd|iz  }t        t        j                  |            d x}
x}x}x}	x}x}x}x}x}}y )Nr   s   not sets   Not setr-   r   r   r   r   r   )z0%(py16)s in %(py20)s
{%(py20)s = %(py18)s.data
})r3   r4   r   z%(py22)sr   r5   zassert %(py25)spy25)r   r7   r   r   r   r   r   r   r   r8   r9   r   r    )r"   r#   r   r   r$   r:   r;   r   r   r%   r<   r>   r   r   r   r   @py_format21@py_format23@py_format24@py_format26s                       r)   'test_index_shows_not_set_when_no_incomez9TestSettingsIndex.test_index_shows_not_set_when_no_income   s.   ::l+QzQX]]Q]00Q02Qz22QjQHMMQjM6QQQQQz2QQQzQQQQQQXQQQXQQQ]QQQ0QQQ2QQQQQQQjMQQQjQQQQQQHQQQHQQQMQQQQQQQQQQQQQQQr+   N)rW   rX   rY   r   r   r   rZ   r+   r)   r   r   x   s    4(Rr+   r   )__doc__builtinsr   _pytest.assertion.rewrite	assertionrewriter   decimalr   pytestapp.extensionsr   rP   app.models.settingsr   r   r\   r   r   rZ   r+   r)   <module>r      sI        $ (
( (0-6 -6d+ +@R Rr+   