3
(h                 @   s   d dl mZmZ d dlZd dl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 G dd deeZG d	d
 d
e	jeeZdS )    )unicode_literalsabsolute_importN)LiveServerTestCase)six)import_string)capfirstc                   s8   e Zd Zg ZdZ fddZedd Zdd Z  Z	S )SeleniumTestCaseBaseNc                s   t t| j| |||fdd jsDt fddtD  rHS jrjd }|_tjj	 }xNjdd D ]<}| j| t
dt||f f|j	d	}t||j| qzW S tjd
S )z
        Dynamically create new classes and add them to the test module when
        multiple browsers specs are provided (e.g. --selenium=firefox,chrome).
        c                s   | j dott | S )Ntest)
startswithcallablegetattr)n)
test_class L/tmp/pip-install-q3hcpn_q/django-nested-admin/nested_admin/tests/selenium.py<lambda>   s    z.SeleniumTestCaseBase.__new__.<locals>.<lambda>c             3   s   | ]} |V  qd S )Nr   ).0name)is_test_attrr   r   	<genexpr>   s    z/SeleniumTestCaseBase.__new__.<locals>.<genexpr>r      Nz%s%s)browser
__module__zNo browsers specified.)superr   __new__r   anydirbrowserssysmodulesr   strr   setattr__name__unittestskip)clsr   basesattrsZfirst_browsermoduler   Zbrowser_test_class)	__class__)r   r   r   r      s"    "
zSeleniumTestCaseBase.__new__c             C   s   t d| S )Nz)selenium.webdriver.%s.webdriver.WebDriver)r   )r%   r   r   r   r   import_webdriver3   s    z%SeleniumTestCaseBase.import_webdriverc             C   s   drt dd dD rddlm} tjd }tjd }|jj}d	|d
< d|d< d|d< tjjd|d< tjjdrtjd |d< tjjdrtjd dg|d< d||f }|j||d}|j	d d	| _
|S | j| j
 S )NFc             S   s   g | ]}t jj|qS r   )osenvironget)r   kr   r   r   
<listcomp>8   s    z9SeleniumTestCaseBase.create_webdriver.<locals>.<listcomp>SAUCE_USERNAMESAUCE_ACCESS_KEYTRAVISr   )	webdriverZchromeZbrowserNamez50.0versionz
OS X 10.11platformZTRAVIS_JOB_NUMBERztunnel-identifierZTRAVIS_BUILD_NUMBERbuildZTRAVIS_PYTHON_VERSIONZCItagsz"http://%s:%s@localhost:4445/wd/hub)Zcommand_executordesired_capabilities
   )r0   r1   r2   )allseleniumr3   r+   r,   ZDesiredCapabilitiesZCHROMEr-   ZRemoteimplicitly_waitr   r*   )selfr3   usernameZ
access_keyr8   Zhub_urlZdriverr   r   r   create_webdriver7   s*    


z%SeleniumTestCaseBase.create_webdriver)
r"   r   __qualname__r   r   r   classmethodr*   r?   __classcell__r   r   )r)   r   r      s
    r   c                   s0   e Zd Ze fddZe fddZ  ZS )SeleniumTestCasec                s(   | j  | _| jjd tt| j  d S )Nr9   )r?   r;   r<   r   rC   
setUpClass)r%   )r)   r   r   rD   U   s    
zSeleniumTestCase.setUpClassc                s&   t | dr| jj  tt| j  d S )Nr;   )hasattrr;   quitr   rC   _tearDownClassInternal)r%   )r)   r   r   rG   [   s    

z'SeleniumTestCase._tearDownClassInternal)r"   r   r@   rA   rD   rG   rB   r   r   )r)   r   rC   S   s   rC   )
__future__r   r   r+   r   r#   Zdjango.testr   Zdjango.utilsr   Zdjango.utils.module_loadingr   Zdjango.utils.textr   typer   with_metaclassrC   r   r   r   r   <module>   s   F