o
    e                     @   s   d 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	 zddl
mZ W n ey5   ddlmZ Y nw ddlZejdG d	d
 d
eZG dd deZG dd deZG dd deZdS )z+Test case for autocomplete implementations.    N)VERSION)ContentType)StaticLiveServerTestCase)transaction)reversecls_browserc                   @   sL   e Zd ZdZejdddd Zdd Zdd	 Zd
d Z	dd Z
dd ZdS )AutocompleteTestCasez<Provide a class-persistent selenium instance and assertions.class)scopec                 C   s   ||j _dS )z1Set splinter browser as `browser` class property.N)clsbrowser)selfrequestsession_browser r   Y/var/www/html/Testing_prj/Navya-Bakers/venv/lib/python3.10/site-packages/dal/test/case.pyr      s   z AutocompleteTestCase.cls_browserc                 C   s@   | j d| j|f  d| j jv r| j dj  |   dS )zOpen a URL.z%s%sz/admin/login/zLog inN)r   visitlive_server_urlurlfind_by_valuefirstclickwait_script)r   r   r   r   r   get   s   zAutocompleteTestCase.getc                 C   s   | j |j  dS )z!Click an element by css selector.N)r   find_by_cssr   r   )r   selectorr   r   r   r   )   s   zAutocompleteTestCase.clickc                 C   s(   d| j |j_| j |j| dS )z)Enter text in an element by css selector. N)r   r   r   valuetype)r   r   textr   r   r   
enter_text-   s   zAutocompleteTestCase.enter_textc                 C   s(   | j |}|r|jjdu sJ dS dS )z1Assert an element is not visible by css selector.FNr   r   r   visibler   r   er   r   r   assert_not_visible2   s   z'AutocompleteTestCase.assert_not_visiblec                 C   s    | j |j}|jdu sJ dS )z-Assert an element is visible by css selector.TNr!   r#   r   r   r   assert_visible7   s   z#AutocompleteTestCase.assert_visibleN)__name__
__module____qualname____doc__pytestfixturer   r   r   r    r%   r&   r   r   r   r   r      s    

r   c                   @   s    e Zd ZdZdd Zdd ZdS )
AdminMixinz1Mixin for tests that should happen in ModelAdmin.c                 K   s"   t d| jjj| jjj|f |dS )z/Return a modeladmin url for a model and action.zadmin:%s_%s_%s)kwargs)r   model_meta	app_label
model_name)r   actionr.   r   r   r   get_modeladmin_url@   s   zAdminMixin.get_modeladmin_urlc                 C   s>   |   }tt|}||d |d|  }| jd| dS )zFill in the name input.Nname)idintlenr   fill)r   ihalfnot_idr   r   r   	fill_nameH   s   zAdminMixin.fill_nameN)r'   r(   r)   r*   r4   r=   r   r   r   r   r-   =   s    r-   c                   @   s   e Zd ZdZejdd ZdS )OptionMixinz'Mixin to make a unique option per test.c                 C   s8   t t }tdk r|dd}| jjj|d\}}|S )z8Create a unique option from self.model into self.option.)   
   -r   )r5   )struuiduuid1r   replacer/   objectsget_or_create)r   unique_nameoptioncreatedr   r   r   create_optionS   s   
zOptionMixin.create_optionN)r'   r(   r)   r*   r   atomicrK   r   r   r   r   r>   P   s    r>   c                       s    e Zd ZdZ fddZ  ZS )ContentTypeOptionMixinz(Same as option mixin, with content type.c                    s"   t t|  }tj|}||fS )zReturn option, content type.)superrM   rK   r   rF   get_for_model)r   rI   ctype	__class__r   r   rK   d   s   z$ContentTypeOptionMixin.create_option)r'   r(   r)   r*   rK   __classcell__r   r   rQ   r   rM   a   s    rM   )r*   rC   djangor   "django.contrib.contenttypes.modelsr   "django.contrib.staticfiles.testingr   	django.dbr   django.urlsr   ImportErrordjango.core.urlresolversr+   markusefixturesr   objectr-   r>   rM   r   r   r   r   <module>   s"    
+