o
    ÌúSÑ  ã                   @   s’   d dl m 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 G d	d
„ d
eƒZeddG dd„ deƒƒZdS )é    )ÚdatetimeN)Úsleep)Úsettings©Úfind)ÚLiveServerTestCase)Úoverride_settings)Ú	WebDriverc                       s¶   e Zd ZdgZe‡ fdd„ƒZe‡ fdd„ƒZdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Z‡  ZS )&ÚTestAdminPanelWidgetztest_admin.jsonc                    s   t ƒ | _tt| ƒ ¡  d S ©N)r	   ÚseleniumÚsuperr
   Ú
setUpClass©Úcls©Ú	__class__© ú[/var/www/html/kck/venv/lib/python3.10/site-packages/ckeditor_demo/demo_application/tests.pyr      s   zTestAdminPanelWidget.setUpClassc                    s   | j  ¡  tt| ƒ ¡  d S r   )r   Úquitr   r
   ÚtearDownClassr   r   r   r   r      s   
z"TestAdminPanelWidget.tearDownClassc                 C   sT   |   ¡  |  ¡  |  ¡  |  ¡  |  ¡  |  ¡  |  ¡  |  ¡  |  ¡  |  	¡  d S r   )
Ú_login_to_adminÚ _go_to_demo_application_in_adminÚ_assert_editor_loadedÚ_focus_cursor_in_editorÚ_enter_test_textÚ_open_image_upload_widgetÚ_go_to_upload_tabÚ_switch_to_form_iframeÚ_upload_imageÚ_assert_image_uploaded©Úselfr   r   r   Útest_admin_panel_widget   s   z,TestAdminPanelWidget.test_admin_panel_widgetc                 C   sV   | j  d| jdf ¡ | j  d¡}| d¡ | j  d¡}| d¡ | j  d¡ ¡  d S )Nú%s%sz/admin/ÚusernameÚtestÚpasswordz//input[@value="Log in"])r   ÚgetÚlive_server_urlÚfind_element_by_nameÚ	send_keysÚfind_element_by_xpathÚclick)r"   Úusername_inputÚpassword_inputr   r   r   r   &   s   

z$TestAdminPanelWidget._login_to_adminc                 C   s   | j  d| jdf ¡ d S )Nr$   z)/admin/demo_application/examplemodel/add/)r   r(   r)   r!   r   r   r   r   .   s   z5TestAdminPanelWidget._go_to_demo_application_in_adminc                 C   s   t dƒ | j d¡ d S )Né   Úcke_id_content)r   r   Úfind_element_by_idr!   r   r   r   r   1   s   z*TestAdminPanelWidget._assert_editor_loadedc                 C   s   | j  d¡| _| j ¡  d S )NÚcke_wysiwyg_frame)r   Úfind_element_by_class_nameÚframer-   r!   r   r   r   r   5   s   z,TestAdminPanelWidget._focus_cursor_in_editorc                 C   s   | j  d¡ d S )Nr&   )r5   r+   r!   r   r   r   r   9   s   z%TestAdminPanelWidget._enter_test_textc                 C   ó   | j  d¡ ¡  tdƒ d S )Nz+span.cke_button_icon.cke_button__image_iconé   )r   Úfind_element_by_css_selectorr-   r   r!   r   r   r   r   <   ó   z.TestAdminPanelWidget._open_image_upload_widgetc                 C   r6   )NÚcke_Upload_102r7   )r   r2   r-   r   r!   r   r   r   r   @   r9   z&TestAdminPanelWidget._go_to_upload_tabc                 C   s   | j  d¡}| j  |¡ d S )NÚcke_97_fileInput)r   r2   Úswitch_to_frame)r"   Úiframer   r   r   r   D   ó   z+TestAdminPanelWidget._switch_to_form_iframec                 C   s@   | j  d¡}| |  ¡ ¡ | j  ¡  | j  d¡ ¡  tdƒ d S )NÚcke_97_fileInput_inputÚcke_dialog_ui_fileButtonr0   )r   r2   r+   Ú_get_upload_fileÚswitch_to_default_contentr4   r-   r   )r"   Úinputr   r   r   r   H   s
   
z"TestAdminPanelWidget._upload_imagec                 C   s   t dƒS )Nz4ckeditor/ckeditor/skins/moono/images/hidpi/close.pngr   r!   r   r   r   rA   O   s   z%TestAdminPanelWidget._get_upload_filec                 C   sp   |   ¡ }tj |d¡}tj |d¡}tj |¡sJ ‚tj |¡s"J ‚|  |¡ |  |¡ t |¡ t |¡ d S ©Nz	close.pngzclose_thumb.png)Ú_get_upload_directoryÚosÚpathÚjoinÚisfileÚ&_assert_uploaded_image_did_not_changedÚ_assert_thumbnail_is_not_emptyÚremove©r"   Úupload_directoryÚexpected_image_pathÚexpected_thumbnail_pathr   r   r   r    R   s   


z+TestAdminPanelWidget._assert_image_uploadedc                 C   s.   t  ¡  d¡}tj tj|¡}tj tj|¡S )Nz%Y/%m/%d)	r   ÚnowÚstrftimerF   rG   rH   r   ÚCKEDITOR_UPLOAD_PATHÚ
MEDIA_ROOT)r"   Ú	date_pathÚupload_pathr   r   r   rE   ]   s
   ÿz*TestAdminPanelWidget._get_upload_directoryc                 C   s(   |   |  ¡ ¡}|   |¡}||ksJ ‚d S r   )Ú_get_sha1_for_filerA   )r"   rG   Úexpected_shaÚuploaded_shar   r   r   rJ   e   s   
z;TestAdminPanelWidget._assert_uploaded_image_did_not_changedc                 C   s(   t |dƒ}t ¡ }| | ¡ ¡ | ¡ S )NÚrb)ÚopenÚhashlibÚsha1ÚupdateÚreadÚ	hexdigest)r"   rG   ÚimageÚhashr   r   r   rW   j   s   
z'TestAdminPanelWidget._get_sha1_for_filec                 C   s   t j |¡}|dksJ ‚d S )Nr   )rF   rG   Úgetsize)r"   rG   Úsizer   r   r   rK   p   r>   z3TestAdminPanelWidget._assert_thumbnail_is_not_empty)Ú__name__Ú
__module__Ú__qualname__ÚfixturesÚclassmethodr   r   r#   r   r   r   r   r   r   r   r   r   rA   r    rE   rJ   rW   rK   Ú__classcell__r   r   r   r   r
      s,    r
   )ÚCKEDITOR_IMAGE_BACKENDc                   @   s   e Zd Zdd„ ZdS )Ú(TestAdminPanelWidgetForDummyImageBackendc                 C   s\   |   ¡ }tj |d¡}tj |d¡}tj |¡sJ ‚tj |¡r"J ‚|  |¡ t |¡ d S rD   )rE   rF   rG   rH   rI   rJ   rL   rM   r   r   r   r    w   s   
z?TestAdminPanelWidgetForDummyImageBackend._assert_image_uploadedN)re   rf   rg   r    r   r   r   r   rl   u   s    rl   )r   r\   Úos.pathrF   Útimer   Údjango.confr   Ú"django.contrib.staticfiles.findersr   Údjango.testr   Údjango.test.utilsr   Ú$selenium.webdriver.firefox.webdriverr	   r
   rl   r   r   r   r   Ú<module>   s    h