o
    ic                     @   s  d dl Z d dl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lmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZ d dlmZ d dlmZ dd ZeZ G dd dZ!G dd deZ"G dd de"Z#G dd de"Z$dS )    N)TestCase)patch)TemporaryDirectory)	py3compat)BaseJSONConfigManagercheck_help_all_output)paths)toggle_serverextension_python)nbextensions
extensions)NotebookApp)_get_config_dir)SimpleNamespace)OrderedDictc                   C   s<   t d t ddg t ddg t ddg t ddg d S )Nznotebook.serverextensionsenabledisableinstall	uninstallr    r   r   _/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/notebook/tests/test_serverextensions.pytest_help_output   s
   r   c                   @   s(   e Zd ZeZedd ZdZdd ZdS )MockExtensionModulec                   C   s
   ddigS )Nmodulez_mockdestination/indexr   r   r   r   r   _jupyter_server_extension_paths$   s   z3MockExtensionModule._jupyter_server_extension_pathsFc                 C   s
   d| _ d S )NT)loadedselfappr   r   r   load_jupyter_server_extension,   s   
z1MockExtensionModule.load_jupyter_server_extensionN)	__name__
__module____qualname__
outer_file__file__staticmethodr   r   r   r   r   r   r   r   !   s    
r   c                   @   s.   e Zd Zdd Zdd Zdd Zddd	Zd
S )MockEnvTestCasec                 C   s   t  }| j| t|jS N)r   tempdirsappendr   cast_unicodename)r   tdr   r   r   tempdir2   s   zMockEnvTestCase.tempdirc                 C   s  g | _ g | _|  | _tj| jd| _tj| jd| _tj| jd| _	tj| jd| _
| j	g| _| j
g| _g | _td| j| jd}| j| ttfD ]}t|d| j}| j| t|dg }| j| qQttfD ]}t|d	| j}| j| t|d
g }| j| qsttdd}| j| | jD ]}|  | |j q| t | jg| j  | tjdd| j
 | t | jg| j  d S )Ndataconfigsystem_datasystem_configz
os.environ)JUPYTER_CONFIG_DIRJUPYTER_DATA_DIRSYSTEM_JUPYTER_PATHENV_JUPYTER_PATHSYSTEM_CONFIG_PATHENV_CONFIG_PATHENABLE_USER_SITEF)user)r(   _mock_extensionsr-   test_dirospathjoindata_dir
config_dirsystem_data_dirsystem_config_dirsystem_pathsystem_config_pathpatchesr   dictr)   r	   r   objectr   sitestart
addCleanupstopassertEqualjupyter_config_pathr   jupyter_path)r   pmodr   r   r   setUp7   sV   



zMockEnvTestCase.setUpc                 C   s   | j D ]}tj| qd S r'   )r:   sysmodulespop)r   
modulenamer   r   r   tearDownd   s   
zMockEnvTestCase.tearDownmockextensionc                 C   s    t   tj|< }| j| |S r'   )r   rR   rS   r:   r)   )r   rU   extr   r   r   _inject_mock_extensionh   s   z&MockEnvTestCase._inject_mock_extensionN)rW   )r    r!   r"   r-   rQ   rV   rY   r   r   r   r   r&   0   s
    -r&   c                   @   s.   e Zd ZdddZdd Zdd Zdd	 Zd
S )TestInstallServerExtensionTc                 C   s,   t t|d}|d}|di di S )N)r@   jupyter_notebook_configr   nbserver_extensions)r   r   get)r   r9   cmr.   r   r   r   _get_configp   s   
z&TestInstallServerExtension._get_configc                 C   s*   |    tdd |  }|d sJ d S )NrW   TrY   r
   r_   r   r/   r   r   r   test_enableu   s   
z&TestInstallServerExtension.test_enablec                 C   s4   |    tdd tdd |  }|d rJ d S )NrW   TFr`   ra   r   r   r   test_disable|   s
   

z'TestInstallServerExtension.test_disablec                 C   s   |  d}|  d}|  d}|  d}tdddd tdddd tdddd tdddd tddid}|  |  |jsDJ |jsIJ |jsNJ |jrSJ d S )	Nmockext_sysmockext_bothmockext_user
mockext_pyTF)enabledr9   )r\   )rY   r
   r   init_server_extension_configinit_server_extensionsr   )r   mock_sys	mock_both	mock_usermock_pyr   r   r   r   test_merge_config   s   






z,TestInstallServerExtension.test_merge_configN)T)r    r!   r"   r_   rb   rc   ro   r   r   r   r   rZ   n   s
    
rZ   c                       s4   e Zd ZdZ fddZ fddZdd Z  ZS )TestOrderedServerExtensionz;
    Test that Server Extensions are loaded _in order_
    c                    sJ   t    t }t }dd }||_dd }||_|tjd< |tjd< d S )Nc                 S      d| _ d| _d S )NTI)mockImock_sharedobjr   r   r   r         
zGTestOrderedServerExtension.setUp.<locals>.load_jupyter_server_extensionc                 S   rq   )NTII)mockIIrt   ru   r   r   r   r      rw   mockextension2mockextension1)superrQ   r   r   rR   rS   )r   r{   rz   r   	__class__r   r   rQ      s   

z TestOrderedServerExtension.setUpc                    s   t    tjd= tjd= d S )Nrz   r{   )r|   rV   rR   rS   )r   r}   r   r   rV      s   
z#TestOrderedServerExtension.tearDownc                 C   sV   t  }tddg|_|  |jdu sJ d|jdu s J d|jdks)J dd S )N)rz   T)r{   TTzMock II should have been loadedzMock I should have been loadedrx   z%Mock II should be loaded after Mock I)r   r   r\   rj   ry   rs   rt   r   r   r   r   test_load_ordered   s   z,TestOrderedServerExtension.test_load_ordered)r    r!   r"   __doc__rQ   rV   r   __classcell__r   r   r}   r   rp      s
    rp   )%r<   rH   rR   unittestr   unittest.mockr   ipython_genutils.tempdirr   ipython_genutilsr   notebook.config_managerr   traitlets.tests.utilsr   jupyter_corer	   notebook.serverextensionsr
   notebookr   r   notebook.notebookappr   notebook.nbextensionsr   typesr   collectionsr   r   r$   r#   r   r&   rZ   rp   r   r   r   r   <module>   s,    >/