a
    m b                     @   s@  d dl Z d dlmZ ddlmZ d dlmZ d dlmZ e j	dd Z
e j	d	d
 Zdd Ze jddddggfdd Zdd Zdi fddddiifddddiifddddiifddddiifdddiddidfdddiddidfdddiddidfdddiddidff	Ze jdedd Zdd Zd d! ZdS )"    N)Config   )MockExtensionApp)	ServerApp)run_syncc                 C   s"   dddiit | gddd}|S )Njpserver_extensions-jupyter_server.tests.extension.mockextensionsTDEBUG)template_pathsZ	log_levelr   r   )str)jp_template_dirconfig r   Flib/python3.9/site-packages/jupyter_server/tests/extension/test_app.pyjp_server_config	   s
    r   c                 C   s"   d}| j | }|jd }|j}|S )Nr   Zmockextension)
extensionsZextension_pointsapp)extension_managernamepkgZpointr   r   r   r   mock_extension   s
    

r   c                 C   sD   t |jtsJ t|jdks"J |js,J |jt|gks@J d S )Nr   )
isinstance	serverappr   lenhandlersZloadedr
   r   )jp_serverappr   r   r   r   r   test_initialize   s    
r   z trait_name, trait_value, jp_argv
mock_traitztest mock traitz---MockExtensionApp.mock_trait=test mock traitc                 C   s   t || |ksJ d S )N)getattr)Z
trait_nameZtrait_valueZjp_argvr   r   r   r    test_instance_creation_with_argv%   s    
r    c                 C   s@   |j |j ksJ |j|jks J |jdks.J |jdks<J d S )NZjupyter_mockextension_configzconfig from file)Zconfig_file_pathsZ
config_dirZconfig_file_namer   )Zconfig_filer   r   r   r   r   "test_extensionapp_load_config_file2   s    r!   Tr   open_browserFr   r   zexpected_value, configc                 C   s"   t jt|d}|j|ksJ d S )N)r   )r   initialize_serverr   r"   )monkeypatch
jp_environr   Zexpected_valuer   r   r   r   test_browser_openL   s    r&   c                 C   sJ   t  }|jj}d|v sJ d|v s(J |j}|d s:J |d sFJ d S )Nz3jupyter_server.tests.extension.mockextensions.mock1r   )r   r#   r   r   r   )r$   r%   r   Zextsr   r   r   test_load_parallel_extensionsR   s    r'   c                    s   d | j   d}t| j j|gks(J  fdd}| j j D ]}|D ]}|rH||_qHq@|  t|   dd |j	D dd
|d	
|gksJ  d
ksJ dS )z_Test the stop_extension method.

    This should be fired by ServerApp.cleanup_extensions.
    r   r   c                     s    d7  d S )Nr   r   )argsZcallsr   r   _stopj   s    z"test_stop_extension.<locals>._stopc                 S   s   g | ]^ }}|qS r   r   ).0_msgr   r   r   
<listcomp>v       z'test_stop_extension.<locals>.<listcomp>zShutting down 1 extensionz+{} | extension app "mockextension" stoppingz*{} | extension app "mockextension" stoppedr   N)r   Zload_all_extensionslistZextension_appsvaluesZstop_extensionclearr   Zcleanup_extensionsZrecord_tuplesformat)r   ZcaplogZextension_namer*   Zappsr   r   r)   r   test_stop_extension]   s"    


r4   )ZpytestZtraitlets.configr   Zmockextensions.appr   Zjupyter_server.serverappr   Zjupyter_server.utilsr   Zfixturer   r   r   ZmarkZparametrizer    r!   ZOPEN_BROWSER_COMBINATIONSr&   r'   r4   r   r   r   r   <module>   s:   



	
