
    Bh                         d dl 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lmZ erd	nd
Z G d de      Zy)    N)QuerySet)create_pagecreate_page_content)PageUrl)
CMSSitemap)CMSTestCase)
DJANGO_4_2)get_cms_settinghttphttpsc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)SitemapTestCasec                 
   ddd}| j                  d      5  t        dddi|}t        dd	|j                  d      z  |
       t        dddi|}t        dd	|j                  d      z  |
       t        dddi|}t        dd	|j                  d      z  |
       t        dd|d|}t        dd	|j                  d      z  |
       t        dd|d|}t        dd	|j                  d      z  |
       t        dd|d|}t        dd	|j                  d      z  |
       t        dd|d|}t        dd	|j                  d      z  |
       t        dd|d|}	t        dd	|	j                  d      z  |	
       t        dd|d|}
t        dd	|
j                  d      z  |

       t        dd|
d|}t        dd	|j                  d      z  |
       t        dd|
d| ddd       y# 1 sw Y   yxY w)a}  
        Tree from fixture:

            + P1 (de, en)
            | + P2 (de, en)
            |   + P3 (de, en)
            | + P9 (de unpublished, en)
            |   + P10 unpublished (de, en)
            |   + P11 (en)
            + P4 (de, en)
            | + P5 (de, en)
            + P6 (de, en) (not in menu)
              + P7 (de, en)
              + P8 (de, en)
        znav_playground.htmlen)templatelanguageF)CMS_PERMISSIONin_navigationTdezother title %s)r   titlepage)r   parentN)P1)P4)P6)P2)P3)P5)P7)P8)P9)P10)P11)settingsr   r   	get_title)selfdefaultsp1p4p6p2p3p5p7p8p9p10s               F/home/dcms/DCMS/lib/python3.12/site-packages/cms/tests/test_sitemap.pysetUpzSitemapTestCase.setUp   s0   " .
 ]]%]0 	JBBBB5EUYHZ5ZacdBBBB5EUYHZ5ZacdCC(CB5EUYHZ5ZacdMbMHMB5EUYHZ5ZacdMbMHMB5EUYHZ5ZacdMbMHMB5EUYHZ5ZacdMbMHMB5EUYHZ5ZacdMbMHMB5EUYHZ5ZacdMbMHMB5EUYHZ5ZacdO4OhOC5EVZH[5[befIT"II?	J 	J 	Js   GG99Hc                 j    t               }| j                  t        |j                               d       y)zA
        Has the sitemap the correct number of elements?
           N)r   assertEquallenitems)r&   sitemaps     r2   test_sitemap_countz"SitemapTestCase.test_sitemap_countE   s&     ,W]]_-r2    c                    t               }|j                         }|D ]i  }|d   j                  r*t         d|d   j                   d|d   j                   d}nt         d|d   j                   d}| j                  |d   |       k y)z
        Check the correct URL in location, recreating it according to the title
        attributes (instead of using Page.get_absolute_url) for a lower level
        check
        item://example.com//locationN)r   get_urlspathprotocolr   r6   )r&   r9   urlsetr=   urls        r2   test_sitemap_items_locationz+SitemapTestCase.test_sitemap_items_locationL   s     ,!!# 	4DF|  !
/$v,2G2G1H$v,J[J[I\\]^!
/$v,2G2G1HJT*-s3	4r;   c                 j   t               }g }|j                         }|D ]  }|j                  |d           t        j                  j                         D ][  }|j                  r$t         d|j                   d|j                   d}nt         d|j                   d}| j                  ||v        ] y)z=
        Check that published titles are in the urls
        r@   r>   r?   N)
r   rA   appendr   objectsallrB   rC   r   
assertTrue)r&   r9   	locationsrD   r=   page_urlrE   s          r2   test_sitemap_urlsz!SitemapTestCase.test_sitemap_urls[   s     ,	!!# 	/DT*-.	/++- 	.H}}!
/(2C2C1DAhmm_TUV!
/(2C2C1DAFOOC9,-	.r;   c                    t        j                  t        d            }|d   d   d   dk(  sJ d|d   d   d<   | j                  |      5  t	               j                         D ]D  }t         d}|d	   j                  r||d	   j                  d
z   z  }| j                  |d   |       F 	 ddd       y# 1 sw Y   yxY w)zI
        Pages on the sitemap should only show public languages.
        	LANGUAGES   coder   Fpublic)CMS_LANGUAGESz://example.com/en/r=   r?   r@   N)	copydeepcopyr
   r$   r   rA   rC   rB   r6   )r&   lang_settingsr=   rE   s       r2   'test_sitemap_uses_public_languages_onlyz7SitemapTestCase.test_sitemap_uses_public_languages_onlyk   s     ok&BCQ"6*d222(-aH%]]]7 	8"--/ 8!
"45<$$4<,,s22C  j!1378	8 	8 	8s   A B66B?c                 f    t               }|j                         }| j                  |t        d       y)zP
        Ensure that CMSSitemap.items() returns a QuerySet, not a list.
        z*CMSSitemap.items() must return a QuerySet.N)r   r8   assertIsInstancer   )r&   r9   r8   s      r2   test_sitemap_items_typez'SitemapTestCase.test_sitemap_items_type}   s)     ,eX/[\r;   N)	__name__
__module____qualname__r3   r:   rF   rN   rX   r[    r;   r2   r   r      s#    3Jj34. 8$]r;   r   )rU   django.db.modelsr   cms.apir   r   
cms.modelsr   cms.sitemapsr   cms.test_utils.testcasesr   cms.utils.compatr	   cms.utils.confr
   rC   r   r_   r;   r2   <module>rg      s6     % 4  # 0 ' *6Wt]k t]r;   