o
    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      t  | _d S Nr   rfself r   b/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/tests/ui/test_tables.pysetUp      zTestTable.setUpc                 C   (   | 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      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/   r4   r0   r1   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)url_namelink_classname
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/   r0   r1   r   r   r   test_title_columnz   s4   
	

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    
rV   N)rR   rS   rT   rV   r   r   r   r   FancyColumn   s    rW   r%   r&   r'   r*   r+   r(   r)   z!src="/static/js/gradient-fill.js"rU   )r   r
   assertInstrmedia)r   rW   r/   r0   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                   @      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)rR   rS   rT   r`   r   r   r   r   	SiteTable       ra   r8   r9   r;   r<   Tr>   r?   r@   r^   rA   rB   r=   r>   r?   rG   rH   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   rJ   rK   rL   r   rM   r   r#   r-   r   ra   r@   rO   rP   r/   r0   r1   r   r   r   test_row_classname   s.   

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_attrsrN   )r   r_   attrs	__class__r   r   rg      s   
z9TestTable.test_row_attrs.<locals>.SiteTable.get_row_attrs)rR   rS   rT   rg   __classcell__r   r   ri   r   ra      s    ra   r8   r9   r;   r<   Trc   rA   rB   r=   r>   r?   rG   rH   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   rJ   rK   rL   r   rM   r   r#   r-   rN   rd   r   r   r   test_row_attrs   s6   


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                   @   r\   )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   r0   )get_cell_context_datar   index	row_count)r   r_   parent_contextcontextr   r   r   render_cell_html+  s   zOTestTable.test_table_and_row_in_context.<locals>.CounterColumn.render_cell_htmlN)rR   rS   rT   rt   r   r   r   r   CounterColumn*  rb   ru   rp   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/   ru   r0   r1   r   r   r   test_table_and_row_in_context$  s    	
	z'TestTable.test_table_and_row_in_contextN)rR   rS   rT   fixturesr   r#   r2   r5   r7   rQ   r[   re   rl   rv   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   r   r   r   r   r   r   r   r   N  r   zTestRelatedObjectsColumn.setUpc                 C   r   r   r   r!   r   r   r   r#   Q  r$   z)TestRelatedObjectsColumn.render_componentc                 C   s6   t tdtdgtj }| |}| |d d S )Ntitle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   rJ   allr#   r-   )r   r0   r1   r   r   r   r2   V  s   
z*TestRelatedObjectsColumn.test_table_renderN)rR   rS   rT   r   r#   r2   r   r   r   r   rx   M  s    rx   N)django.templater   r   django.testr   r   django.utils.htmlr   wagtail.admin.ui.tablesr   r   r	   r
   r   wagtail.modelsr   r   r   rx   r   r   r   r   <module>   s      @