
    i #                    F   d Z ddlmZ ddlmZmZmZmZmZ ddlZddl	m
Z
mZmZmZmZmZ ej        Zej        dEd            Zej                            d	d
dg          Zej                            dddg          Zeed                         Zed             Zeed                         Zeed                         Zd Zed             Zeej                            dddg          d                         Zed             Zej                            dddg          Z e ed                         Z!ej                            ddd g          Z e d!             Z"e d"             Z#e d#             Z$d$ Z% ej        e
eeeg%          dFd'            Z& ej        d(d)g%          dGd+            Z'dHd-Z(dId/Z)dId0Z*dHd1Z+dHd2Z,dId3Z-dJd5Z.ej                            d6 ed7dd           ed7dd          d8 ed7dd           ed9          f ed:d          g          dJd;            Z/ej                            d6 ed<=           ed=          g          dJd>            Z0dJd?Z1dJd@Z2dA Z3dB Z4ej                            dCe3e4g          dD             Z5dS )KzThis tests additional attributes from :rfc:`7986`.

Some attributes are also available as ``X-*`` attributes.
They are also considered.
    )annotations)datedatetimetime	timedeltatimezoneN)CalendarEventJournalTodovTextvUrireturnr	   c                     t                      S )zEmpty calendar)r	        X/root/projects/butler/venv/lib/python3.11/site-packages/icalendar/tests/test_rfc_7986.pycalendarr      s     ::r   namezCompany Vacation DayszCalendar NamepropNAMEX-WR-CALNAMEc                L    |                     | |           |j        |k    sJ dS )zGet the name of the calendar.Naddcalendar_name)r   r   r   s      r   test_get_calendar_namer      s2     LLt!T))))))r   c                f    | |_         |j         | k    sJ |d         | k    sJ |d         | k    sJ dS )zRSetting the name overrides the old attributes and sets both NAME and X-WR-CALNAME.r   r   Nr   )r   r   s     r   test_set_calendar_namer    $   R     "H!T))))Ft####N#t++++++r   c                8    d||<   | |_         |j         | k    sJ dS )z.Setting the name overrides the old attributes.z
Other NameNr   )r   r   r   s      r   test_replace_namer#   -   s/     "HTN!H!T))))))r   c                H    |                     ||            |`|j        J dS )zDelete the name.Nr   )r   r   r   s      r   test_del_namer%   6   s3     LLt!)))))r   c                    | j         J dS )zWe have no name by default.Nr   r   s    r   test_default_namer(   ?   s    !)))))r   c                f    || _         | j         |k    sJ | d         |k    sJ | d         |k    sJ dS )zHSetting calendar_name sets both NAME and X-WR-CALNAME for compatibility.r   r   Nr   r   r   s     r   *test_setting_the_name_sets_both_propertiesr+   D   r!   r   order      c                    |dk    r|                      d|           |                      dt          dddi                     |dk    r|                      d|           | j        |k    sJ dS )	z;Add several names and use the one without a language param.r-   r   KalendernameLANGUAGEdeparamsr.   N)r   r   r   )r   r   r,   s      r   2test_multiple_names_use_the_one_without_a_languager5   M   s~     zzVT"""LL~z46HIIIJJJzzVT"""!T))))))r   c                x    |                      d|           |                      dd           | j        |k    sJ dS )z(NAME is more important that X-WR-CALNAMEr   r   asdNr   r*   s     r   test_name_is_preferredr8   Y   sF     LLLL'''!T))))))r   descDESCRIPTIONzX-WR-CALDESCc                L    |                      ||           | j        |k    sJ dS zGet the valueN)r   description)r   r9   r   s      r   test_descriptionr>   g   s2     LLt4''''''r   color_paramCOLORX-APPLE-CALENDAR-COLORc                L    |                      ||           | j        |k    sJ dS r<   r   colorr   r?   rD   s      r   test_get_calendar_colorrF   w   s1     LLe$$$>U""""""r   c                \    |                      ||           | `| j        dk    sJ || vsJ dS )zDelete the value NrC   rE   s      r   test_delete_calendar_colorrI   ~   sG     LLe$$$>Rh&&&&&&r   c                v    |                      |d           || _        | j        |k    sJ | d         |k    sJ dS )z,Set the color and it replaces what is there.greenr@   NrC   rE   s      r   test_set_calendar_colorrL      sN     LLg&&&HN>U""""G%%%%%%r   c                x    |                      d|           |                      dd           | j        |k    sJ dS )z+We prefer COLOR over X-APPLE-CALENDAR-COLORr@   rA   rK   NrC   )r   rD   s     r   test_get_COLOR_firstrN      sD    LL%   LL)7333>U""""""r   r3   !Calendar | Event | Todo | Journalc                *    |                                  S )z6An empty component that should have a color attribute.paramrequests    r   color_componentrU      s     ==??r   bluez#123456strc                    | j         S )zReturn a color.rQ   rS   s    r   rD   rD      s     =r   rU   c                     | j         dk    sJ dS )zThere is no color by default.rH   NrD   rU   s    r   test_default_colorr\      s     B&&&&&&r   rD   c                J    | |_         |j         | k    sJ |d         | k    sJ dS )zWe set the value and get it.r@   NrZ   rD   rU   s     r   test_set_the_colorr_      s:    !O E))))7#u,,,,,,r   c                X    d|_         | |_         |j         | k    sJ |d         | k    sJ dS )zReplace the color.rV   r@   NrZ   r^   s     r   test_replace_colorra      sB    "O!O E))))7#u,,,,,,r   c                x    |                      dd           |                      dd           | j        dk    sJ dS z)Add several colors and use the first one.r@   rV   rK   NrC   r[   s    r   test_multiple_colorsrd      sH    ((())) F******r   c                >    d| _         | ` d| vsJ | j         dk    sJ dS )zDelete the color.rV   r@   rH   NrZ   r[   s    r   test_delete_the_colorrf      s;    "O/)))) B&&&&&&r   c                    |                     dd           |                     dd           | |_        |j        | k    sJ dS rc   rC   r^   s     r   test_set_if_multiple_colorsrh      sR     ((()))!O E))))))r   r   c                F    |                      d          J | j        J dS )zREFRESH-INTERVAL default.REFRESH-INTERVALN)getrefresh_intervalr'   s    r   test_refresh_interval_defaultrm      s0    <<*++333$,,,,,r   invalid_valuei  invalid)days   c                    t          d          | _        t          j        t                    5  || _        ddd           n# 1 swxY w Y   | j        t          d          k    sJ dS )zInvalid REFRESH-INTERVALr-   hoursN)r   rl   pytestraises	TypeErrorr   rn   s     r   "test_invalid_refresh_interval_typery      s     !* 2 2 2H	y	!	! 2 2$1!2 2 2 2 2 2 2 2 2 2 2 2 2 2 2$	(:(:(:::::::   AA
A)secondsc                    t          d          | _        t          j        t                    5  || _        ddd           n# 1 swxY w Y   | j        t          d          k    sJ dS )zgInvalid REFRESH-INTERVAL.

    Test:
    - value validation
    - no deletion of the current value
    r.   rs   N)r   rl   ru   rv   
ValueErrorrx   s     r   test_invalid_refresh_intervalr      s     !* 2 2 2H	z	"	" 2 2$1!2 2 2 2 2 2 2 2 2 2 2 2 2 2 2$	(:(:(:::::::rz   c                    t          d          | _        | j        t          d          k    sJ | d         j        t          d          k    sJ dS )REFRESH-INTERVAL setting.r-   rs   rj   N)r   rl   tdr'   s    r   "test_refresh_interval_set_to_valuer      s_     ) 2 2 2H$	(:(:(:::::&'*ia.@.@.@@@@@@@r   c                    |                      dt          dd                     | j        t          dd          k    sJ | d         j        t          dd          k    sJ dS )r   rj   r-   r.   )rp   rt   N)r   r   rl   dtr'   s    r   *test_refresh_interval_set_to_value_by_dictr     sr    LL#YAQ%?%?%?@@@$	q(B(B(BBBBB&'*iQa.H.H.HHHHHHHr   c                    | j         S )z
ICS -> obj)rfc_7986_properties)	calendarss    r    get_rfc_7986_properties_calendarr     s    ((r   c                \    | j         }t          j        |                                          S )zICS -> obj -> ICS -> obj)r   r	   	from_icalto_ical)r   cals     r   +get_rfc_7986_properties_calendar_serializedr     s#    

'Cckkmm,,,r   get_calendarc           
     h    ||           }|j         dk    sJ |j        dk    sJ |j        t          d          k    sJ |j        t          ddddddt          	          k    s
J d
            |j        dk    sJ |j        dk    sJ |j	        dk    sJ t          |j	        t                    sJ dS )z/Check that the attributes have a certain value.zRFC 7986 calendarblack   rs   i  
      rq   )tzinfo20161029T121229Zz$5FC53010-1267-4F8E-BC28-1D7AE55A7C99z-We want a lot of RFC 7986 parameters in here!zghttps://github.com/collective/icalendar/tree/main/src/icalendar/tests/calendars/rfc_7986_properties.icsN)r   rD   rl   r   last_modifiedr   UTCuidr=   source
isinstancer   )r   r   r   s      r   test_attributes_from_calendarr     s     &i00H!%88888>W$$$$$	(:(:(:::::!XdBBBs%S%S%SSSS TSS <AAAAA#RRRRRt	u 	u 	u 	u hot,,,,,,,r   )r   r	   )r   rO   )r   rW   )rU   rO   )rD   rW   rU   rO   )r   r	   )6__doc__
__future__r   r   r   r   r   r   ru   	icalendarr	   r
   r   r   r   r   utcr   fixturer   markparametrize
param_name
param_propr   r    r#   r%   r(   r+   r5   r8   param_colorr>   rF   rI   rL   rN   rU   rD   r\   r_   ra   rd   rf   rh   rm   ry   r   r   r   r   r   r   r   r   r   <module>r      s0    # " " " " " > > > > > > > > > > > > > >  A A A A A A A A A A A A A A A Al    
 [$$V.E-WXX
[$$Vfn-EFF
 * *  * , , , * *  * * *  ** * *
 , , , 1a&))* * *) * * * * k%%f}n.MNN ( (  ( k%%G56 
 # # # ' ' ' & & &# # # %w7888   98
 	*+++   ,+
' ' ' '
- - - -- - - -+ + + +' ' ' '* * * *- - - - q!T1a	dAq		99!,,,-R	 	; ; ;	 	; 99R+@+@+@))TUBVBVBV*WXX
; 
; 
; YX
;A A A AI I I I) ) )
- - - %'RS - -	 - - -r   