U
    {h+                     @   s|   d dl mZmZ d dlmZmZ d dlmZ d dlm	Z	m
Z
mZmZmZ d dlmZmZ G dd deZG dd	 d	eZd
S )    )ContextTemplate)RequestFactoryTestCase)format_html)
BaseColumnColumnRelatedObjectsColumnTableTitleColumn)PageSitec                   @   sb   e Zd Zdg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S )	TestTablez	test.jsonc                 C   s   t  | _d S Nr   rfself r   j/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/tests/ui/test_tables.pysetUp   s    zTestTable.setUpc                 C   s(   | j d}td}|t||dS N/z/{% load wagtailadmin_tags %}{% component obj %})requestobjr   getr   renderr   r   r   r   templater   r   r   render_component   s    zTestTable.render_componentc                 C   sD   ddddddg}t tdtdg|}| |}| |d d S )	NPaulSimon
first_name	last_nameArt	Garfunkelr$   r%   a\  
            <table class="listing">
                <thead>
                    <tr><th>First name</th><th>Last name</th></tr>
                </thead>
                <tbody>
                    <tr><td>Paul</td><td>Simon</td></tr>
                    <tr><td>Art</td><td>Garfunkel</td></tr>
                </tbody>
            </table>
        r
   r   r    assertHTMLEqualr   datatablehtmlr   r   r   test_table_render   s    
zTestTable.test_table_renderc                 C   sL   ddddddg}d}t tdtdg||d	}| |}| |d
 d S )Nr!   r"   r#   r&   r'   z
Test tabler$   r%   )columnsr+   captiona  
            <table class="listing">
                <caption class="w-sr-only">Test table</caption>
                <thead>
                    <tr><th>First name</th><th>Last name</th></tr>
                </thead>
                <tbody>
                    <tr><td>Paul</td><td>Simon</td></tr>
                    <tr><td>Art</td><td>Garfunkel</td></tr>
                </tbody>
            </table>
        r(   )r   r+   r0   r,   r-   r   r   r   test_table_render_with_caption8   s     	
z(TestTable.test_table_render_with_captionc                 C   sH   ddddddg}t tdtddd	g|}| |}| |d
 d S )Nr!   r"   r#   r&   r'   r$   r%   z75%)widtha  
            <table class="listing">
                <col />
                <col width="75%" />
                <thead>
                    <tr><th>First name</th><th>Last name</th></tr>
                </thead>
                <tbody>
                    <tr><td>Paul</td><td>Simon</td></tr>
                    <tr><td>Art</td><td>Garfunkel</td></tr>
                </tbody>
            </table>
        r(   r*   r   r   r   test_table_render_with_widthZ   s    

z&TestTable.test_table_render_with_widthc                 C   s   t jjdd }tjjdd|d}tjjdd|d}||g}ttdd	d
ddidtdddg|}| 	|}| 
|d|j|jf  d S )N   depthblog.example.comMy bloghostname	site_name	root_pagegallery.example.com
My galleryr:   zwagtailsites:editzchoose-sitezdata-chooseryes)Zurl_nameZlink_classnameZ
link_attrsr;   	Site namelabela  
            <table class="listing">
                <thead>
                    <tr><th>Hostname</th><th>Site name</th></tr>
                </thead>
                <tbody>
                    <tr>
                        <td class="title">
                            <div class="title-wrapper">
                                <a href="/admin/sites/edit/%d/" class="choose-site" data-chooser="yes">blog.example.com</a>
                            </div>
                        </td>
                        <td>My blog</td>
                    </tr>
                    <tr>
                        <td class="title">
                            <div class="title-wrapper">
                                <a href="/admin/sites/edit/%d/" class="choose-site" data-chooser="yes">gallery.example.com</a>
                            </div>
                        </td>
                        <td>My gallery</td>
                    </tr>
                </tbody>
            </table>
        )r   objectsfilterfirstr   creater
   r   r   r    r)   pk)r   r<   bloggalleryr+   r,   r-   r   r   r   test_title_columnz   s<        
	

zTestTable.test_title_columnc                 C   sT   G dd dt }ddddddg}t|dt d	g|}| d
t|jd  d S )Nc                   @   s   e Zd ZG dd dZdS )z0TestTable.test_column_media.<locals>.FancyColumnc                   @   s   e Zd ZdgZdS )z6TestTable.test_column_media.<locals>.FancyColumn.Mediazjs/gradient-fill.jsN)__name__
__module____qualname__jsr   r   r   r   Media   s   rO   N)rK   rL   rM   rO   r   r   r   r   FancyColumn   s   rP   r!   r"   r#   r&   r'   r$   r%   z!src="/static/js/gradient-fill.js"rN   )r   r
   ZassertInstrZmedia)r   rP   r+   r,   r   r   r   test_column_media   s    zTestTable.test_column_mediac                 C   s   G dd dt }tjjdd }tjjdd|dd}tjjd	d
|d}||g}|tdtdddg|}| |}| 	|d d S )Nc                   @   s   e Zd Zdd ZdS )z/TestTable.test_row_classname.<locals>.SiteTablec                 S   s   |j r
dS dS )Nzdefault-site )is_default_site)r   instancer   r   r   get_row_classname   s    zATestTable.test_row_classname.<locals>.SiteTable.get_row_classnameN)rK   rL   rM   rV   r   r   r   r   	SiteTable   s   rW   r4   r5   r7   r8   Tr:   r;   r<   rT   r=   r>   r9   r:   r;   r@   rA   a  
            <table class="listing">
                <thead>
                    <tr><th>Hostname</th><th>Site name</th></tr>
                </thead>
                <tbody>
                    <tr class="default-site">
                        <td>blog.example.com</td>
                        <td>My blog</td>
                    </tr>
                    <tr>
                        <td>gallery.example.com</td>
                        <td>My gallery</td>
                    </tr>
                </tbody>
            </table>
        )
r
   r   rC   rD   rE   r   rF   r   r    r)   r   rW   r<   rH   rI   r+   r,   r-   r   r   r   test_row_classname   s2      

zTestTable.test_row_classnamec                 C   s   G dd dt }tjjdd }tjjdd|dd}tjjd	d
|d}||g}|tdtdddg|}| |}| 	|d|j
 d|j
 d d S )Nc                       s   e Zd Z fddZ  ZS )z+TestTable.test_row_attrs.<locals>.SiteTablec                    s   t  |}|j|d< |S )Nzdata-id)superget_row_attrsrG   )r   rU   attrs	__class__r   r   r\      s    
z9TestTable.test_row_attrs.<locals>.SiteTable.get_row_attrs)rK   rL   rM   r\   __classcell__r   r   r^   r   rW      s   rW   r4   r5   r7   r8   TrX   r=   r>   r9   r:   r;   r@   rA   z
            <table class="listing">
                <thead>
                    <tr><th>Hostname</th><th>Site name</th></tr>
                </thead>
                <tbody>
                    <tr data-id="z">
                        <td>blog.example.com</td>
                        <td>My blog</td>
                    </tr>
                    <tr data-id="z">
                        <td>gallery.example.com</td>
                        <td>My gallery</td>
                    </tr>
                </tbody>
            </table>
        )r
   r   rC   rD   rE   r   rF   r   r    r)   rG   rY   r   r   r   test_row_attrs   s:      


zTestTable.test_row_attrsc                 C   sZ   ddddddg}G dd dt }t|dtd	td
g|}| |}| |d d S )Nr!   r"   r#   r&   r'   c                   @   s   e Zd Zdd ZdS )z>TestTable.test_table_and_row_in_context.<locals>.CounterColumnc                 S   s(   |  ||}td|d jd |d jS )Nz<td>{} of {}</td>row   r,   )Zget_cell_context_datar   index	row_count)r   rU   Zparent_contextcontextr   r   r   render_cell_html+  s    zOTestTable.test_table_and_row_in_context.<locals>.CounterColumn.render_cell_htmlN)rK   rL   rM   rg   r   r   r   r   CounterColumn*  s   rh   rd   r$   r%   a  
            <table class="listing">
                <thead>
                    <tr><th>Index</th><th>First name</th><th>Last name</th></tr>
                </thead>
                <tbody>
                    <tr><td>1 of 2</td><td>Paul</td><td>Simon</td></tr>
                    <tr><td>2 of 2</td><td>Art</td><td>Garfunkel</td></tr>
                </tbody>
            </table>
        )r   r
   r   r    r)   )r   r+   rh   r,   r-   r   r   r   test_table_and_row_in_context$  s     		
z'TestTable.test_table_and_row_in_contextN)rK   rL   rM   Zfixturesr   r    r.   r1   r3   rJ   rR   rZ   ra   ri   r   r   r   r   r      s   " 6/1r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestRelatedObjectsColumnc                 C   s   t  | _d S r   r   r   r   r   r   r   N  s    zTestRelatedObjectsColumn.setUpc                 C   s(   | j d}td}|t||dS r   r   r   r   r   r   r    Q  s    z)TestRelatedObjectsColumn.render_componentc                 C   s6   t tdtdgtj }| |}| |d d S )NtitleZsites_rooted_herea"  
            <table class="listing">
                <thead>
                    <tr><th>Title</th><th>Sites rooted here</th></tr>
                </thead>
                <tbody>
                    <tr>
                        <td>Root</td>
                        <td></td>
                    </tr>
                    <tr>
                        <td>Welcome to your new Wagtail site!</td>
                        <td><ul><li>localhost [default]</li></ul></td>
                    </tr>
                </tbody>
            </table>
        )r
   r   r	   r   rC   allr    r)   )r   r,   r-   r   r   r   r.   V  s    
z*TestRelatedObjectsColumn.test_table_renderN)rK   rL   rM   r   r    r.   r   r   r   r   rj   M  s   rj   N)Zdjango.templater   r   Zdjango.testr   r   Zdjango.utils.htmlr   Zwagtail.admin.ui.tablesr   r   r	   r
   r   Zwagtail.modelsr   r   r   rj   r   r   r   r   <module>   s     @