Ë
    ±!ij@™  ã                   óz  — d dl Z 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 d	d
lmZmZ d	dlmZmZmZmZmZmZmZ d	dlmZ d d„Z G d„ de«      Z G d„ de«      Z  G d„ de«      Z! G d„ de«      Z" G d„ de«      Z# G d„ de«      Z$ G d„ de«      Z% G d„ de«      Z& G d„ de«      Z'y)!é    N)Úsettings)ÚTestCaseÚoverride_settings)Úreverse)Úcall_command)ÚSimpleUploadedFile)Úpatch)ÚStringIOé   )ÚArticleFormÚRegistrationForm)ÚArticleÚArticleCategoryÚArticleSubcategoryÚ
ArticleTagÚRecordDraftÚStrategyÚUser)ÚTAXONOMY_MODELSc                 ó>   — t        | |j                  g|xs g ¢¬«      S )N©Úargs)r   Úusername)ÚnameÚuserr   s      ú:/home/cnicou/Desktop/Git Repositories/office/core/tests.pyÚworkspace_reverser      s   € Ü�4˜tŸ}™}Ð<°²
¸Ð<Ô=Ð=ó    c                   óN   — e Zd Z ej                  d«      Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y)ÚCKEditorUploadTestsz\iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=c                 óP   — t         j                  j                  dd¬«      | _        y )Nzckeditor-userútest-password©r   Úpassword©r   ÚobjectsÚcreate_userr   ©Úselfs    r   ÚsetUpzCKEditorUploadTests.setUp   s#   € Ü—L‘L×,Ñ,Ø$Ø$ð -ó 
ˆ�	r   c                 óö  — | j                   j                  | j                  «       t        j                  «       5 }t        |¬«      5  | j                   j                  t        d«      dt        d| j                  d¬«      i«      }d d d «       d d d «       | j                  j                  d«       | j                  |j                  «       d   j                  d	«      «       y # 1 sw Y   Œ_xY w# 1 sw Y   ŒcxY w)
N)Ú
MEDIA_ROOTÚck_editor_5_upload_fileÚuploadz	pixel.pngz	image/png)Úcontent_typeéÈ   Úurlz/media/)ÚclientÚforce_loginr   ÚtempfileÚTemporaryDirectoryr   Úpostr   r   ÚPNG_DATAÚassertEqualÚstatus_codeÚ
assertTrueÚjsonÚ
startswith)r)   Ú
media_rootÚresponses      r   Ú+test_authenticated_user_can_upload_an_imagez?CKEditorUploadTests.test_authenticated_user_can_upload_an_image#   sÌ   € Ø�‰×Ñ §	¡	Ô*ä×(Ñ(Ó*ð 	¨jÜ"¨jÔ9ñ 
ØŸ;™;×+Ñ+ÜÐ5Ó6à Ô"4Ø'Ø ŸM™MØ)4ô#ðó	�÷
÷	ð 	×Ñ˜×-Ñ-¨sÔ3Ø�‰˜Ÿ™›¨Ñ.×9Ñ9¸)ÓDÕE÷
ð 
ú÷	ð 	ús#   ºC/Á>C#ÂC/Ã#C,	Ã(C/Ã/C8c                 ó„   — | j                   j                  t        d«      «      }| j                  |j                  d«       y )Nr-   i“  )r2   r6   r   r8   r9   ©r)   r>   s     r   Ú*test_anonymous_user_cannot_upload_an_imagez>CKEditorUploadTests.test_anonymous_user_cannot_upload_an_image6   s2   € Ø—;‘;×#Ñ#¤GÐ,EÓ$FÓGˆà×Ñ˜×-Ñ-¨sÕ3r   c                 óÞ   — dD ]\  }| j                  |¬«      5  t        j                  |   }| j                  d|d   «       | j	                  |d   d   «       d d d «       Œ^ y # 1 sw Y   ŒixY w)N)ÚdefaultÚextends)Úconfig_nameÚ
mediaEmbedÚtoolbarÚpreviewsInData)ÚsubTestr   ÚCKEDITOR_5_CONFIGSÚassertInr:   )r)   rF   Úconfigs      r   Ú9test_media_embed_is_enabled_for_all_editor_configurationszMCKEditorUploadTests.test_media_embed_is_enabled_for_all_editor_configurations;   sz   € Ø1ò 	HˆKØ—‘¨+�Ó6ñ HÜ!×4Ñ4°[ÑA�Ø—‘˜l¨F°9Ñ,=Ô>Ø—‘  |Ñ 4Ð5EÑ FÔG÷Hð Hñ	H÷Hð Hús   ˜A A#Á#A,	c                 óŠ   — | j                   j                  t        d«      «      }| j                  |j                  d   d«       y )NÚloginzReferrer-Policyzstrict-origin-when-cross-origin)r2   Úgetr   r8   ÚheadersrA   s     r   Ú7test_cross_origin_media_receives_origin_referrer_policyzKCKEditorUploadTests.test_cross_origin_media_receives_origin_referrer_policyB   s9   € Ø—;‘;—?‘?¤7¨7Ó#3Ó4ˆà×ÑØ×ÑÐ.Ñ/Ø-õ	
r   N)Ú__name__Ú
__module__Ú__qualname__Úbase64Ú	b64decoder7   r*   r?   rB   rN   rS   © r   r   r    r       s4   „ Øˆv×Ñð	;ó€Hò

òFò&4ò
Hó
r   r    c                   ól   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚArticleCreateTestsc                 óP   — t         j                  j                  dd¬«      | _        y )NÚwriterr"   r#   r%   r(   s    r   r*   zArticleCreateTests.setUpL   s   € Ü—L‘L×,Ñ,°hÈÐ,ÓYˆ�	r   c           	      óÊ   — | j                   j                  t        d| j                  «      «      }| j	                  |t        d«      › dt        d| j                  «      › �«       y )NÚarticle_createrP   ú?next=)r2   rQ   r   r   ÚassertRedirectsr   rA   s     r   Útest_create_page_requires_loginz2ArticleCreateTests.test_create_page_requires_loginO   sT   € Ø—;‘;—?‘?Ô#4Ð5EÀtÇyÁyÓ#QÓRˆØ×ÑØÜ�wÓÐ  Ô'8Ð9IÈ4Ï9É9Ó'UÐ&VÐWõ	
r   c                 óÐ   — | j                   j                  | j                  «       | j                   j                  t	        d| j                  «      «      }| j                  |d«       y )Nr_   úclass="field-errors")r2   r3   r   rQ   r   ÚassertNotContainsrA   s     r   Ú2test_create_page_does_not_render_empty_error_listszEArticleCreateTests.test_create_page_does_not_render_empty_error_listsV   sH   € Ø�‰×Ñ §	¡	Ô*à—;‘;—?‘?Ô#4Ð5EÀtÇyÁyÓ#QÓRˆà×Ñ˜xÐ)?Õ@r   c                 óú   — | j                   j                  | j                  «       | j                   j                  t	        d| j                  «      ddi«      }| j                  |d«       | j                  |d«       y )Nr_   ÚtitleÚ rd   zThis field is required.)r2   r3   r   r6   r   ÚassertContainsrA   s     r   Ú,test_create_page_renders_actual_field_errorsz?ArticleCreateTests.test_create_page_renders_actual_field_errors]   sd   € Ø�‰×Ñ §	¡	Ô*à—;‘;×#Ñ#Ô$5Ð6FÈÏ	É	Ó$RÐU\Ð^`ÐTaÓbˆà×Ñ˜HÐ&<Ô=Ø×Ñ˜HÐ&?Õ@r   c                 óä  — | j                   j                  | j                  «       | j                   j                  t	        d| j                  dg¬«      dddœ«      }| j                  |j                  d«       t        j                  j                  | j                  dd¬	«      }| j                  |j                  d
   dg«       | j                  t        j                  j                  «       «       y )NÚrecord_autosaveÚarticler   zWork in progresszUnfinished body©rh   Úcontentr0   Ú__new__)r   Úrecord_typeÚ
record_keyrh   )r2   r3   r   r6   r   r8   r9   r   r&   rQ   ÚdataÚassertFalser   Úexists)r)   r>   Údrafts      r   Ú8test_autosave_stores_an_incomplete_new_record_as_a_draftzKArticleCreateTests.test_autosave_stores_an_incomplete_new_record_as_a_drafte   sÀ   € Ø�‰×Ñ §	¡	Ô*à—;‘;×#Ñ#ÜÐ/°·±À)ÀÔMØ(Ð5FÑGó
ˆð
 	×Ñ˜×-Ñ-¨sÔ3Ü×#Ñ#×'Ñ'Ø—‘¨	¸ið (ó 
ˆð 	×Ñ˜Ÿ™ GÑ,Ð/AÐ.BÔCØ×ÑœŸ™×/Ñ/Ó1Õ2r   c                 óz  — t         j                  j                  | j                  ddgdgdœ¬«       | j                  j                  | j                  «       | j                  j                  t        d| j                  «      «      }| j                  |d«       | j                  |d«       | j                  |d«       y )	Nrn   zRestored titlezRestored bodyro   ©r   rr   rt   r_   zvalue="Restored title"zDraft restored)	r   r&   Úcreater   r2   r3   rQ   r   rj   rA   s     r   Ú)test_create_page_restores_the_users_draftz<ArticleCreateTests.test_create_page_restores_the_users_draftt   sœ   € Ü×Ñ×"Ñ"Ø—‘Ø!Ø,Ð-¸?Ð:KÑLð 	#ô 	
ð
 	�‰×Ñ §	¡	Ô*à—;‘;—?‘?Ô#4Ð5EÀtÇyÁyÓ#QÓRˆà×Ñ˜HÐ&>Ô?Ø×Ñ˜H oÔ6Ø×Ñ˜HÐ&6Õ7r   c                 ó  — t         j                  j                  | j                  dddgi¬«       | j                  j                  | j                  «       | j                  j                  t        d| j                  «      dddd	œ«       | j                  t        j                  j                  d¬
«      j                  «       «       | j                  t         j                  j                  | j                  ¬«      j                  «       «       y )Nrn   rh   zDraft titlerz   r_   úPublished titleúPublished bodyÚWork)rh   rp   Únew_category©rh   ©r   )r   r&   r{   r   r2   r3   r6   r   r:   r   Úfilterrv   ru   r(   s    r   Ú,test_final_save_removes_the_new_record_draftz?ArticleCreateTests.test_final_save_removes_the_new_record_draft‚   sÐ   € Ü×Ñ×"Ñ"Ø—‘Ø!Ø˜M˜?Ð+ð 	#ô 	
ð
 	�‰×Ñ §	¡	Ô*à�‰×ÑÔ*Ð+;¸T¿Y¹YÓGØ&Ø'Ø"ñJ
ô 	ð 	�‰œŸ™×.Ñ.Ð5FÐ.ÓG×NÑNÓPÔQØ×Ñœ×,Ñ,×3Ñ3¸¿¹Ð3ÓC×JÑJÓLÕMr   c                 ó(  — t         j                  j                  d¬«      }t        j                  j	                  |d¬«      }t
        j                  j	                  |dd|¬«      }| j                  j                  | j                  «       | j                  j                  t        d| j                  d	g¬
«      |j                  ddœ«      }| j                  |j                  d«       | j                  t        j                  j!                  «       «       y )Nzother-writer©r   ÚPrivate©r   r   zPrivate articlezPrivate body©r   rh   rp   Úcategoryrm   rn   r   zAttempted overwrite)Úrecord_slugrh   é”  )r   r&   r'   r   r{   r   r2   r3   r   r6   r   Úslugr8   r9   ru   r   rv   )r)   Ú
other_userr‹   rn   r>   s        r   Ú0test_autosave_cannot_modify_another_users_recordzCArticleCreateTests.test_autosave_cannot_modify_another_users_record“   sÚ   € Ü—\‘\×-Ñ-°~Ð-ÓFˆ
Ü"×*Ñ*×1Ñ1°zÈ	Ð1ÓRˆÜ—/‘/×(Ñ(ØØ#Ø"Øð	 )ó 
ˆð 	�‰×Ñ §	¡	Ô*à—;‘;×#Ñ#ÜÐ/°·±À)ÀÔMØ#ŸL™LÐ3HÑIó
ˆð
 	×Ñ˜×-Ñ-¨sÔ3Ø×Ñœ×,Ñ,×3Ñ3Ó5Õ6r   c           	      óÌ  — t         j                  j                  | j                  d¬«      }t        j                  j                  | j                  dd|¬«      }| j
                  j                  | j                  «       | j
                  j                  t        d| j                  dg¬«      |j                  d	d
t        |j                  «      dœ«      }| j                  |j                  d«       |j                  «        | j                  |j                  d«       t         j                  j#                  |j                  ¬«      }| j                  |j$                  d   d	g«       y )Nr€   r‰   r~   r   rŠ   rm   rn   r   z
Draft editz
Draft body)rŒ   rh   rp   r‹   r0   )rs   rh   )r   r&   r{   r   r   r2   r3   r6   r   rŽ   ÚstrÚpkr8   r9   Úrefresh_from_dbrh   r   rQ   rt   )r)   r‹   rn   r>   rw   s        r   Ú:test_edit_autosave_does_not_change_record_until_final_savezMArticleCreateTests.test_edit_autosave_does_not_change_record_until_final_save¦   s  € Ü"×*Ñ*×1Ñ1°t·y±yÀvÐ1ÓNˆÜ—/‘/×(Ñ(Ø—‘Ø#Ø$Øð	 )ó 
ˆð 	�‰×Ñ §	¡	Ô*à—;‘;×#Ñ#ÜÐ/°·±À)ÀÔMà&Ÿ|™|Ø%Ø'Ü §¡Ó,ñ	ó
ˆð 	×Ñ˜×-Ñ-¨sÔ3Ø×ÑÔ!Ø×Ñ˜Ÿ™Ð(9Ô:Ü×#Ñ#×'Ñ'°7·<±<Ð'Ó@ˆØ×Ñ˜Ÿ™ GÑ,¨|¨nÕ=r   c           	      óè  — | j                   j                  | j                  «       | j                   j                  t	        d| j                  «      ddddddœ«      }t
        j                  j                  d¬«      }| j                  |t	        d	| j                  |j                  g¬
«      «       | j                  |j                  | j                  «       | j                  |j                  j                  d«       | j                  |j                  j                  | j                  «       | j                  |j                  j                  d«       | j                  |j                  j                  | j                  «       | j                  |j                  j!                  dd¬«      ddg«       | j#                  |j                  j%                  | j                  ¬«      j'                  «       «       y )Nr_   zUseful articleúArticle bodyr€   ÚPlanningzImportant, Weekly)rh   rp   r�   Únew_subcategoryÚnew_tagsr‚   Úarticle_singler   r   T)ÚflatÚ	ImportantÚWeeklyrƒ   )r2   r3   r   r6   r   r   r&   rQ   ra   rŽ   r8   r‹   r   ÚsubcategoryÚassertCountEqualÚtagsÚvalues_listru   Úexcluderv   )r)   r>   rn   s      r   Ú+test_creates_record_and_new_taxonomy_valuesz>ArticleCreateTests.test_creates_record_and_new_taxonomy_valuesÀ   sz  € Ø�‰×Ñ §	¡	Ô*Ø—;‘;×#Ñ#Ô$5Ð6FÈÏ	É	Ó$RØ%Ø%Ø"Ø)Ø+ñU
ó ˆô —/‘/×%Ñ%Ð,<Ð%Ó=ˆØ×Ñ˜XÔ'8Ð9IÈ4Ï9É9Ð\c×\hÑ\hÐ[iÔ'jÔkØ×Ñ˜Ÿ™ t§y¡yÔ1Ø×Ñ˜×)Ñ)×.Ñ.°Ô7Ø×Ñ˜×)Ñ)×.Ñ.°·	±	Ô:Ø×Ñ˜×,Ñ,×1Ñ1°:Ô>Ø×Ñ˜×,Ñ,×1Ñ1°4·9±9Ô=Ø×Ñ˜gŸl™l×6Ñ6°vÀDÐ6ÓIÈKÐYaÐKbÔcØ×Ñ˜Ÿ™×-Ñ-°4·9±9Ð-Ó=×DÑDÓFÕGr   c                 óÞ  — t         j                  j                  d¬«      }t        j                  j                  d¬«      }t	        dd|j
                  ddœ¬«      }| j                  |j                  «       |j                  «       |j                  «       }| j                  |j                  j                  «       |«       | j                  t        j                  j                  «       d	«       y )
Nr€   ©r   r�   zAnother articleÚBodyÚ	important)rh   rp   r‹   rš   ©rt   r   )r   r&   r{   r   r   r“   r:   Úis_validÚerrorsÚsaver8   r¡   rQ   Úcount)r)   r‹   ÚtagÚformrn   s        r   Ú.test_reuses_existing_values_case_insensitivelyzAArticleCreateTests.test_reuses_existing_values_case_insensitivelyÔ   s´   € Ü"×*Ñ*×1Ñ1°vÐ1Ó>ˆÜ× Ñ ×'Ñ'¨[Ð'Ó9ˆÜØ&ØØ Ÿ™Ø#ñ	!
ô ˆð 	�‰˜Ÿ™›¨¯©Ô5Ø—)‘)“+ˆØ×Ñ˜Ÿ™×)Ñ)Ó+¨SÔ1Ø×Ñœ×+Ñ+×1Ñ1Ó3°QÕ7r   c                 óò  — t         j                  j                  d¬«      }t        j                  j                  d¬«      }t        j                  j                  d¬«      }t	        dd|j
                  |j
                  |j
                  gdœ¬«      }| j                  |j                  «       |j                  «       |j                  «       }| j                  |j                  j                  «       ||g«       y )	Nr€   r¦   r�   Ú	ReferenceúTagged articler§   )rh   rp   r‹   r¡   r©   )r   r&   r{   r   r   r“   r:   rª   r«   r¬   r    r¡   Úall)r)   r‹   Ú	first_tagÚ
second_tagr¯   rn   s         r   Útest_selects_existing_tagsz-ArticleCreateTests.test_selects_existing_tagsã   sÀ   € Ü"×*Ñ*×1Ñ1°vÐ1Ó>ˆÜ×&Ñ&×-Ñ-°;Ð-Ó?ˆ	Ü×'Ñ'×.Ñ.°KÐ.Ó@ˆ
ÜØ%ØØ Ÿ™Ø—\‘\ :§=¡=Ð1ñ	!
ô ˆð 	�‰˜Ÿ™›¨¯©Ô5Ø—)‘)“+ˆØ×Ñ˜gŸl™l×.Ñ.Ó0°9¸jÐ2IÕJr   c                 ó  — t         j                  j                  d¬«       t         j                  j                  d¬«       t        t	        «       d   «      }| j                  d|«       | j                  d|«       | j                  d|«       y )Nr�   r¦   r²   r¡   ztype="checkbox")r   r&   r{   r’   r   rL   )r)   Úrendered_tagss     r   Ú<test_existing_tags_are_rendered_as_touch_friendly_checkboxeszOArticleCreateTests.test_existing_tags_are_rendered_as_touch_friendly_checkboxesò   sl   € Ü×Ñ×!Ñ! {Ð!Ô3Ü×Ñ×!Ñ! {Ð!Ô3äœK›M¨&Ñ1Ó2ˆà�‰Ð'¨Ô7Ø�‰�k =Ô1Ø�‰�k =Õ1r   c                 ó¬  — t         j                  j                  d¬«      }t        j                  j	                  | j
                  d¬«       t        j                  j	                  |d¬«       t        j                  j	                  | j
                  d¬«       t        j                  j	                  |d¬«       | j                  j                  | j
                  «       | j                  j                  t        d| j
                  «      «      }| j                  |d«       | j                  |d«       | j                  |d«       | j                  |d«       y )	Nztaxonomy-otherr‡   zMy categoryr‰   zOther categoryzMy tagz	Other tagr_   )r   r&   r'   r   r{   r   r   r2   r3   rQ   r   rj   re   )r)   r�   r>   s      r   Ú8test_create_form_only_shows_the_logged_in_users_taxonomyzKArticleCreateTests.test_create_form_only_shows_the_logged_in_users_taxonomyü   sý   € Ü—\‘\×-Ñ-Ð7GÐ-ÓHˆ
Ü×Ñ×&Ñ&¨D¯I©I¸MÐ&ÔJÜ×Ñ×&Ñ&¨JÐ=MÐ&ÔNÜ×Ñ×!Ñ! t§y¡y°xÐ!Ô@Ü×Ñ×!Ñ! z¸Ð!ÔDØ�‰×Ñ §	¡	Ô*à—;‘;—?‘?Ô#4Ð5EÀtÇyÁyÓ#QÓRˆà×Ñ˜H mÔ4Ø×Ñ˜H hÔ/Ø×Ñ˜xÐ)9Ô:Ø×Ñ˜x¨Õ5r   c                 óþ  — t         j                  j                  d¬«      }t        j                  j	                  |d¬«       t
        j                  j	                  |d¬«       | j                  j                  | j                  «       | j                  j                  t        d| j                  «      ddddd	œ«      }t        j                  j                  d¬
«      }| j                  |t        d| j                  |j                  g¬«      «       | j                  |j                   j                  | j                  «       | j                  |j"                  j                  «       j                  | j                  «       y )Nzsame-name-otherr‡   r€   r‰   r�   r_   z$My independently categorized articler§   )rh   rp   r�   rš   r‚   r›   r   )r   r&   r'   r   r{   r   r2   r3   r   r6   r   r   rQ   ra   rŽ   r8   r‹   r¡   )r)   r�   r>   rn   s       r   Ú1test_users_can_create_taxonomy_with_the_same_namezDArticleCreateTests.test_users_can_create_taxonomy_with_the_same_name  s!  € Ü—\‘\×-Ñ-Ð7HÐ-ÓIˆ
Ü×Ñ×&Ñ&¨J¸VÐ&ÔDÜ×Ñ×!Ñ! z¸Ð!ÔDØ�‰×Ñ §	¡	Ô*à—;‘;×#Ñ#Ô$5Ð6FÈÏ	É	Ó$RØ;ØØ"Ø#ñ	U
ó ˆô —/‘/×%Ñ%Ð,RÐ%ÓSˆØ×Ñ˜XÔ'8Ð9IÈ4Ï9É9Ð\c×\hÑ\hÐ[iÔ'jÔkØ×Ñ˜×)Ñ)×.Ñ.°·	±	Ô:Ø×Ñ˜Ÿ™×)Ñ)Ó+×0Ñ0°$·)±)Õ<r   c                 ó†  — t         j                  j                  d¬«      }t         j                  j                  d¬«      }t        j                  j                  |d¬«      }t	        dd|j
                  |j
                  dœ¬	«      }| j                  |j                  «       «       | j                  d
|j                  «       y )Nr€   r¦   ÚPersonalÚHealth)r‹   r   zInvalid articler§   )rh   rp   r‹   rŸ   r©   rŸ   )
r   r&   r{   r   r   r“   ru   rª   rL   r«   )r)   Úselected_categoryÚother_categoryrŸ   r¯   s        r   Ú.test_rejects_subcategory_from_another_categoryzAArticleCreateTests.test_rejects_subcategory_from_another_category  s¥   € Ü+×3Ñ3×:Ñ:ÀÐ:ÓGÐÜ(×0Ñ0×7Ñ7¸ZÐ7ÓHˆÜ(×0Ñ0×7Ñ7Ø#Øð 8ó 
ˆô Ø&ØØ)×,Ñ,Ø&Ÿ>™>ñ	!
ô ˆð 	×Ñ˜Ÿ™›Ô)Ø�‰�m T§[¡[Õ1r   N)rT   rU   rV   r*   rb   rf   rk   rx   r|   r…   r�   r•   r¤   r°   r·   rº   r¼   r¾   rÄ   rY   r   r   r[   r[   K   sX   „ òZò
òAòAò3ò8òNò"7ò&>ò4Hò(8òKò2ò6ò=ó$2r   r[   c                   óV   — e Zd Zd„ Zd„ Zd„ Z ed«      d„ «       Z ed«      d„ «       Zy)ÚRegistrationTestsc                 ó  — | j                   j                  t        d«      «      }| j                  |j                  d«       | j                  |d«       | j                  |d«       | j                  |t        d«      «       y )NÚregisterr0   zname="viewport"zclass="register-grid"Úgoogle_login)r2   rQ   r   r8   r9   rj   rA   s     r   Ú/test_registration_page_is_public_and_responsivezARegistrationTests.test_registration_page_is_public_and_responsive0  sf   € Ø—;‘;—?‘?¤7¨:Ó#6Ó7ˆà×Ñ˜×-Ñ-¨sÔ3Ø×Ñ˜HÐ&7Ô8Ø×Ñ˜HÐ&=Ô>Ø×Ñ˜H¤g¨nÓ&=Õ>r   c           
      óÆ  — | j                   j                  t        d«      dddddddœ«      }t        j                  j                  d¬«      }| j                  |j                  d«       | j                  |j                  d«       | j                  |j                  d	«       | j                  d
| j                   j                  «       | j                  |t        d«      «       y )NrÈ   ÚAdaÚLovelaceÚadazADA@example.comúA-complex-password-1865©Ú
first_nameÚ	last_namer   ÚemailÚ	password1Ú	password2r‡   zada@example.comÚ_auth_user_idrP   )r2   r6   r   r   r&   rQ   r8   rÑ   rÒ   rÓ   ÚassertNotInÚsessionra   )r)   r>   r   s      r   Ú>test_creates_account_and_redirects_to_login_without_signing_inzPRegistrationTests.test_creates_account_and_redirects_to_login_without_signing_in8  s¹   € Ø—;‘;×#Ñ#¤G¨JÓ$7ØØ#ØØ&Ø2Ø2ñ:
ó ˆô �|‰|×Ñ¨ÐÓ/ˆØ×Ñ˜Ÿ™¨%Ô0Ø×Ñ˜Ÿ™¨Ô4Ø×Ñ˜Ÿ™Ð%6Ô7Ø×Ñ˜¨$¯+©+×*=Ñ*=Ô>Ø×Ñ˜X¤w¨wÓ'7Õ8r   c           	      óä   — t         j                  j                  ddd¬«       t        ddddddd	œ¬
«      }| j	                  |j                  «       «       | j                  d|j                  «       y )NÚexistingúperson@example.comrÏ   ©r   rÓ   r$   ÚNewÚPersonz
new-personzPERSON@example.comrÐ   r©   rÓ   )r   r&   r'   r   ru   rª   rL   r«   )r)   r¯   s     r   Ú0test_rejects_an_email_that_is_already_registeredzBRegistrationTests.test_rejects_an_email_that_is_already_registeredI  sm   € Ü�‰× Ñ ØØ&Ø.ð 	!ô 	
ô
  ØØ!Ø$Ø)Ø2Ø2ñ&
ô ˆð 	×Ñ˜Ÿ™›Ô)Ø�‰�g˜tŸ{™{Õ+r   zcore.views.fetch_profilec                 ó(  — dddddœ|_         | j                  j                  }d|d<   |j                  «        | j                  j	                  t        d«      dd	d
œ«      }t        j                  j	                  d¬«      }| j                  |j                  d«       | j                  |j                  «       «       | j                  | j                  j                  d   t        |j                  «      «       | j                  |t        d|«      «       y )Nzgrace@example.comTÚGraceÚHopper)rÓ   Úemail_verifiedÚ
given_nameÚfamily_namezsecure-stateÚgoogle_oauth_stateÚgoogle_callbackúgoogle-code©ÚstateÚcode)rÓ   rÖ   Úindex)Úreturn_valuer2   rØ   r¬   rQ   r   r   r&   r8   rÑ   ru   Úhas_usable_passwordr’   r“   ra   r   )r)   Úfetch_profilerØ   r>   r   s        r   Ú.test_google_callback_creates_and_signs_in_userz@RegistrationTests.test_google_callback_creates_and_signs_in_user[  sé   € ð )Ø"Ø!Ø#ñ	&
ˆÔ"ð —+‘+×%Ñ%ˆØ(6ˆÐ$Ñ%Ø�‰Œà—;‘;—?‘?¤7Ð+<Ó#=Ø#Ø!ñ@
ó ˆô
 �|‰|×ÑÐ&9ÐÓ:ˆØ×Ñ˜Ÿ™¨'Ô2Ø×Ñ˜×1Ñ1Ó3Ô4Ø×Ñ˜Ÿ™×,Ñ,¨_Ñ=¼sÀ4Ç7Á7»|ÔLØ×Ñ˜XÔ'8¸À$Ó'GÕHr   c                 ó   — | j                   j                  }d|d<   |j                  «        | j                   j                  t	        d«      dddœ«      }|j                  «        | j                  |t	        d«      «       y )Nzexpected-staterç   rè   zwrong-stateré   rê   rÈ   )r2   rØ   r¬   rQ   r   Úassert_not_calledra   )r)   rð   rØ   r>   s       r   Ú-test_google_callback_rejects_an_invalid_statez?RegistrationTests.test_google_callback_rejects_an_invalid_stater  sn   € à—+‘+×%Ñ%ˆØ(8ˆÐ$Ñ%Ø�‰Œà—;‘;—?‘?¤7Ð+<Ó#=Ø"Ø!ñ@
ó ˆð
 	×'Ñ'Ô)Ø×Ñ˜X¤w¨zÓ':Õ;r   N)	rT   rU   rV   rÊ   rÙ   rà   r	   rñ   rô   rY   r   r   rÆ   rÆ   /  sG   „ ò?ò9ò",ñ$ Ð%Ó&ñIó 'ðIñ, Ð%Ó&ñ<ó 'ñ<r   rÆ   c                   óD   — e Zd Zd„ Zd„ Z edg¬«      d„ «       Zd„ Zd„ Zy)	Ú
LoginTestsc                 óR   — t         j                  j                  ddd¬«      | _        y )Nú
email-userrÜ   r"   rÝ   r%   r(   s    r   r*   zLoginTests.setUp‚  s&   € Ü—L‘L×,Ñ,Ø!Ø&Ø$ð -ó 
ˆ�	r   c                 ó,  — | j                   j                  t        d«      dddœ«      }| j                  | j                   j                  d   t        | j                  j                  «      «       | j                  |t        d| j                  «      «       y )NrP   zPERSON@EXAMPLE.COMr"   r#   rÖ   rí   ©
r2   r6   r   r8   rØ   r’   r   r“   ra   r   rA   s     r   Ú+test_signs_in_with_email_case_insensitivelyz6LoginTests.test_signs_in_with_email_case_insensitively‰  sr   € Ø—;‘;×#Ñ#¤G¨GÓ$4Ø,Ø'ñ7
ó ˆð
 	×Ñ˜Ÿ™×,Ñ,¨_Ñ=¼sÀ4Ç9Á9Ç<Á<Ó?PÔQØ×Ñ˜XÔ'8¸À$Ç)Á)Ó'LÕMr   z)django.contrib.auth.backends.ModelBackend)ÚAUTHENTICATION_BACKENDSc                 ó,  — | j                   j                  t        d«      dddœ«      }| j                  | j                   j                  d   t        | j                  j                  «      «       | j                  |t        d| j                  «      «       y )NrP   rÜ   r"   r#   rÖ   rí   rú   rA   s     r   ÚFtest_email_login_is_resolved_before_calling_the_authentication_backendzQLoginTests.test_email_login_is_resolved_before_calling_the_authentication_backend’  st   € ð —;‘;×#Ñ#¤G¨GÓ$4Ø,Ø'ñ7
ó ˆð
 	×Ñ˜Ÿ™×,Ñ,¨_Ñ=¼sÀ4Ç9Á9Ç<Á<Ó?PÔQØ×Ñ˜XÔ'8¸À$Ç)Á)Ó'LÕMr   c                 ó,  — | j                   j                  t        d«      dddœ«      }| j                  | j                   j                  d   t        | j                  j                  «      «       | j                  |t        d| j                  «      «       y )NrP   rø   r"   r#   rÖ   rí   rú   rA   s     r   Ú!test_still_signs_in_with_usernamez,LoginTests.test_still_signs_in_with_usernamež  sr   € Ø—;‘;×#Ñ#¤G¨GÓ$4Ø$Ø'ñ7
ó ˆð
 	×Ñ˜Ÿ™×,Ñ,¨_Ñ=¼sÀ4Ç9Á9Ç<Á<Ó?PÔQØ×Ñ˜XÔ'8¸À$Ç)Á)Ó'LÕMr   c                 óp   — | j                   j                  t        d«      «      }| j                  |d«       y )NrP   zUsername or email)r2   rQ   r   rj   rA   s     r   Ú0test_login_page_explains_that_email_is_supportedz;LoginTests.test_login_page_explains_that_email_is_supported§  s*   € Ø—;‘;—?‘?¤7¨7Ó#3Ó4ˆà×Ñ˜HÐ&9Õ:r   N)	rT   rU   rV   r*   rû   r   rþ   r   r  rY   r   r   rö   rö   �  s9   „ ò
òNñ Ø!LÐ MôñNóðNòNó;r   rö   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚRecordSearchTestsc                 óš   — t         j                  j                  dd¬«      | _        | j                  j                  | j                  «       y )NÚsearcherr"   r#   )r   r&   r'   r   r2   r3   r(   s    r   r*   zRecordSearchTests.setUp®  s3   € Ü—L‘L×,Ñ,°jÈ?Ð,Ó[ˆŒ	Ø�‰×Ñ §	¡	Õ*r   c                 ó`  — t         j                  j                  | j                  ddd¬«      }| j                  j                  t        d| j                  «      ddi«      }| j                  ||j                  «       | j                  |t        d| j                  |j                  g¬	«      «       y )
NzCompetitor growth planzA market threatúExpand carefully©r   rh   ÚthreatsÚfinalized_strategyÚrecord_searchÚqÚ
competitorÚstrategy_singler   )
r   r&   r{   r   r2   rQ   r   rj   rh   rŽ   ©r)   Ústrategyr>   s      r   ÚKtest_searches_titles_across_post_types_and_links_to_the_correct_single_viewz]RecordSearchTests.test_searches_titles_across_post_types_and_links_to_the_correct_single_view²  s“   € Ü×#Ñ#×*Ñ*Ø—‘Ø*Ø%Ø1ð	 +ó 
ˆð —;‘;—?‘?Ô#4°_ÀdÇiÁiÓ#PÐSVÐXdÐReÓfˆà×Ñ˜H h§n¡nÔ5Ø×Ñ˜HÔ&7Ð8IÈ4Ï9É9Ð\d×\iÑ\iÐ[jÔ&kÕlr   c                 ó`  — t         j                  j                  | j                  ddd¬«      }| j                  j                  t        d| j                  «      ddi«      }| j                  ||j                  «       | j                  |t        d| j                  |j                  g¬	«      «       y )
NzGrowth planz A uniquely searchable competitorr  r	  r  r  r  r  r   )
r   r&   r{   r   r2   rQ   r   re   rh   rŽ   r  s      r   Ú!test_does_not_search_post_contentz3RecordSearchTests.test_does_not_search_post_content¿  s“   € Ü×#Ñ#×*Ñ*Ø—‘ØØ6Ø1ð	 +ó 
ˆð —;‘;—?‘?Ô#4°_ÀdÇiÁiÓ#PÐSVÐXdÐReÓfˆà×Ñ˜x¨¯©Ô8Ø×Ñ˜xÔ):Ð;LÈdÏiÉiÐ_g×_lÑ_lÐ^mÔ)nÕor   c                 ó¦  — t         j                  j                  dd¬«      }t        j                  j	                  | j
                  ddd¬«      }t        j                  j	                  |ddd	¬«       | j                  j                  t        d
| j
                  «      ddi«      }| j                  ||j                  «       | j                  |d«       y )NÚotherr"   r#   zPrivate growth planri   z
Own recordr	  zPrivate competitor planzAnother user's recordr  r  Úprivate)r   r&   r'   r   r{   r   r2   rQ   r   rj   rh   re   )r)   r�   Úown_strategyr>   s       r   Ú4test_search_only_returns_the_logged_in_users_recordszFRecordSearchTests.test_search_only_returns_the_logged_in_users_recordsÌ  s½   € Ü—\‘\×-Ñ-°wÈÐ-ÓYˆ
Ü×'Ñ'×.Ñ.Ø—‘Ø'ØØ+ð	 /ó 
ˆô 	×Ñ×ÑØØ+ØØ6ð	 	 ô 	
ð —;‘;—?‘?Ô#4°_ÀdÇiÁiÓ#PÐSVÐXaÐRbÓcˆà×Ñ˜H l×&8Ñ&8Ô9Ø×Ñ˜xÐ)BÕCr   N)rT   rU   rV   r*   r  r  r  rY   r   r   r  r  ­  s   „ ò+òmòpóDr   r  c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚRecordOwnershipTestsc                 ó6  — t         j                  j                  dd¬«      | _        t         j                  j                  dd¬«      | _        t
        j                  j                  | j                  d¬«      | _        t        j                  j                  | j                  dd| j                  ¬	«      | _	        t        j                  j                  | j                  d
d| j                  ¬	«      | _
        | j                  j                  | j                  «       y )NÚownerr"   r#   zother-ownerrˆ   r‰   z
My articleÚMinerŠ   zSomeone else's articleÚTheirs)r   r&   r'   r   r�   r   r{   r‹   r   Úown_articleÚother_articler2   r3   r(   s    r   r*   zRecordOwnershipTests.setUpâ  sÔ   € Ü—L‘L×,Ñ,°gÈÐ,ÓXˆŒ	ÜŸ,™,×2Ñ2¸MÐTcÐ2ÓdˆŒÜ'×/Ñ/×6Ñ6¸D¿I¹IÈIÐ6ÓVˆŒÜ"Ÿ?™?×1Ñ1Ø—‘ØØØ—]‘]ð	 2ó 
ˆÔô %Ÿ_™_×3Ñ3Ø—‘Ø*ØØ—]‘]ð	 4ó 
ˆÔð 	�‰×Ñ §	¡	Õ*r   c                 óú   — | j                   j                  t        d| j                  «      «      }| j	                  || j
                  j                  «       | j                  || j                  j                  «       y )Nrí   )	r2   rQ   r   r   rj   r   rh   re   r!  rA   s     r   Ú1test_index_only_shows_the_logged_in_users_recordszFRecordOwnershipTests.test_index_only_shows_the_logged_in_users_recordsô  sX   € Ø—;‘;—?‘?Ô#4°W¸d¿i¹iÓ#HÓIˆà×Ñ˜H d×&6Ñ&6×&<Ñ&<Ô=Ø×Ñ˜x¨×);Ñ);×)AÑ)AÕBr   c                 óÈ   — | j                   j                  t        d| j                  | j                  j
                  g¬«      «      }| j                  |j                  d«       y )Nr›   r   r�   )r2   rQ   r   r   r!  rŽ   r8   r9   rA   s     r   Ú%test_cannot_view_another_users_recordz:RecordOwnershipTests.test_cannot_view_another_users_recordú  sL   € Ø—;‘;—?‘?ÜÐ.°·	±	À×ASÑAS×AXÑAXÐ@YÔZó
ˆð 	×Ñ˜×-Ñ-¨sÕ3r   c                 óš   — | j                   j                  t        d| j                  «      «      }| j	                  |j
                  d«       y )Nrí   r�   )r2   rQ   r   r�   r8   r9   rA   s     r   Ú+test_cannot_use_another_users_workspace_urlz@RecordOwnershipTests.test_cannot_use_another_users_workspace_url  s6   € Ø—;‘;—?‘?Ô#4°W¸d¿o¹oÓ#NÓOˆà×Ñ˜×-Ñ-¨sÕ3r   c                 óÚ  — t        d| j                  | j                  j                  g¬«      }| j	                  | j
                  j                  |«      j                  d«       | j	                  | j
                  j                  |ddi«      j                  d«       | j                  t        j                  j                  | j                  j                  ¬«      j                  «       «       y )NÚarticle_editr   r�   ÚactionÚdelete©r“   )r   r   r!  rŽ   r8   r2   rQ   r9   r6   r:   r   r&   r„   r“   rv   )r)   r1   s     r   Ú/test_cannot_edit_or_delete_another_users_recordzDRecordOwnershipTests.test_cannot_edit_or_delete_another_users_record  s«   € Ü °·	±	À×ASÑAS×AXÑAXÐ@YÔZˆà×Ñ˜Ÿ™Ÿ™¨Ó-×9Ñ9¸3Ô?Ø×ÑØ�K‰K×Ñ˜S 8¨XÐ"6Ó7×CÑCØô	
ð 	�‰œŸ™×.Ñ.°$×2DÑ2D×2GÑ2GÐ.ÓH×OÑOÓQÕRr   c                 ó  — t         j                  j                  d¬«      }t        j                  j                  | j                  dd|¬«      }t
        j                  j                  | j                  dd¬«      }| j                  j                  t        d	| j                  «      d
di«      }| j                  |t        d| j                  |j                  g¬«      «       | j                  |t        d| j                  |j                  g¬«      «       | j                  |j                  j                  |j                  j                  «       «      |j                  j                  |j                  j                  «       «      «       y )Nr€   r¦   zEarlier shared recordr—   rŠ   zLater shared recordzStrategy body)r   rh   r  r  r  Úsharedr›   r   r  )r   r&   r{   r   r   r   r2   rQ   r   rj   rŽ   Ú
assertLessrp   rí   rh   Úencode)r)   r‹   rn   r  r>   s        r   Ú7test_combines_post_types_in_reverse_chronological_orderzLRecordOwnershipTests.test_combines_post_types_in_reverse_chronological_order  s7  € Ü"×*Ñ*×1Ñ1°vÐ1Ó>ˆÜ—/‘/×(Ñ(Ø—‘Ø)Ø"Øð	 )ó 
ˆô ×#Ñ#×*Ñ*Ø—‘Ø'Ø.ð +ó 
ˆð —;‘;—?‘?Ô#4°_ÀdÇiÁiÓ#PÐSVÐX`ÐRaÓbˆà×Ñ˜HÔ&7Ð8HÈ$Ï)É)Ð[b×[gÑ[gÐZhÔ&iÔjØ×Ñ˜HÔ&7Ð8IÈ4Ï9É9Ð\d×\iÑ\iÐ[jÔ&kÔlØ�‰Ø×Ñ×"Ñ" 8§>¡>×#8Ñ#8Ó#:Ó;Ø×Ñ×"Ñ" 7§=¡=×#7Ñ#7Ó#9Ó:õ	
r   c           	      ó  — | j                   j                  «        | j                   j                  t        d| j                  «      ddi«      }| j                  |t        d«      › dt        d| j                  «      › d�«       y )Nr  r  ÚanythingrP   r`   z%3Fq%3Danything)r2   ÚlogoutrQ   r   r   ra   r   rA   s     r   Útest_search_requires_loginz/RecordOwnershipTests.test_search_requires_login'  sn   € Ø�‰×ÑÔà—;‘;—?‘?Ô#4°_ÀdÇiÁiÓ#PÐSVÐXbÐRcÓdˆà×ÑØÜ�wÓÐ  Ô'8¸È$Ï)É)Ó'TÐ&UÐUdÐeõ	
r   N)
rT   rU   rV   r*   r#  r%  r'  r-  r2  r6  rY   r   r   r  r  á  s'   „ ò+ò$Cò4ò4ò
Sò
ó.
r   r  c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚRecordUpdateTestsc                 ó(  — t         j                  j                  dd¬«      | _        t        j                  j                  | j                  d¬«      | _        t        j                  j                  | j                  dd| j                  ¬«      | _        y )	NÚeditorr"   r#   r€   r‰   zOriginal titleúOriginal bodyrŠ   ©	r   r&   r'   r   r   r{   r‹   r   rn   r(   s    r   r*   zRecordUpdateTests.setUp3  sm   € Ü—L‘L×,Ñ,°hÈÐ,ÓYˆŒ	Ü'×/Ñ/×6Ñ6¸D¿I¹IÈFÐ6ÓSˆŒÜ—‘×-Ñ-Ø—‘Ø"Ø#Ø—]‘]ð	 .ó 
ˆ�r   c                 óÔ   — t        d| j                  | j                  j                  g¬«      }| j                  j                  |«      }| j                  |t        d«      › d|› �«       y )Nr)  r   rP   r`   )r   r   rn   rŽ   r2   rQ   ra   r   )r)   Úedit_urlr>   s      r   Útest_edit_page_requires_loginz/RecordUpdateTests.test_edit_page_requires_login=  sT   € Ü$ ^°T·Y±YÀdÇlÁl×FWÑFWÐEXÔYˆà—;‘;—?‘? 8Ó,ˆà×Ñ˜X¬'°'Ó*:Ð);¸6À(ÀÐ'LÕMr   c                 óF  — | j                   j                  | j                  «       | j                   j                  t	        d| j                  | j
                  j                  g¬«      «      }| j                  |d«       | j                  |d«       | j                  |d«       y )Nr)  r   zvalue="Original title"r;  zDelete Article)r2   r3   r   rQ   r   rn   rŽ   rj   rA   s     r   Ú'test_edit_page_prefills_existing_recordz9RecordUpdateTests.test_edit_page_prefills_existing_recordD  sz   € Ø�‰×Ñ §	¡	Ô*à—;‘;—?‘?Ô#4°^ÀTÇYÁYÐVZ×VbÑVb×VgÑVgÐUhÔ#iÓjˆà×Ñ˜HÐ&>Ô?Ø×Ñ˜H oÔ6Ø×Ñ˜HÐ&6Õ7r   c                 óR  — | j                   j                  | j                  «       | j                   j                  t	        d| j                  | j
                  j                  g¬«      dd| j                  j                  dœ«      }| j
                  j                  «        | j                  | j
                  j                  d«       | j                  | j
                  j                  d«       | j                  |t	        d| j                  | j
                  j                  g¬«      «       y )Nr)  r   zUpdated titlezUpdated body©rh   rp   r‹   r›   )r2   r3   r   r6   r   rn   rŽ   r‹   r“   r”   r8   rh   rp   ra   rA   s     r   Ú0test_updates_record_and_redirects_to_single_pagezBRecordUpdateTests.test_updates_record_and_redirects_to_single_pageM  sÚ   € Ø�‰×Ñ §	¡	Ô*à—;‘;×#Ñ#Ô$5°nÀdÇiÁiÐW[×WcÑWc×WhÑWhÐViÔ$jØ$Ø%ØŸ™×(Ñ(ñm
ó ˆð 	�‰×$Ñ$Ô&Ø×Ñ˜Ÿ™×+Ñ+¨_Ô=Ø×Ñ˜Ÿ™×-Ñ-¨~Ô>Ø×ÑØÜÐ.°·	±	ÀÇÁ×ARÑARÐ@SÔTõ	
r   c                 óÎ  — | j                   j                  | j                  «       | j                   j                  t	        d| j                  | j
                  j                  g¬«      ddi«      }| j                  t        j                  j                  | j
                  j                  ¬«      j                  «       «       | j                  |t	        d| j                  «      «       y )Nr)  r   r*  r+  r,  rí   )r2   r3   r   r6   r   rn   rŽ   ru   r   r&   r„   r“   rv   ra   rA   s     r   Ú4test_deletes_record_with_post_and_redirects_to_indexzFRecordUpdateTests.test_deletes_record_with_post_and_redirects_to_index^  s¦   € Ø�‰×Ñ §	¡	Ô*à—;‘;×#Ñ#Ô$5°nÀdÇiÁiÐW[×WcÑWc×WhÑWhÐViÔ$jØ�hðm
ó ˆð 	×ÑœŸ™×/Ñ/°4·<±<·?±?Ð/ÓC×JÑJÓLÔMØ×Ñ˜XÔ'8¸À$Ç)Á)Ó'LÕMr   c                 ó.  — ddddddddœ}|j                  «       D ]`  \  }}| j                  |¬	«      5  d
|› d�}t        |d¬«      5 }| j                  d|› d�|j	                  «       «       d d d «       d d d «       Œb y # 1 sw Y   ŒxY w# 1 sw Y   ŒyxY w)Nr)  Újournal_editÚ	note_editÚcentralpoint_editÚstrategy_editÚdecision_editÚ	goal_edit)rn   ÚjournalÚnoteÚcentralpointr  ÚdecisionÚgoal©rr   zcore/templates/core/singles/z-single.htmlzutf-8)Úencodingz{% url 'z'' request.user.username article.slug %})ÚitemsrJ   ÚopenrL   Úread)r)   Úedit_routesrr   Ú
route_nameÚtemplate_pathÚtemplates         r   Ú,test_every_single_template_has_its_edit_linkz>RecordUpdateTests.test_every_single_template_has_its_edit_linkh  s¶   € à%Ø%ØØ/Ø'Ø'Øñ
ˆð (3×'8Ñ'8Ó':ò 	Ñ#ˆK˜Ø—‘¨+�Ó6ñ Ø">¸{¸mÈ<Ð X�Ü˜-°'Ô:ð ¸hØ—M‘MØ# J <Ð/WÐXØ Ÿ™›ô÷÷ð ñ	÷ð ú÷ð ús#   ³BÁ%A?Á,BÁ?BÂBÂB	N)	rT   rU   rV   r*   r?  rA  rD  rF  r\  rY   r   r   r8  r8  2  s"   „ ò
òNò8ò
ò"Nór   r8  c                   óv   — e Zd Zd„ Zdd„Zdd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTaxonomyPopupTestsc                 óæ   — t         j                  j                  dd¬«      | _        t         j                  j                  dd¬«      | _        | j
                  j                  | j                  «       y )Nztaxonomy-ownerr"   r#   ztaxonomy-other-owner)r   r&   r'   r   r�   r2   r3   r(   s    r   r*   zTaxonomyPopupTests.setUp~  s^   € Ü—L‘L×,Ñ,Ø%Ø$ð -ó 
ˆŒ	ô Ÿ,™,×2Ñ2Ø+Ø$ð 3ó 
ˆŒð 	�‰×Ñ §	¡	Õ*r   Nc                 ó<   — t        d|xs | j                  |g¬«      S )NÚtaxonomy_creater   ©r   r   ©r)   rr   r   s      r   Útaxonomy_urlzTaxonomyPopupTests.taxonomy_url‰  ó#   € Ü ØØÒ�D—I‘IØ�ô
ð 	
r   c                 ó<   — t        d|xs | j                  |g¬«      S )NÚtaxonomy_deleter   rb  rc  s      r   Útaxonomy_delete_urlz&TaxonomyPopupTests.taxonomy_delete_url�  re  r   c           	      ó"  — t        j                  «       D ]l  \  }}|\  }}}}| j                  |¬«      5  | j                  |j                  j                  | j                  dd¬«      j                  «       «       d d d «       Œn y # 1 sw Y   ŒyxY w)NrS  ÚUncategorizedÚuncategorized©r   r   rŽ   )r   rU  rJ   r:   r&   r„   r   rv   )r)   rr   Úmodels_for_typeÚ_Úcategory_models        r   Ú;test_sign_in_creates_default_category_for_every_record_typezNTaxonomyPopupTests.test_sign_in_creates_default_category_for_every_record_type—  s�   € Ü,;×,AÑ,AÓ,Cò 	Ñ(ˆK˜Ø&5Ñ#ˆAˆ~˜q !Ø—‘¨+�Ó6ñ Ø—‘ × 6Ñ 6× =Ñ =ØŸ™Ø(Ø(ð !>ó !÷ ‘&“(ô	÷ð ñ	÷ð ús   ´ABÂB	c                 óÔ  — t         j                  j                  | j                  d¬«       t	        | j                  ¬«      }| j
                  j                  t        d| j                  «      «      }| j                  |j                  d   j                  j                  «       j                  d«       | j                  |j                  d   j                  «       j                  d«       y )NÚAlphar‰   rƒ   rí   r‹   rk  Úarticle_categories)r   r&   r{   r   r   r2   rQ   r   r8   ÚfieldsÚquerysetÚfirstrŽ   Úcontext)r)   r¯   r>   s      r   Ú>test_uncategorized_is_the_first_category_in_forms_and_sidebarszQTaxonomyPopupTests.test_uncategorized_is_the_first_category_in_forms_and_sidebars¡  s®   € Ü×Ñ×&Ñ&¨D¯I©I¸GÐ&ÔDä §	¡	Ô*ˆØ—;‘;—?‘?Ô#4°W¸d¿i¹iÓ#HÓIˆà×ÑØ�K‰K˜
Ñ#×,Ñ,×2Ñ2Ó4×9Ñ9Øô	
ð 	×ÑØ×ÑÐ1Ñ2×8Ñ8Ó:×?Ñ?Øõ	
r   c                 ó^  — | j                   j                  t        d| j                  «      «      }| j	                  |d«       | j	                  |d«       | j	                  |d«       | j	                  |d«       | j	                  |d«       | j	                  |d«       | j	                  |dd	¬
«       | j	                  |dd	¬
«       | j	                  |dd	¬
«       | j                  |d«       | j                  |j                  j                  d«      |j                  j                  d«      «       y )Nrí   zclass="taxonomy-modal"úclass="sidebar-toggle"zdata-record-type="article"zjs/taxonomy-menu.jsztaxonomy-menu.js?v=20260726-2z google-translate.js?v=20260726-1zid="google_translate_element"r   )r­   zdata-language="en"zdata-language="el"zdclass="language-flag" type="button" data-language="en" aria-label="English" title="English" disableds   class="logout"s   class="language-selector)	r2   rQ   r   r   rj   re   r0  rp   rí   rA   s     r   ÚBtest_workspace_renders_reusable_taxonomy_modal_and_controls_scriptzUTaxonomyPopupTests.test_workspace_renders_reusable_taxonomy_modal_and_controls_script°  s  € Ø—;‘;—?‘?Ô#4°W¸d¿i¹iÓ#HÓIˆà×Ñ˜HÐ&>Ô?Ø×Ñ˜HÐ&>Ô?Ø×Ñ˜HÐ&BÔCØ×Ñ˜HÐ&;Ô<Ø×Ñ˜HÐ&EÔFØ×Ñ˜HÐ&HÔIØ×Ñ˜HÐ&EÈQÐÔOØ×Ñ˜HÐ&:À!ÐÔDØ×Ñ˜HÐ&:À!ÐÔDØ×Ñ˜xð  *Pô  	QØ�‰Ø×Ñ×"Ñ"Ð#4Ó5Ø×Ñ×"Ñ"Ð#>Ó?õ	
r   c                 óÒ  — t         j                  j                  | j                  d¬«      }t        j                  j                  | j                  |dd¬«      }| j                  j                  t        d| j                  «      «      }| j                  j                  t        d| j                  |j                  g¬«      «      }| j                  |d	«       | j                  |d	«       y )
Nrk  ©r   rŽ   zRecord being editedr§   ©r   r‹   rh   rp   r_   r)  r   rz  )
r   r&   rQ   r   r   r{   r2   r   rŽ   re   )r)   r‹   rn   Úcreate_responseÚedit_responses        r   Ú5test_record_create_and_edit_forms_hide_sidebar_togglezHTaxonomyPopupTests.test_record_create_and_edit_forms_hide_sidebar_toggleÂ  sÃ   € Ü"×*Ñ*×.Ñ.Ø—‘Ø ð /ó 
ˆô —/‘/×(Ñ(Ø—‘ØØ'Øð	 )ó 
ˆð Ÿ+™+Ÿ/™/ÜÐ.°·	±	Ó:ó
ˆð Ÿ™Ÿ™Ü˜n¨d¯i©i¸w¿|¹|¸nÔMó
ˆð 	×Ñ˜Ð0HÔIØ×Ñ˜}Ð.FÕGr   c                 ót  — t         j                  j                  | j                  d¬«      }t        j                  j                  | j                  |dd¬«      }| j                  j                  t        d| j                  |j                  g¬«      «      }| j                  |d«       | j                  |d	«       y )
Nrk  r}  zSingle page sidebarr§   r~  r›   r   z,class="workspace-page workspace-single-page"rz  )
r   r&   rQ   r   r   r{   r2   r   rŽ   rj   )r)   r‹   rn   r>   s       r   Ú8test_single_record_page_uses_collapsible_desktop_sidebarzKTaxonomyPopupTests.test_single_record_page_uses_collapsible_desktop_sidebarØ  s¦   € Ü"×*Ñ*×.Ñ.Ø—‘Ø ð /ó 
ˆô —/‘/×(Ñ(Ø—‘ØØ'Øð	 )ó 
ˆð —;‘;—?‘?ÜÐ.°·	±	ÀÇÁÀÔOó
ˆð 	×ÑØØ:ô	
ð 	×Ñ˜HÐ&>Õ?r   c           	      óˆ  — t        j                  «       D �]  \  }}|\  }}}}| j                  |d¬«      5  | j                  j	                  | j                  |«      d|› d�dœ«      }| j                  |j                  d«       |j                  j                  | j                  |› d�¬«      }d d d «       | j                  |d¬«      5  | j                  j	                  | j                  |«      d|› d�j                  d	œ«      }| j                  |j                  d«       | j                  |j                  j                  | j                  |¬
«      j                  «       «       d d d «       | j                  |d¬«      5  | j                  j	                  | j                  |«      d|› d�dœ«      }| j                  |j                  d«       | j                  |j                  j                  | j                  ¬«      j                  «       «       d d d «       �Œ y # 1 sw Y   �ŒrxY w# 1 sw Y   ŒÆxY w# 1 sw Y   �Œ,xY w)Nr‹   )rr   Úkindz	 category©r…  r   r0   r‰   rŸ   z subcategory©r…  r   Úcategory_slug)r   r‹   r®   z tagrƒ   )r   rU  rJ   r2   r6   rd  r8   r9   r&   rQ   r   rŽ   r:   r„   rv   )	r)   rr   rm  rn  ro  Úsubcategory_modelÚ	tag_modelr>   r‹   s	            r   Ú6test_creates_user_owned_taxonomy_for_every_record_typezITaxonomyPopupTests.test_creates_user_owned_taxonomy_for_every_record_typeî  s*  € Ü,;×,AÑ,AÓ,Có 	SÑ(ˆK˜Ø>MÑ;ˆAˆ~Ð0°)Ø—‘¨+¸J�ÓGñ 	ØŸ;™;×+Ñ+¨D×,=Ñ,=¸kÓ,JØ&Ø*˜m¨9Ð5ñMó �ð × Ñ  ×!5Ñ!5°sÔ;Ø)×1Ñ1×5Ñ5ØŸ™Ø'˜=¨	Ð2ð 6ó �÷	ð —‘¨+¸M�ÓJñ 
ØŸ;™;×+Ñ+¨D×,=Ñ,=¸kÓ,JØ)Ø*˜m¨<Ð8Ø%-§]¡]ñMó �ð
 × Ñ  ×!5Ñ!5°sÔ;Ø—‘Ð 1× 9Ñ 9× @Ñ @ØŸ™Ø%ð !Aó !÷ ‘&“(ô÷
ð —‘¨+¸E�ÓBñ SØŸ;™;×+Ñ+¨D×,=Ñ,=¸kÓ,JØ!Ø*˜m¨4Ð0ñMó �ð × Ñ  ×!5Ñ!5°sÔ;Ø—‘ 	× 1Ñ 1× 8Ñ 8¸d¿i¹iÐ 8Ó H× OÑ OÓ QÔR÷Sñ Sñ3	S÷	ñ 	ú÷
ð 
ú÷Sñ Sús&   ¶A8HÃ	BH+ÆBH7ÈH(	È+H4	È7I	c                 ó(  — | j                   j                  | j                  d| j                  «      dddœ«      }| j	                  |j
                  d«       | j                  t        j                  j                  d¬«      j                  «       «       y )Nrn   r‹   Ú	Forbiddenr†  r�   r¦   )r2   r6   rd  r�   r8   r9   ru   r   r&   r„   rv   rA   s     r   Ú6test_cannot_create_taxonomy_in_another_users_workspacezITaxonomyPopupTests.test_cannot_create_taxonomy_in_another_users_workspace  su   € Ø—;‘;×#Ñ#Ø×Ñ˜i¨¯©Ó9Ø¨Ñ5ó
ˆð
 	×Ñ˜×-Ñ-¨sÔ3Ø×Ñœ×0Ñ0×7Ñ7¸[Ð7ÓI×PÑPÓRÕSr   c                 ó~  — t         j                  j                  | j                  d¬«      }| j                  j                  | j                  d«      dd|j                  dœ«      }| j                  |j                  d«       | j                  t        j                  j                  d¬«      j                  «       «       y )	NzOther user's categoryr‰   rn   rŸ   úForbidden childr‡  r�   r¦   )r   r&   r{   r�   r2   r6   rd  rŽ   r8   r9   ru   r   r„   rv   ©r)   r‹   r>   s      r   Ú;test_cannot_create_subcategory_under_another_users_categoryzNTaxonomyPopupTests.test_cannot_create_subcategory_under_another_users_category  s¤   € Ü"×*Ñ*×1Ñ1Ø—‘Ø(ð 2ó 
ˆð
 —;‘;×#Ñ# D×$5Ñ$5°iÓ$@Ø!Ø%Ø%Ÿ]™]ñC
ó ˆð 	×Ñ˜×-Ñ-¨sÔ3Ø×ÑÜ×&Ñ&×-Ñ-Ð3DÐ-ÓE×LÑLÓNõ	
r   c                 ó:  — t         j                  j                  | j                  d¬«      }| j                  j                  | j                  d«      dd|j                  dœ«      }| j                  j                  | j                  d«      d|j                  dœ«      }| j                  |j                  d	«       | j                  |j                  d	«       | j                  t         j                  j                  |j                  ¬
«      j                  «       «       y )Nrk  r}  rn   rŸ   r�  r‡  r‹   ©r…  rŽ   i�  r,  )r   r&   rQ   r   r2   r6   rd  rŽ   rh  r8   r9   r:   r„   r“   rv   )r)   Údefault_categoryr  Údelete_responses       r   Ú:test_uncategorized_cannot_have_subcategories_or_be_deletedzMTaxonomyPopupTests.test_uncategorized_cannot_have_subcategories_or_be_deleted*  sö   € Ü*×2Ñ2×6Ñ6Ø—‘Ø ð 7ó 
Ðð
 Ÿ+™+×*Ñ*¨4×+<Ñ+<¸YÓ+GØ!Ø%Ø-×2Ñ2ñJ
ó ˆð
 Ÿ+™+×*Ñ*¨4×+CÑ+CÀIÓ+NØØ$×)Ñ)ñQ
ó ˆð
 	×Ñ˜×4Ñ4°cÔ:Ø×Ñ˜×4Ñ4°cÔ:Ø�‰Ü×#Ñ#×*Ñ*Ð.>×.AÑ.AÐ*ÓB×IÑIÓKõ	
r   c                 óÒ  — t         j                  j                  | j                  d¬«      }t        j                  j                  | j                  |d¬«      }t
        j                  j                  | j                  ||dd¬«      }| j                  j                  | j                  d«      d	|j                  d
œ«      }|j                  «        | j                  |j                  d«       | j                  |j                  |«       | j                  |j                  «       | j!                  t        j                  j#                  |j$                  ¬«      j'                  «       «       y )NÚParentr‰   ÚChild©r   r‹   r   zCategorized articler§   ©r   r‹   rŸ   rh   rp   rn   rŸ   r”  r0   r,  ©r   r&   r{   r   r   r   r2   r6   rh  rŽ   r”   r8   r9   r‹   ÚassertIsNonerŸ   ru   r„   r“   rv   ©r)   r‹   rŸ   rn   r>   s        r   Ú8test_deleting_subcategory_keeps_posts_in_parent_categoryzKTaxonomyPopupTests.test_deleting_subcategory_keeps_posts_in_parent_category@  s,  € Ü"×*Ñ*×1Ñ1°t·y±yÀxÐ1ÓPˆÜ(×0Ñ0×7Ñ7Ø—‘ØØð 8ó 
ˆô
 —/‘/×(Ñ(Ø—‘ØØ#Ø'Øð )ó 
ˆð —;‘;×#Ñ# D×$<Ñ$<¸YÓ$GØ!Ø×$Ñ$ñJ
ó ˆð
 	×ÑÔ!Ø×Ñ˜×-Ñ-¨sÔ3Ø×Ñ˜×)Ñ)¨8Ô4Ø×Ñ˜'×-Ñ-Ô.Ø×ÑÜ×&Ñ&×-Ñ-°·±Ð-Ó@×GÑGÓIõ	
r   c                 óF  — t         j                  j                  | j                  d¬«      }t        j                  j                  | j                  |d¬«      }t
        j                  j                  | j                  ||dd¬«      }| j                  j                  | j                  d«      d	|j                  d
œ«      }|j                  «        | j                  |j                  d«       | j                  |j                  j                  d«       | j                  |j                  j                  | j                  «       | j                  |j                  «       | j!                  t         j                  j#                  |j$                  ¬«      j'                  «       «       y )NÚ	Temporaryr‰   zTemporary childr›  zArticle to mover§   rœ  rn   r‹   r”  r0   rk  r,  r�  rŸ  s        r   Ú3test_deleting_category_moves_posts_to_uncategorizedzFTaxonomyPopupTests.test_deleting_category_moves_posts_to_uncategorized\  sM  € Ü"×*Ñ*×1Ñ1°t·y±yÀ{Ð1ÓSˆÜ(×0Ñ0×7Ñ7Ø—‘ØØ"ð 8ó 
ˆô
 —/‘/×(Ñ(Ø—‘ØØ#Ø#Øð )ó 
ˆð —;‘;×#Ñ# D×$<Ñ$<¸YÓ$GØØ—M‘MñJ
ó ˆð
 	×ÑÔ!Ø×Ñ˜×-Ñ-¨sÔ3Ø×Ñ˜×)Ñ)×.Ñ.°Ô@Ø×Ñ˜×)Ñ)×.Ñ.°·	±	Ô:Ø×Ñ˜'×-Ñ-Ô.Ø×Ñœ×0Ñ0×7Ñ7¸8¿;¹;Ð7ÓG×NÑNÓPÕQr   c                 óÈ  — t         j                  j                  | j                  d¬«      }t        j                  j                  | j                  d¬«      }t
        j                  j                  | j                  |dd¬«      }|j                  j                  |«       | j                  j                  | j                  d«      d|j                  d	œ«      }| j                  |j                  d
«       | j                  t        j                  j                  |j                   ¬«      j#                  «       «       | j                  |j                  j#                  «       «       y )NÚTaggedr‰   zTemporary tagr³   r§   r~  rn   r®   r”  r0   r,  )r   r&   r{   r   r   r   r¡   Úaddr2   r6   rh  rŽ   r8   r9   ru   r„   r“   rv   )r)   r‹   r®   rn   r>   s        r   Ú(test_deleting_tag_detaches_it_from_postsz;TaxonomyPopupTests.test_deleting_tag_detaches_it_from_postsw  s  € Ü"×*Ñ*×1Ñ1°t·y±yÀxÐ1ÓPˆÜ× Ñ ×'Ñ'¨T¯Y©Y¸_Ð'ÓMˆÜ—/‘/×(Ñ(Ø—‘ØØ"Øð	 )ó 
ˆð 	�‰×Ñ˜Ôà—;‘;×#Ñ# D×$<Ñ$<¸YÓ$GØØ—H‘HñJ
ó ˆð
 	×Ñ˜×-Ñ-¨sÔ3Ø×Ñœ×+Ñ+×2Ñ2°c·f±fÐ2Ó=×DÑDÓFÔGØ×Ñ˜Ÿ™×,Ñ,Ó.Õ/r   c           	      óœ  — t        j                  «       D ��ci c]"  \  }}||d   j                  j                  dz   “Œ$ }}}d|d<   t        j                  «       D ]Ý  \  }}|d   }|j                  j                  | j                  |› d�¬«      }| j                  |¬«      5  | j                  j                  | j                  |«      d	|j                  d
œ«      }| j                  |j                  d«       | j                  |j                  «       d   t        ||   | j                  «      «       d d d «       Œß y c c}}w # 1 sw Y   ŒðxY w)Nr   Ú_indexrí   rn   é   z redirect tagr‰   rS  r®   r”  r0   Úredirect_url)r   rU  Ú_metaÚ
model_namer&   r{   r   rJ   r2   r6   rh  rŽ   r8   r9   r;   r   )r)   rr   rm  Úindex_routesrŠ  r®   r>   s          r   ÚCtest_deletion_redirect_url_is_unfiltered_index_for_each_record_typezVTaxonomyPopupTests.test_deletion_redirect_url_is_unfiltered_index_for_each_record_type‹  sM  € ô 1@×0EÑ0EÓ0G÷
á,�˜_ð ˜¨Ñ+×1Ñ1×<Ñ<¸xÑGÑGð
ˆñ 
ð #*ˆ�YÑä,;×,AÑ,AÓ,Cò 	Ñ(ˆK˜Ø'¨Ñ*ˆIØ×#Ñ#×*Ñ*Ø—Y‘YØ#�} MÐ2ð +ó ˆCð
 —‘¨+�Ó6ñ 
ØŸ;™;×+Ñ+Ø×,Ñ,¨[Ó9Ø"¨C¯H©HÑ5ó�ð
 × Ñ  ×!5Ñ!5°sÔ;Ø× Ñ Ø—M‘M“O NÑ3Ü% l°;Ñ&?ÀÇÁÓKô÷
ð 
ñ	ùó
÷
ð 
ús   ˜'D<Â"BEÅE	c                 ó�  — t         j                  j                  | j                  d¬«      }| j                  j                  | j                  d«      d|j                  dœ«      }| j                  |j                  d«       | j                  t         j                  j                  |j                  ¬«      j                  «       «       y )NzOther private categoryr‰   rn   r‹   r”  r�   r,  )r   r&   r{   r�   r2   r6   rh  rŽ   r8   r9   r:   r„   r“   rv   r‘  s      r   Ú)test_cannot_delete_another_users_taxonomyz<TaxonomyPopupTests.test_cannot_delete_another_users_taxonomy¥  sŸ   € Ü"×*Ñ*×1Ñ1Ø—‘Ø)ð 2ó 
ˆð
 —;‘;×#Ñ# D×$<Ñ$<¸YÓ$GØØ—M‘MñJ
ó ˆð
 	×Ñ˜×-Ñ-¨sÔ3Ø�‰œ×/Ñ/×6Ñ6¸(¿+¹+Ð6ÓF×MÑMÓOÕPr   ©N)rT   rU   rV   r*   rd  rh  rp  rx  r{  r�  rƒ  r‹  rŽ  r’  r—  r   r£  r§  r¯  r±  rY   r   r   r^  r^  }  s^   „ ò	+ó
ó
òò
ò
ò$Hò,@ò, SòDTò
ò"
ò,
ò8Rò60ò(ó4Qr   r^  c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚLegacyDataRecoveryTestsc                 óü   — t         j                  j                  dd¬«      | _        t        j                  j                  d¬«      | _        t        j                  j                  dd| j                  ¬«      | _        y )	Nzlegacy-ownerr"   r#   zLegacy categoryr¦   zLegacy articleúStill presentrC  r<  r(   s    r   r*   zLegacyDataRecoveryTests.setUpµ  si   € Ü—L‘L×,Ñ,Ø#Ø$ð -ó 
ˆŒ	ô (×/Ñ/×6Ñ6Ð<MÐ6ÓNˆŒÜ—‘×-Ñ-Ø"Ø#Ø—]‘]ð .ó 
ˆ�r   c                 ó  — t        «       }t        d| j                  j                  |¬«       | j                  j                  «        | j                  | j                  j                  «       | j                  d|j                  «       «       y )NÚassign_legacy_data)r   ÚstdoutzDry run only)	r
   r   r   r   rn   r”   rž  rL   Úgetvalue)r)   Úoutputs     r   Ú(test_dry_run_does_not_change_legacy_rowsz@LegacyDataRecoveryTests.test_dry_run_does_not_change_legacy_rowsÁ  sc   € Ü“ˆäØ Ø—Y‘Y×'Ñ'Øõ	
ð 	�‰×$Ñ$Ô&Ø×Ñ˜$Ÿ,™,×+Ñ+Ô,Ø�‰�n f§o¡oÓ&7Õ8r   c                 ó‚  — t        d| j                  j                  dt        «       ¬«       | j                  j                  «        | j                  j                  «        | j                  | j                  j                  | j                  «       | j                  | j                  j                  | j                  «       y )Nr¸  T©r   Úapplyr¹  )r   r   r   r
   rn   r”   r‹   r8   r(   s    r   Ú0test_apply_assigns_legacy_rows_to_requested_userzHLegacyDataRecoveryTests.test_apply_assigns_legacy_rows_to_requested_userÎ  s€   € ÜØ Ø—Y‘Y×'Ñ'ØÜ“:õ		
ð 	�‰×$Ñ$Ô&Ø�‰×%Ñ%Ô'Ø×Ñ˜Ÿ™×*Ñ*¨D¯I©IÔ6Ø×Ñ˜Ÿ™×+Ñ+¨T¯Y©YÕ7r   c                 ó   — t         j                  j                  | j                  dd¬«      }t         j                  j                  dd¬«      }t        j                  j                  dd|¬«      }t        d| j                  j                  d	t        «       ¬
«       |j                  «        | j                  |j                  | j                  «       | j                  |j                  |«       | j                  |j                  «       | j                  t         j                  j                  |j                  ¬«      j!                  «       «       y )Nrj  rk  rl  )r   rŽ   zLegacy default articler¶  rC  r¸  Tr¾  r,  )r   r&   r{   r   r   r   r   r
   r”   r8   r‹   rž  rŸ   ru   r„   r“   rv   )r)   Úowned_defaultÚlegacy_defaultÚlegacy_articles       r   Ú7test_apply_merges_duplicate_legacy_uncategorized_safelyzOLegacyDataRecoveryTests.test_apply_merges_duplicate_legacy_uncategorized_safelyÛ  s  € Ü'×/Ñ/×6Ñ6Ø—‘Ø Ø ð 7ó 
ˆô
 )×0Ñ0×7Ñ7Ø Ø ð 8ó 
ˆô !Ÿ™×/Ñ/Ø*Ø#Ø#ð 0ó 
ˆô 	Ø Ø—Y‘Y×'Ñ'ØÜ“:õ		
ð 	×&Ñ&Ô(Ø×Ñ˜×,Ñ,¨d¯i©iÔ8Ø×Ñ˜×0Ñ0°-Ô@Ø×Ñ˜.×4Ñ4Ô5Ø×ÑÜ×#Ñ#×*Ñ*¨n×.?Ñ.?Ð*Ó@×GÑGÓIõ	
r   N)rT   rU   rV   r*   r¼  rÀ  rÅ  rY   r   r   r´  r´  ´  s   „ ò

ò9ò8ó
r   r´  r²  )(rW   r4   Údjango.confr   Údjango.testr   r   Údjango.urlsr   Údjango.core.managementr   Údjango.core.files.uploadedfiler   Úunittest.mockr	   Úior
   Úformsr   r   Úmodelsr   r   r   r   r   r   r   Úviewsr   r   r    r[   rÆ   rö   r  r  r8  r^  r´  rY   r   r   ú<module>rÐ     sÀ   ðÛ Û Ý  ß 3Ý Ý /Ý =Ý Ý ç 0÷÷ ñ õ #ó>ô1
˜(ô 1
ôha2˜ô a2ôHO<˜ô O<ôd);�ô );ôX1D˜ô 1DôhN
˜8ô N
ôbH˜ô HôVtQ˜ô tQôn	D
˜hõ D
r   