o
    .j                     @  s  d Z ddlmZ ddlmZmZ ddl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 ddlmZ ddlmZ ddlmZ ddlmZ erXddlmZ G dd deZG dd deZG dd deZejdeeegdd Z G dd deZ!dd Z"ejddde fdde fd de fdded!fdded!fd ded!fdded"fdded"fd ded"fdded#fdded#fd ded#fgd'd%d&Z#dS )(zJThis tests extneding and modifying the behaviour of recurring ical events.    )annotations)TYPE_CHECKINGSequenceN)	Component)of)EventAdapter)JournalAdapter)TodoAdapter)
Occurrence)AllKnownComponents)SelectComponents)ComponentsWithName)Seriesc                   @  s$   e Zd ZdZdddZdddZdS )
SelectUID1zCollect only one UID.uidstrreturnNonec                 C  
   || _ d S Nr   selfr    r   c/home/thesage/.local/lib/python3.10/site-packages/recurring_ical_events/test/test_extend_classes.py__init__      
zSelectUID1.__init__sourcer   suppress_errorstuple[Exception]Sequence[Series]c                   s    fddt ttfD S )Nc                   s.   g | ]}| D ]
}|j jkr
|q
qS r   )collect_series_fromr   ).0adapterseriesr   r   r   r   r   
<listcomp>#   s    
z2SelectUID1.collect_series_from.<locals>.<listcomp>)r   r   r	   r%   r   r%   r   r!       s   zSelectUID1.collect_series_fromNr   r   r   r   r   r   r   r   r   r    )__name__
__module____qualname____doc__r   r!   r   r   r   r   r      s    
r   c                      s,   e Zd Zd fddZd fddZ  ZS )
SelectUID2r   r   r   r   c                   s   t    || _d S r   )superr   r   r   	__class__r   r   r   ,   s   

zSelectUID2.__init__r   r   r   r   r    c                   s    fddt  ||D S )Nc                   s   g | ]
}|j  j kr|qS r   r   )r"   r$   r   r   r   r&   3   s
    z2SelectUID2.collect_series_from.<locals>.<listcomp>)r.   r!   r%   r/   r1   r   r!   0   s   
zSelectUID2.collect_series_fromr'   r(   )r)   r*   r+   r   r!   __classcell__r   r   r/   r   r-   +   s    r-   c                   @  s    e Zd ZdddZdddZdS )
SelectUID3r   r   r   r   c                 C  r   r   r   r   r   r   r   r   ;   r   zSelectUID3.__init__r   r   r   r   r    c                 C  sL   g }| dD ]}|d| jkr|t| qt| |r$t|gS g S )NVEVENTUID)walkgetr   appendr   printr   )r   r   r   
components	componentr   r   r   r!   >   s   zSelectUID3.collect_series_fromNr'   r(   )r)   r*   r+   r   r!   r   r   r   r   r3   :   s    
r3   	collectorc                 C  s.   d}t | jj||gd}| dksJ dS )zTest that only one UID is used.z%4mm2ak3in2j3pllqdk1ubtbp9p@google.comr:      N)r   rawmachbar_16_feb_2019count)	calendarsr<   r   queryr   r   r   test_collect_only_one_uidK   s   rD   c                      s"   e Zd ZdZd fddZ  ZS )	MyOccurrencez*An occurrence that modifies the component.keep_recurrence_attributesboolr   r   c                   s   t  |}d|d< |S )zIReturn a shallow copy of the source component and modify some attributes.my occurrenceX-MY-ATTRIBUTE)r.   as_component)r   rF   r;   r/   r   r   rJ   V   s   zMyOccurrence.as_component)rF   rG   r   r   )r)   r*   r+   r,   rJ   r2   r   r   r/   r   rE   S   s    rE   c                 C  s8   t | jjttdgd}t| }|d dksJ dS )zTest that attributes are added.)
occurrencer=   rI   rH   N)r   r?   	one_eventr   rE   nextall)rB   rC   eventr   r   r   test_added_attributes]   s   
rP   )calendarrA   r<   rL   r>   issue_97_simple_todoissue_97_simple_journalr4   VTODOVJOURNALr   c                 C  s.   | | j| g }t| t||ksJ dS )zCCheck that the calendars have the right amount of series collected.N)r!   r?   r9   len)rB   rQ   rA   r<   r$   r   r   r   test_we_collect_all_componentsg   s   rW   )r<   r   )$r,   
__future__r   typingr   r   pytesticalendar.calr   recurring_ical_eventsr   $recurring_ical_events.adapters.eventr   &recurring_ical_events.adapters.journalr   #recurring_ical_events.adapters.todor	    recurring_ical_events.occurrencer
   #recurring_ical_events.selection.allr   $recurring_ical_events.selection.baser   $recurring_ical_events.selection.namer   recurring_ical_events.seriesr   r   r-   r3   markparametrizerD   rE   rP   rW   r   r   r   r   <module>   sP    





