
    ju"                         d Z ddlZddlmc mZ ddlmZ ddl	m
Z
 ddlZddlmZ ddlmZ ddlmZ ddlmZ dd	Zdd
ZddZ G d d      Z G d d      Z G d d      Zy)u2   50/30/20 budget recommendation page — Story 4.3.    N)Decimal)date)db)Budget)Category)Settingsc                     t        dt        |             }t        j                  j	                  |       t        j                  j                          |S )N   )idmonthly_income)r   r   _dbsessionaddcommit)amountss     H/var/www/html/financials/tests/test_blueprints/test_budgets_recommend.py_set_incomer      s7    Agfo6AKKOOAKKH    c                     t        | |d      }t        j                  j                  |       t        j                  j	                          |S )NT)name	is_system	is_active)r   r   r   r   r   )r   r   cats      r   _make_categoryr      s5    
	T
BCKKOOCKKJr   c                 2    t        d       t        d      }|S )zFCreate a Housing category + set income so the form has a usable input.5000Housing)r   r   )amount_eachhousings     r   _seed_needsr!      s    Y'GNr   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestRecommendGetc           	      X   t                |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                  |      t        j                  |      t        j                  |      t        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            d x}x}x}x}x}}y 	N/budgets/recommend   ==)zk%(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s)
}.status_code
} == %(py11)sclient)py0py2py4py6py8py11zassert %(py13)spy13)r   getstatus_code
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationselfr*   r   @py_assert1@py_assert3@py_assert5@py_assert7@py_assert10@py_assert9@py_format12@py_format14s              r   test_returns_200_with_incomez-TestRecommendGet.test_returns_200_with_income%   s    zzB.Bz./B/;;BsB;sBBBB;sBBBBBBvBBBvBBBzBBB.BBB/BBB;BBBsBBBBBBBBr   c           	      D   |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                  |      t        j                  |      t        j                  |      t        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            d x}x}x}x}x}}y r%   )
r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   s              r   test_returns_200_without_incomez0TestRecommendGet.test_returns_200_without_income)   s    zzB.Bz./B/;;BsB;sBBBB;sBBBBBBvBBBvBBBzBBB.BBB/BBB;BBBsBBBBBBBBr   c                    |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 )	Nr&   s   /settings/incomeinz,%(py1)s in %(py5)s
{%(py5)s = %(py3)s.data
}responsepy1py3py5assert %(py7)spy7
r2   datar4   r5   r9   r6   r7   r8   r:   r;   	r=   r*   r   rM   @py_assert0@py_assert4@py_assert2@py_format6@py_format8s	            r   "test_no_income_shows_settings_linkz3TestRecommendGet.test_no_income_shows_settings_link,   s    ::23"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                    |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 )	Nr&      Apply)not in)z0%(py1)s not in %(py5)s
{%(py5)s = %(py3)s.data
}rM   rN   rR   rS   rT   rV   s	            r   !test_no_income_hides_apply_buttonz2TestRecommendGet.test_no_income_hides_apply_button0   s~    ::23,x}},x},,,,x},,,x,,,,,,x,,,x,,,},,,,,,,r   c                    t                |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 )	Nr&   r^   rJ   rL   rM   rN   rR   rS   r   r2   rU   r4   r5   r9   r6   r7   r8   r:   r;   rV   s	            r   #test_with_income_shows_apply_buttonz4TestRecommendGet.test_with_income_shows_apply_button4   s    ::23(8==(x=((((x=(((x((((((8(((8(((=(((((((r   c                    t                t        d       |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 )
Nr   r&   s   HousingrJ   rL   rM   rN   rR   rS   r   r   r2   rU   r4   r5   r9   r6   r7   r8   r:   r;   rV   s	            r   !test_shows_matched_category_namesz2TestRecommendGet.test_shows_matched_category_names9   s    y!::23*X]]*z]****z]***z******X***X***]*******r   c                    t        d       t        d       |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6000r   r&   s   500rJ   rL   rM   rN   rR   rS   re   rV   s	            r   test_shows_suggested_amountsz-TestRecommendGet.test_shows_suggested_amounts?   s    Fy!::23&&v&&&&v&&&v&&&&&&&&&&&&&&&&&&&r   c                 8   t        d       |j                  d      }g }d}|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                  |      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}}y )N1000r&   s   200s   savingsrJ   )z,%(py3)s in %(py7)s
{%(py7)s = %(py5)s.data
}rM   )rP   rQ   rS   z%(py9)spy9)zf%(py12)s in %(py20)s
{%(py20)s = %(py18)s
{%(py18)s = %(py16)s
{%(py16)s = %(py14)s.data
}.lower
}()
})py12py14py16py18py20z%(py22)spy22r
   zassert %(py25)spy25)r   r2   rU   lowerr4   r5   r9   r6   r7   r8   append_format_boolopr:   r;   )r=   r*   r   rM   r>   rY   @py_assert6rX   rW   @py_assert11@py_assert15@py_assert17@py_assert19@py_assert13r[   @py_format10@py_format21@py_format23@py_format24@py_format26s                       r   test_shows_savings_infoz(TestRecommendGet.test_shows_savings_infoF   s7   F::23MvMMv&M*MM8K8KM8K8MM*8M*MMMMMvMMMvMMMMMMMMMMMMMMMMMMM*8MMMM*MMMMMMMMMMMMMMM8KMMM8MMMMMMMMMMMMMMMMr   c                    t                |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 )	Nr&   s   budgetsrJ   rL   rM   rN   rR   rS   rb   rV   s	            r   test_active_page_is_budgetsz,TestRecommendGet.test_active_page_is_budgetsL   s    ::23*X]]*z]****z]***z******X***X***]*******r   N)__name__
__module____qualname__rF   rH   r\   r`   rc   rf   ri   r   r    r   r   r#   r#   $   s2    CC4-)
+'N+r   r#   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestRecommendPostValidc                    t        d       t        d      }|j                  dd|j                   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   r   r&   amount_500FrU   follow_redirects.  r(   z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)srM   r+   r,   rQ   rR   rS   r   r   postr   r3   r4   r5   r6   r7   r8   r9   r:   r;   )
r=   r*   r   r    rM   r>   rX   r?   rZ   r[   s
             r   test_valid_post_redirectsz0TestRecommendPostValid.test_valid_post_redirectsV   s    F +;; GJJ<(%0"  

 ##*s*#s****#s******x***x***#***s*******r   c                    t        d       t        d      }|j                  dd|j                   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   r   r&   r   r   Fr   z/budgetsLocationrJ   )z%(py1)s in %(py4)s)rO   r-   zassert %(py6)sr.   )
r   r   r   r   headersr4   r5   r9   r:   r;   )
r=   r*   r   r    rM   rW   r?   rY   @py_format5@py_format7s
             r   test_redirect_target_is_budgetsz6TestRecommendPostValid.test_redirect_target_is_budgets`   s    F +;; GJJ<(%0"  

 9X--j99z99999z9999z99999999999r   c                    t        d       t        d      }|j                  dd|j                   did      }|j                  j                         }g }d}||v }|}	|sd	}
|
|v }|}	|sd
}||v }|}	|	st        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }|j                  |       |st        j                  dfd
|f      t        j                  |
      dt        j                         v st        j                  |      rt        j                  |      nd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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   r   r&   r   r   Tr   s   applieds   saveds   successrJ   z%(py3)s in %(py5)slowrP   rQ   %(py7)srS   z%(py10)s in %(py12)spy10rm   %(py14)srn   z%(py17)s in %(py19)spy17py19%(py21)spy21r
   assert %(py24)spy24r   r   r   r   rU   rt   r4   r5   r9   r6   r7   r8   ru   rv   r:   r;   )r=   r*   r   r    rM   r   r>   rY   rX   rW   rC   rx   @py_assert16@py_assert18rZ   r[   @py_format13@py_format15@py_format20@py_format22r   @py_format25s                         r   test_valid_post_flashes_successz6TestRecommendPostValid.test_valid_post_flashes_successj   sp   F +;; GJJ<(%0!  

 mm!!#HzHzS HHHHOHzHzS7HHHHHzSHHHzHHHHHHSHHHSHHHHHHHHHHHHHHHHHHHHHHHHHHHHHzSHHHzHHHHHHSHHHSHHHHHHHHHHHHHHHr   c                    t        d       t        d      }t        j                         }|j	                  dd|j
                   di       t        j                  j                  |j
                  |j                  |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   r   r&   r   r   rU   )category_idmonthyear)is not)z%(py0)s is not %(py3)sb)r+   rP   zassert %(py5)srQ   500.00r(   zL%(py2)s
{%(py2)s = %(py0)s.amount
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r   r+   r,   r-   r.   r/   assert %(py10)sr   )r   r   r   todayr   r   r   query	filter_byr   r   firstr4   r5   r6   r7   r8   r9   r:   r;   r   r   )r=   r*   r   r    r   r   rY   r>   @py_format4rZ   r@   rA   r?   @py_format9@py_format11s                  r   test_saves_budget_recordz/TestRecommendPostValid.test_saves_budget_recordu   st   F +

(''**0F/NOLL""

%++EJJ # 

%' 	
 q}qqqxx,8,78,,x,,,,,x,,,,,,,q,,,q,,,x,,,,,,7,,,7,,,8,,,,,,,,,,,r   c                    t        d       t        d      }t        d      }t        j                         }|j	                  dd|j
                   dd|j
                   di       t        j                  }|j                  }|j                  }|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"                  |      dt        j                         v st        j                   |      rt        j"                  |      ndt        j"                  |      dt        j                         v st        j                   |      rt        j"                  |      ndt        j"                  |	      t        j"                  |
      t        j"                  |      t        j"                  |      t        j"                  |      dz  }dd|iz  }t%        t        j&                  |            d x}x}x}x}	x}
x}x}x}}y )Nr   r   Diningr&   r   400200r   )r   r      r(   )z%(py16)s
{%(py16)s = %(py14)s
{%(py14)s = %(py12)s
{%(py12)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.query
}.filter_by
}(month=%(py7)s
{%(py7)s = %(py5)s.month
}, year=%(py10)s
{%(py10)s = %(py8)s.year
})
}.count
}()
} == %(py19)sr   r   )r+   r,   r-   rQ   rS   r/   r   rm   rn   ro   r   zassert %(py21)sr   )r   r   r   r   r   r   r   r   r   r   r   countr4   r5   r6   r7   r8   r9   r:   r;   )r=   r*   r   r    diningr   r>   r?   rw   rC   rx   r|   ry   r   rz   r   r   s                    r   test_saves_multiple_categoriesz5TestRecommendPostValid.test_saves_multiple_categories   s   F +)

 GJJ<(%7699+1FN 	 	
 ||V|%%VEKKVejjV%KjIVIOOVOQVUVVQUVVVVVQUVVVVVVVvVVVvVVV|VVV%VVVVVVEVVVEVVVKVVVVVVeVVVeVVVjVVVIVVVOVVVQVVVUVVVVVVVVVVr   c                    t        d       t        d      }|j                  dd|j                   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}}y )Nr   r   r&   r    r   r   r(   z_%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.query
}.count
}()
} == %(py9)sr   r+   r,   r-   r.   rl   assert %(py11)sr0   r   r   r   r   r   r   r   r4   r5   r6   r7   r8   r9   r:   r;   r=   r*   r   r    r>   r?   r@   @py_assert8rA   r}   rD   s              r   $test_blank_amounts_skipped_no_recordz;TestRecommendPostValid.test_blank_amounts_skipped_no_record   s    F +(''**0F/KL||(|!!(!#(q(#q((((#q((((((v(((v(((|(((!(((#(((q((((((((r   c                    t        d       t        d      }|j                  dd|j                   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}}y )Nr   r   r&   r   0r   r   r(   r   r   r   r   r0   r   r   s              r   #test_zero_amounts_skipped_no_recordz:TestRecommendPostValid.test_zero_amounts_skipped_no_record   s    F +(''**0F/LM||(|!!(!#(q(#q((((#q((((((v(((v(((|(((!(((#(((q((((((((r   c                    t        d       t        d      }t        j                         }t	        |j
                  |j                  |j                  t        d            }t        j                  j                  |       t        j                  j                          |j                  dd|j
                   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}}t        j0                  }|j2                  }	|j
                  } |	|      }|j4                  } |       }d}||k(  }|sZt!        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(                  |      rt!        j*                  |      ndt!        j*                  |      t!        j*                  |      t!        j*                  |      t!        j*                  |      t!        j*                  |      d	z  }dd|iz  }t-        t!        j.                  |            d x}x}	x}x}x}x}x}}y )Nr   r   z300.00)r   r   r   r   r&   r   600r   z600.00r(   r   existingr   r   r   r   )r   r
   )z%(py13)s
{%(py13)s = %(py11)s
{%(py11)s = %(py9)s
{%(py9)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.query
}.filter_by
}(category_id=%(py7)s
{%(py7)s = %(py5)s.id
})
}.count
}()
} == %(py16)sr   r    )	r+   r,   r-   rQ   rS   rl   r0   r1   ro   zassert %(py18)srp   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   refreshr   r4   r5   r6   r7   r8   r9   r:   r;   r   r   r   )r=   r*   r   r    r   r   r>   r@   rA   r?   r   r   rw   r   rB   @py_assert12ry   @py_assert14@py_format17@py_format19s                       r   test_upserts_existing_budgetz3TestRecommendPostValid.test_upserts_existing_budget   s=   F +



%++EJJ8$
 	!(''**0F/NOH%3(3'("33"33333"3333333x333x333333333'333'333(333"33333333||J|%%J'**J%*=J=CCJCEJJEJJJJEJJJJJJvJJJvJJJ|JJJ%JJJJJJ'JJJ'JJJ*JJJ=JJJCJJJEJJJJJJJJJJJr   c                    t        d       |j                  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   r&   Fr   r   r(   r   rM   r   rR   rS   )r   r   r3   r4   r5   r6   r7   r8   r9   r:   r;   )	r=   r*   r   rM   r>   rX   r?   rZ   r[   s	            r   #test_no_form_inputs_still_redirectsz:TestRecommendPostValid.test_no_form_inputs_still_redirects   s    F;;3"u;U##*s*#s****#s******x***x***#***s*******r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   U   s2    +:	I	-	W))K+r   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestRecommendPostInvalidc                 8   t        d       t        d      }t        d      }|j                  dd|j                   dd|j                   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 )N100r   r   r&   r   300r   r'   r(   r   rM   r   rR   rS   r   )r=   r*   r   hdrM   r>   rX   r?   rZ   r[   s              r   #test_total_exceeds_income_rerendersz<TestRecommendPostInvalid.test_total_exceeds_income_rerenders   s    E9%8$;; ADD6"EWQTTF+;UC  
 ##*s*#s****#s******x***x***#***s*******r   c                    t        d       t        d      }|j                  dd|j                   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   r   r&   r   r   r   s   exceeds   incomerJ   )z`%(py3)s in %(py11)s
{%(py11)s = %(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py5)s.data
}.lower
}()
}rM   )rP   rQ   rS   rl   r0   z%(py13)sr1   )zf%(py16)s in %(py24)s
{%(py24)s = %(py22)s
{%(py22)s = %(py20)s
{%(py20)s = %(py18)s.data
}.lower
}()
})ro   rp   rq   rr   r   z%(py26)spy26r
   zassert %(py29)spy29r   )r=   r*   r   r   rM   r>   rY   rw   r   rB   rX   rW   ry   r{   @py_assert21@py_assert23rz   rD   rE   r   @py_format27@py_format28@py_format30s                          r   %test_total_exceeds_income_shows_errorz>TestRecommendPostInvalid.test_total_exceeds_income_shows_error   s   E9%;;3WQTTF;KU:S;TWyWHMMWM//W/1Wy11WYW(--W-BUBUWBUBWWYBW5WWWWWy1WWWyWWWWWWHWWWHWWWMWWW/WWW1WWWWWWWYBWWWWYWWWWWW(WWW(WWW-WWWBUWWWBWWWWWWWWWWWWWWWWr   c                    t        d       t        d      }|j                  dd|j                   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}}y )Nr   r   r&   r   r   r   r   r(   r   r   r   r   r0   r   r=   r*   r   r   r>   r?   r@   r   rA   r}   rD   s              r   'test_total_exceeds_income_does_not_savez@TestRecommendPostInvalid.test_total_exceeds_income_does_not_save   s    E9%('!$$0@%/HI||(|!!(!#(q(#q((((#q((((((v(((v(((|(((!(((#(((q((((((((r   c                    t        d       t        d      }|j                  dd|j                   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   r   r&   r   badr   r'   r(   r   rM   r   rR   rS   r   
r=   r*   r   r   rM   r>   rX   r?   rZ   r[   s
             r   !test_non_numeric_amount_rerendersz:TestRecommendPostInvalid.test_non_numeric_amount_rerenders   s    F9%;;3WQTTF;KU:S;T##*s*#s****#s******x***x***#***s*******r   c                    t        d       t        d      }|j                  dd|j                   di      }|j                  j                         }g }d}||v }|}	|sd}
|
|v }|}	|sd	}||v }|}	|	st        j                  d
|fd||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }|j                  |       |st        j                  d
fd
|f      t        j                  |
      dt        j                         v st        j                  |      rt        j                  |      nd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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   r   r&   r   r   r   s   valids   numerics   numberrJ   r   r   r   r   rS   r   r   r   rn   r   r   r   r   r
   r   r   r   )r=   r*   r   r   rM   r   r>   rY   rX   rW   rC   rx   r   r   rZ   r[   r   r   r   r   r   r   s                         r   test_non_numeric_shows_errorz5TestRecommendPostInvalid.test_non_numeric_shows_error   se   F9%;;3WQTTF;KU:S;Tmm!!#GxGx3G*G*"3GyGyC7GGGGGx3GGGxGGGGGG3GGG3GGGGGGGG*GGG*GGGGGGGGGGGGGGGGyCGGGyGGGGGGCGGGCGGGGGGGGGGGGGGGr   c                    t        d       t        d      }|j                  dd|j                   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}}y )Nr   r   r&   r   r   r   r   r(   r   r   r   r   r0   r   r   s              r   test_non_numeric_does_not_savez7TestRecommendPostInvalid.test_non_numeric_does_not_save   s    F9%('!$$0@%/HI||(|!!(!#(q(#q((((#q((((((v(((v(((|(((!(((#(((q((((((((r   c                    t        d       t        d      }|j                  dd|j                   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   r   r&   r   -100r   r'   r(   r   rM   r   rR   rS   r   r   s
             r   test_negative_amount_rerendersz7TestRecommendPostInvalid.test_negative_amount_rerenders   s    F9%;;3WQTTF;KV:T;U##*s*#s****#s******x***x***#***s*******r   c                    t        d       t        d      }|j                  dd|j                   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}}y )Nr   r   r&   r   r  r   r   r(   r   r   r   r   r0   r   r   s              r   "test_negative_amount_does_not_savez;TestRecommendPostInvalid.test_negative_amount_does_not_save   s    F9%('!$$0@&/IJ||(|!!(!#(q(#q((((#q((((((v(((v(((|(((!(((#(((q((((((((r   N)r   r   r   r   r   r   r   r  r  r  r  r   r   r   r   r      s,    +X)+H)+)r   r   )z5000.00)T)r   )__doc__builtinsr6   _pytest.assertion.rewrite	assertionrewriter4   decimalr   datetimer   pytestapp.extensionsr   r   app.models.budgetr   app.models.categoryr   app.models.settingsr   r   r   r!   r#   r   r   r   r   r   <module>r     sS    8       $ $ ( (,+ ,+bT+ T+r4) 4)r   