
    恕fP2                        d dl Z d dlZd dlmZmZmZmZ d dlmZ d dl	m
Z
  G d de
j                        Z G d de
j                        Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zej0                  j3                  e      d        Zd Zd Zd Zd Zd Z d Z!d Z"ej0                  j3                  e      d        Z#d Z$d Z%d Z&d  Z'd! Z(d" Z)y)#    N)Flaskrequestaborturl_for)
MethodView)basec                        e Zd ZdZdZdZ ej                  d      d        Z ej                  d      d        Z	 fdZ
 fdZ fdZ xZS )	MockViewT/c                      yNzSuccess! selfs    Z/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/flask_admin/tests/test_base.pyindexzMockView.index           z/test/c                 $    | j                  d      S )Nz	mock.html)renderr   s    r   testzMockView.test   s    {{;''r   c                 F    | j                   rt        t        |   |fi |S y)NzFailure!)
allow_callsuperr
   _handle_view)r   namekwargs	__class__s      r   r   zMockView._handle_view   s$    ??45dEfEEr   c                 B    | j                   rt        t        |          S yNF)allow_accessr   r
   is_accessibler   r   s    r   r"   zMockView.is_accessible   s    4688r   c                 B    | j                   rt        t        |          S yr    )visibler   r
   
is_visibler#   s    r   r&   zMockView.is_visible%   s    <<4355r   )__name__
__module____qualname__r   r!   r%   r   exposer   r   r   r"   r&   __classcell__)r   s   @r   r
   r
      sb    JLGT[[  T[[( ( r   r
   c                   &   e Zd Z ej                  d      d        Z ej                  d       G d de             Z ej                  d       G d de             Z	 ej                  d	       ej                  d
       G d de                    Z
y)MockMethodViewr   c                      yr   r   r   s    r   r   zMockMethodView.index-   r   r   z/_api/1c                   $    e Zd Zd Zd Zd Zd Zy)MockMethodView.API1c                 2    |j                  dt        d      S Nmethod.htmlAPI1r   r   r   r   r   clss     r   getzMockMethodView.API1.get3       ::mW6:JJr   c                 2    |j                  dt        d      S r2   r6   r7   s     r   postzMockMethodView.API1.post6   r:   r   c                 2    |j                  dt        d      S r2   r6   r7   s     r   putzMockMethodView.API1.put9   r:   r   c                 2    |j                  dt        d      S r2   r6   r7   s     r   deletezMockMethodView.API1.delete<   r:   r   N)r'   r(   r)   r9   r<   r>   r@   r   r   r   r4   r0   1   s    	K	K	K	Kr   r4   z/_api/2c                       e Zd Zd Zd Zy)MockMethodView.API2c                 2    |j                  dt        d      S Nr3   API2r5   r6   r7   s     r   r9   zMockMethodView.API2.getA   r:   r   c                 2    |j                  dt        d      S rD   r6   r7   s     r   r<   zMockMethodView.API2.postD   r:   r   N)r'   r(   r)   r9   r<   r   r   r   rE   rB   ?   s    	K	Kr   rE   z/_api/3z/_api/4c                       e Zd Zd Zy)MockMethodView.DoubleExposec                 2    |j                  dt        d      S )Nr3   API3r5   r6   r7   s     r   r9   zMockMethodView.DoubleExpose.getJ   r:   r   N)r'   r(   r)   r9   r   r   r   DoubleExposerH   G   s    	Kr   rK   N)r'   r(   r)   r   r*   r   expose_plugviewr   r4   rE   rK   r   r   r   r-   r-   ,   s    T[[  T)$Kz K %K T)$Kz K %K T)$T)$Kz K % %Kr   r-   c                      t               } | j                  J | j                  J | j                  dk(  sJ | j                  J | j
                  J | j                  J | j                  J y )Nmockview)r
   r   categoryendpointurlstatic_folderadmin	blueprintviews    r   test_baseview_defaultsrW   N   s}    :D99==   ==J&&&88%%%::>>!!!r   c                  p   t        j                         } | j                  dk(  sJ | j                  dk(  sJ | j                  dk(  sJ | j
                  J | j                  J | j                  j                  dk(  sJ t        | j                        dk(  sJ | j                  d   | j                  k(  sJ y )NAdminz/adminrS   zadmin/index.html   r   )
r   rY   r   rQ   rP   app
index_view	_templatelen_views)rS   s    r   test_base_defaultsr`   Y   s    JJLE::   99   >>W$$$99'''%%);;;; u||!!!<<?e.....r   c                     t        j                  ddddd      } t        j                  |       }|j                  dk(  sJ |j                  dk(  sJ |j
                  | u sJ | j                  dk(  sJ | j                  dk(  sJ | j                  dk(  sJ t        |j                        dk(  sJ |j                  d	   | k(  sJ y 
Nabcz/de)r   rO   rP   rQ   templater\   rZ   r   )r   AdminIndexViewrY   rP   rQ   r\   r   rO   r]   r^   r_   )rV   rS   s     r   test_custom_index_viewrj   g   s    C##'#7DJJ$'E>>S   99t###99==C>>S    u||!!!<<?d"""r   c                     t        j                  ddddd      } t        t              }t        j                         }|j                  ||        |j                  dk(  sJ |j                  dk(  sJ |j                  | u sJ | j                  dk(  sJ | j                  dk(  sJ | j                  dk(  sJ t        |j                        dk(  sJ |j                  d	   | k(  sJ y rb   )r   ri   r   r'   rY   init_apprP   rQ   r\   r   rO   r]   r^   r_   )rV   r[   rS   s      r   "test_custom_index_view_in_init_apprm   x   s    C##'#7D
/CJJLE	NN34N(>>S   99t###99==C>>S    u||!!!<<?d"""r   c                      t        t              } t        j                  |       }|j                  | k(  sJ |j
                  j                  J y N)r   r'   r   rY   r[   r\   rT   r[   rS   s     r   test_base_registrationrq      sB    
/CJJsOE99%%111r   c                     t        t              } t        j                  | ddd      }|j                  dk(  sJ |j
                  dk(  sJ |j                  j                  j                  dk(  sJ | j                         }|j                  d      }|j                  dk(  sJ | j                  d      5  |j                  t        dd	
            }d d d        |j                  dk(  sJ y # 1 sw Y   xY w)NTestz/foobarz/static/my/admin)r   rQ   static_url_pathz/foobar/   r   admin.static&bootstrap/bootstrap2/css/bootstrap.cssfilename)r   r'   r   rY   r   rQ   r\   rT   rt   test_clientr9   status_codetest_request_contextr   r[   rS   clientrvs       r   test_admin_customizationsr      s    
/CJJsYHZ[E::99	!!!%%559KKKK__F	J	B>>S    
	!	!#	& dZZ9abcd>>S   d ds   3C**C3c                     t        j                         } t               }|j                  |       }|j                  | k(  sJ |j
                  J |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  t        j                  j                  dd      k(  sJ |j                  |j                  k(  sJ t        dd      }|j                  t        j                                |j                  dk(  sJ |j                  dk(  sJ |j                  d	k(  sJ t        d
      }|j                  t        j                                |j                  dk(  sJ t        d      }|j                  t        j                                |j                  dk(  sJ t        d
      }|j                  t        j                  d             |j                  dk(  sJ t        d      }|j                  t        j                                |j
                  j                  dk(  sJ y )NrN   z/admin/mockview	Mock View	templates
bootstrap2rs   foobar)r   rP   z/admin/foobarr   rQ   z/admin/testz
/test/testrP   r   z/testz/static/my/test)rt   )r   rY   r
   create_blueprintrS   rT   rP   rQ   r   
url_prefixtemplate_folderospathjoinrR   rt   )rS   rV   bps      r   test_baseview_registrationr      s   JJLE:D			u	%B ::>>%%% ==J&&&88((((99### 77dmm###==DHH$$$k<!HHHHt11111 (3D$**,'99==H$$$88&&&D$**,'88}$$$%D$**,'88|###V$D$**-.88w$56D$**,'>>))->>>>r   c                      t        t              } t        j                  |       }t	               }|j                  |       t        |j                        dk(  sJ y )N   )r   r'   r   rY   r
   add_viewr^   _urls)r[   rS   rV   s      r   test_baseview_urlsr      sA    
/CJJsOE:D	NN4tzz?ar   c                      t        t              } t        j                  |       }|j	                  t        d      t        d             t        |j                               dk(  sJ y )Ntest1r   test2   )r   r'   r   rY   	add_viewsr
   r^   menurp   s     r   test_add_viewsr      sI    
/CJJsOE	OOHg.'0JKuzz|!!!r   c                     t        t              } t        j                  |       }|j	                  dddd       |j                  t        ddd             |j                  t        dd	d
             t        |j                               dk(  sJ |j                         d   j                  dk(  sJ |j                         d   j                         dk(  sJ |j                         d   j                         dk(  sJ |j                         d   j                         dk(  sJ t        |j                         d   j                               dk(  sJ |j                         d   j                         d   j                  dk(  sJ |j                         d   j                  d
k(  sJ |j                         d   j                         J |j                         d   j                         J |j                         d   j                         J t        |j                         d   j                               dk(  sJ |j                         d   j                         d   j                  dk(  sJ y )N	Category1z
class-namez	icon-typez
icon-valueTest 1r   )r   rP   rO   Test 2r   	Category2r   rZ   r   r   )r   r'   r   rY   add_categoryr   r
   r^   r   r   get_class_nameget_icon_typeget_icon_valueget_childrenrp   s     r   test_add_categoryr      s   
/CJJsOE	{L+|L	NN8GkRS	NN8GkRSuzz|!!! ::<?;...::<?))+|;;;::<?((*k999::<?))+|;;;uzz|A++-.!333::<?'')!,11X=== ::<?;...::<?))+333::<?((*222::<?))+333uzz|A++-.!333::<?'')!,11X===r   )raisesc                      t        t              } t        j                  |       }|j	                  t        j
                                y ro   )r   r'   r   rY   r   BaseViewrp   s     r   test_no_defaultr      s*    
/CJJsOE	NN4==?#r   c                     t        t              } t        j                  |       }t	               }|j                  |       | j                         }|j                  d      }|j                  dk(  sJ |j                  d      }|j                  dk(  sJ |j                  d      }|j                  dk(  sJ d|_
        |j                  d      }|j                  dk(  sJ y )N/admin/ru   /admin/mockview/   Success!z/admin/mockview/test/Fs   Failure!)r   r'   r   rY   r
   r   rz   r9   r{   datar   r[   rS   rV   r~   r   s        r   	test_callr     s    
/CJJsOE:D	NN4__F	I	B>>S   	&	'B77k!!!	+	,B77k!!! DO	&	'B77k!!!r   c                      t        t              } t        j                  |       }t	               }|j                  |       | j                         }d|_        |j                  d      }|j                  dk(  sJ y )NFr   i  )
r   r'   r   rY   r
   r   rz   r!   r9   r{   r   s        r   test_permissionsr     s`    
/CJJsOE:D	NN4__FD	&	'B>>S   r   c                     t        t              } t        j                  |       }t	               }|j                  |       | j                         }d|_        d |_        |j                  d      }|j                  dk(  sJ y )NFc                      t        d      S )N  )r   )argsr   s     r   <lambda>z,test_inaccessible_callback.<locals>.<lambda>2  s
    s r   r   r   )r   r'   r   rY   r
   r   rz   r!   inaccessible_callbackr9   r{   r   s        r   test_inaccessible_callbackr   *  sh    
/CJJsOE:D	NN4__FD!CD	&	'B>>S   r   c                     t        t              } t        j                  |       }t	        d      }d|_        |j                  |       | j                         }|j                  d      }d|j                  j                  d      vsJ y )NTestMenuItem)r   Fr   utf-8)r   r'   r   rY   r
   r%   r   rz   r9   r   decoder   s        r   get_visibilityr   8  sk    
/CJJsOE(DDL	NN4__F	&	'B!8888r   c                     t        t              } t        j                  |       }|j	                  t        ddd             t        ddd      }d|_        |j	                  |       d|j                  v sJ t        |j                        dk(  sJ |j                  d	   j                  dk(  sJ t        |j                  d	   j                        dk(  sJ |j                  d	   j                         J |j                  d	   j                         sJ |j                  d	   j                         }t        |      d	k(  sJ |d
   j                         sJ y )Nr   rs   r   )r   rO   rP   r   r   Fr   rZ   r   )r   r'   r   rY   r   r
   r!   _menu_categoriesr^   _menur   	_childrenget_urlr"   r   )r[   rS   rV   childrens       r   test_submenur   G  s2   
/CJJsOE	NN8FWMN FWEDD	NN4U+++++u{{q   ;;q>&(((u{{1~''(A--- ;;q>!!#+++ ;;q>''))){{1~**,Hx=AA;$$&&&r   c                     t        t              } t        j                         }|j	                  t                      |j                  |        | j                         }|j                  d      }|j                  dk(  sJ y )Nr   r   )
r   r'   r   rY   r   r
   rl   rz   r9   r   r}   s       r   test_delayed_initr   b  s]    
/CJJLE	NN8:	NN3__F	&	'B77k!!!r   c                      t        t              } t        j                  |       } G d dt        j                        }t        j                  |  |dd            }y )Nc                       e Zd Zy).test_multi_instances_init.<locals>.ManageIndexN)r'   r(   r)   r   r   r   ManageIndexr   r  s    r   r   z/managemanage)rQ   rP   rh   )r   r'   r   rY   ri   )r[   _r   s      r   test_multi_instances_initr   n  sC    
/C

3Ad))  	

3;9x#PQAr   c                  n    t        t              } t        j                  |       }|j	                  |        y ro   )r   r'   r   rY   rl   rp   s     r   test_double_initr   x  s$    
/CJJsOE	NN3r   c                  x   t        t              } t        j                  |       }t	               }|j                  |       | j                         }|j                  d      }t        d|j                  d       |j                  dk(  sJ |j                  d      }|j                  dk(  sJ |j                  d      }|j                  dk(  sJ |j                  d      }|j                  dk(  sJ |j                  d      }|j                  dk(  sJ |j                  d      }|j                  d	k(  sJ |j                  d      }|j                  d
k(  sJ |j                  d      }|j                  d
k(  sJ |j                  d      }|j                  dk(  sJ |j                  d      }|j                  dk(  sJ y )Nz/admin/mockmethodview/_api/1"s
   GET - API1s
   PUT - API1s   POST - API1s   DELETE - API1z/admin/mockmethodview/_api/2s
   GET - API2s   POST - API2i  z/admin/mockmethodview/_api/3s
   GET - API3z/admin/mockmethodview/_api/4)r   r'   r   rY   r-   r   rz   r9   printr   r>   r<   r@   r{   r   s        r   test_nested_flask_viewsr     s   
/CJJsOED	NN4__F	2	3B	#rww77m###	2	3B77m###	3	4B77n$$$	5	6B77&&&&	2	3B77m###	3	4B77n$$$	5	6B>>S   	2	3B>>S   	2	3B77m###	2	3B77m###r   c                     t        t              } t        j                  | d      }|j	                  t                      | j                         }|j                  d      }|j                  dk(  sJ | j                  d      5  |j                  t        dd            }d d d        |j                  dk(  sJ y # 1 sw Y   xY w)	Nr   r   z
/mockview/r   rv   rw   rx   ru   )r   r'   r   rY   r   r
   rz   r9   r   r|   r   r{   r}   s       r   test_root_mountr     s    
/CJJs$E	NN8:__F	L	!B77k!!! 
	!	!#	& dZZ9abcd>>S   d ds   B::Cc                  t   t        t              } t        j                  |       }|j	                  t        j
                  dd             |j	                  t        j
                  dd             | j                         }|j                  d      }|j                  j                  d      }d|v sJ d|v sJ y 	NTestMenuLink1z.indexr   TestMenuLink2zhttp://python.org/r   r   r   )
r   r'   r   rY   add_linkMenuLinkrz   r9   r   r   r[   rS   r~   r   r   s        r   test_menu_linksr     s    
/CJJsOE	NN4==8DE	NN4==6JKL__F	I	B77>>'"Dd"""d"""r   c                  T   t        t              } t        j                  |       }|j	                  t        j
                  dd      t        j
                  dd             | j                         }|j                  d      }|j                  j                  d      }d|v sJ d|v sJ y r   )
r   r'   r   rY   	add_linksr   rz   r9   r   r   r   s        r   test_add_linksr     s    
/CJJsOE	OODMM/HEMM/7KLN __F	I	B77>>'"Dd"""d"""r   c                  :    t               } | j                  dk(  sJ y )Nr   )r
   r   rU   s    r   check_class_namer     s    :D99###r   c                  X     G fddt                       } | j                  dk(  sJ y )Nc                   "     e Zd Z fdZ xZS )"check_endpoint.<locals>.CustomViewc                 (    dt         |   |      z   S )Nzadmin.)r   _get_endpoint)r   rP   
CustomViewr   s     r   r   z0check_endpoint.<locals>.CustomView._get_endpoint  s    eJCHMMMr   )r'   r(   r)   r   r+   )r   r   s   @r   r   r     s    	N 	Nr   r   zadmin.customview)r
   rP   )rV   r   s    @r   check_endpointr     s-    NX N <D==....r   )*r   pytestflaskr   r   r   r   flask.viewsr   flask_adminr   r   r
   r-   rW   r`   rj   rm   rq   r   r   r   r   r   markxfail	Exceptionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s    	  0 0 " t}} BKT]] KD"/#"#&2!"+?\ ">6 )$$ %$",
!!9'6	"R )$ %$D!##$
/r   