o
    ÌÄ.jº  ã                   @  sn   d Z ddlmZ ddlZddlmZ G dd„ dƒZG dd„ dƒZG d	d
„ d
ƒZG dd„ dƒZ	G dd„ dƒZ
dS )z9Tests for vCard ORG (Organization) property per RFC 6350.é    )ÚannotationsN)ÚvOrgc                   @  ó8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚTestVOrgCreationz$Test vOrg creation and field access.c                 C  s   t dƒ}|jdksJ ‚dS )z Create ORG from tuple of fields.©úABC Inc.Ú	MarketingÚSalesN©r   Úfields©ÚselfÚorg© r   ú]/home/thesage/.local/lib/python3.10/site-packages/icalendar/tests/rfc_6350_vcard/test_vOrg.pyÚtest_org_creation_with_tuple   ó   z-TestVOrgCreation.test_org_creation_with_tuplec                 C  s   t ddgƒ}|jdksJ ‚dS )zCreate ORG from list of fields.r   r   ©r   r   Nr
   r   r   r   r   Útest_org_creation_with_list   s   z,TestVOrgCreation.test_org_creation_with_listc                 C  ó   t dƒ}|jdksJ ‚dS )z$Create ORG from vCard format string.úABC Inc.;Marketing;Salesr   Nr
   r   r   r   r   Útest_org_creation_with_string   r   z.TestVOrgCreation.test_org_creation_with_stringc                 C  s<   t jtdd tdƒ W d  ƒ dS 1 sw   Y  dS )z3ORG must have at least 1 field (organization name).zat least 1 field)Úmatchr   N)ÚpytestÚraisesÚ
ValueErrorr   )r   r   r   r   Ú$test_org_requires_at_least_one_field   s   
"ÿz5TestVOrgCreation.test_org_requires_at_least_one_fieldc                 C  sR   t dƒ}t|jƒdksJ ‚t dƒ}t|jƒdksJ ‚t dƒ}t|jƒdks'J ‚dS )z5ORG supports variable number of organizational units.©r   é   r   é   ©r   úNorth AmericaÚUSAÚ
Californiar   é   N)r   Úlenr   )r   Úorg1Úorg2Úorg3r   r   r   Útest_org_variable_length!   s   z)TestVOrgCreation.test_org_variable_lengthN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r)   r   r   r   r   r   
   ó    r   c                   @  r   )ÚTestVOrgNameAndUnitsz$Test vOrg name and units properties.c                 C  r   )z:name property returns the organization name (first field).r   r   N©r   Únamer   r   r   r   Útest_name_property3   r   z'TestVOrgNameAndUnits.test_name_propertyc                 C  r   )z&name property works with single field.r   r   Nr0   r   r   r   r   Útest_name_property_single_field8   r   z4TestVOrgNameAndUnits.test_name_property_single_fieldc                 C  r   )z?units property returns organizational units (remaining fields).r   )r   r	   N©r   Úunitsr   r   r   r   Útest_units_property=   r   z(TestVOrgNameAndUnits.test_units_propertyc                 C  r   )z=units property returns empty tuple when only name is present.r   r   Nr4   r   r   r   r   Ú test_units_property_single_fieldB   r   z5TestVOrgNameAndUnits.test_units_property_single_fieldc                 C  r   )z0units property returns all organizational units.r    )r!   r"   r#   r   Nr4   r   r   r   r   Útest_units_property_many_unitsG   r   z3TestVOrgNameAndUnits.test_units_property_many_unitsN)	r*   r+   r,   r-   r2   r3   r6   r7   r8   r   r   r   r   r/   0   r.   r/   c                   @  s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTestVOrgSerializationz Test vOrg to_ical and from_ical.c                 C  s    t dƒ}| ¡ }|dksJ ‚dS )z1ORG to_ical generates semicolon-separated format.r   s   ABC Inc.;Marketing;SalesN)r   Úto_ical)r   r   Úresultr   r   r   Útest_org_to_icalP   s   z&TestVOrgSerialization.test_org_to_icalc                 C  s   t  d¡}|dksJ ‚dS )zParse ORG from vCard format.r   r   N)r   Ú	from_ical)r   r;   r   r   r   Útest_org_from_icalV   s   
z(TestVOrgSerialization.test_org_from_icalc                 C  s.   d}t |ƒ}| ¡ }t  |¡}||ksJ ‚dS )z6ORG survives round-trip through to_ical and from_ical.)r   zNorth American Divisionr   N©r   r:   r=   )r   Úoriginalr   ÚicalÚparsedr   r   r   Útest_org_round_trip[   s
   
z)TestVOrgSerialization.test_org_round_tripN)r*   r+   r,   r-   r<   r>   rC   r   r   r   r   r9   M   s
    r9   c                   @  s    e Zd ZdZdd„ Zdd„ ZdS )ÚTestVOrgEscapingzTest vOrg escaping behavior.c                 C  s2   t dƒ}| ¡ }d|vsJ ‚| d¡dksJ ‚dS )z4Semicolons in ORG are field separators, not escaped.r   s   \;ó   ;r   N)r   r:   Úcount)r   r   rA   r   r   r   Ú-test_org_semicolons_not_escaped_as_separatorsg   s   z>TestVOrgEscaping.test_org_semicolons_not_escaped_as_separatorsc                 C  s:   t dƒ}| ¡ }d|v sJ ‚t  |¡}|d dksJ ‚dS )z2Commas within ORG fields ARE escaped per RFC 6350.)ú	ABC, Inc.r   s   \,r   rH   Nr?   )r   r   rA   rB   r   r   r   Útest_org_commas_in_name_escapedn   s
   
z0TestVOrgEscaping.test_org_commas_in_name_escapedN)r*   r+   r,   r-   rG   rI   r   r   r   r   rD   d   s    rD   c                   @  s   e Zd ZdZdd„ ZdS )ÚTestVOrgIcalValuezTest vOrg ical_value property.c                 C  s*   t dƒ}|j|jksJ ‚|jdksJ ‚dS )z-ical_value property returns the fields tuple.r   N)r   Ú
ical_valuer   r   r   r   r   Útest_ical_value_returns_fields{   s   z0TestVOrgIcalValue.test_ical_value_returns_fieldsN)r*   r+   r,   r-   rL   r   r   r   r   rJ   x   s    rJ   )r-   Ú
__future__r   r   Úicalendar.propr   r   r/   r9   rD   rJ   r   r   r   r   Ú<module>   s    &