ó
ç'ÊUc           @   sá   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 m	 Z	 d  d l
 m Z d  d l m Z m Z m Z d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e  j f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   TextTestResult(   t   unittest(   t   Spider(   t   Request(   t   Itemt   Field(   t   ContractsManager(   t   UrlContractt   ReturnsContractt   ScrapesContractt   TestItemc           B   s   e  Z e ƒ  Z e ƒ  Z RS(    (   t   __name__t
   __module__R   t   namet   url(    (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyR
      s   	t   ResponseMockc           B   s   e  Z d  Z RS(   s   http://scrapy.org(   R   R   R   (    (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyR      s   t
   TestSpiderc           B   sh   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   t   demo_spiderc         C   s   t  d d |  j ƒS(   sa    method which returns request
        @url http://scrapy.org
        @returns requests 1
        s   http://scrapy.orgt   callback(   R   t   returns_item(   t   selft   response(    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   returns_request   s    c         C   s   t  d | j ƒ S(   s]    method which returns item
        @url http://scrapy.org
        @returns items 1 1
        R   (   R
   R   (   R   R   (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyR   #   s    c         C   s   i | j  d 6S(   s]    method which returns item
        @url http://scrapy.org
        @returns items 1 1
        R   (   R   (   R   R   (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   returns_dict_item*   s    c         C   s   t  d | j ƒ S(   s]    method which returns item
        @url http://scrapy.org
        @returns items 0 0
        R   (   R
   R   (   R   R   (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   returns_fail1   s    c         C   s   i | j  d 6S(   s]    method which returns item
        @url http://scrapy.org
        @returns items 0 0
        R   (   R   (   R   R   (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   returns_dict_fail8   s    c         C   s   t  d d d | j ƒ S(   s|    returns item with name and url
        @url http://scrapy.org
        @returns items 1 1
        @scrapes name url
        R   t   testR   (   R
   R   (   R   R   (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   scrapes_item_ok?   s    c         C   s   i d d 6| j  d 6S(   s|    returns item with name and url
        @url http://scrapy.org
        @returns items 1 1
        @scrapes name url
        R   R   R   (   R   (   R   R   (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   scrapes_dict_item_okG   s    c         C   s   t  d | j ƒ S(   sw    returns item with no name
        @url http://scrapy.org
        @returns items 1 1
        @scrapes name url
        R   (   R
   R   (   R   R   (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   scrapes_item_failO   s    c         C   s   i | j  d 6S(   sw    returns item with no name
        @url http://scrapy.org
        @returns items 1 1
        @scrapes name url
        R   (   R   (   R   R   (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   scrapes_dict_item_failW   s    c         C   s   d S(   s7    method with no url
        @returns items 1 1
        N(    (   R   R   (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   parse_no_url_   s    (   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyR      s   									t   ContractsManagerTestc           B   sM   e  Z e e e g Z d  „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z RS(   c         C   s4   t  |  j ƒ |  _ t d d  d t d d ƒ |  _ d  S(   Nt   streamt   descriptionst	   verbosityi    (   R   t	   contractst   conmanR    t   Nonet   Falset   results(   R   (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   setUpi   s    c         C   s*   |  j  |  j j ƒ |  j  |  j j ƒ d  S(   N(   t   assertFalseR(   t   failurest   errors(   R   (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   should_succeedm   s    c         C   s*   |  j  |  j j ƒ |  j |  j j ƒ d  S(   N(   t
   assertTrueR(   R+   R*   R,   (   R   (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   should_failq   s    c         C   sº   t  ƒ  } |  j j | j ƒ } |  j t | ƒ d ƒ |  j t d „  | Dƒ ƒ t t t g ƒ ƒ |  j j	 | j |  j
 ƒ } |  j | d  ƒ |  j j	 | j |  j
 ƒ } |  j | d  ƒ d  S(   Ni   c         s   s   |  ] } t  | ƒ Vq d  S(   N(   t   type(   t   .0t   x(    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pys	   <genexpr>{   s    (   R   R%   t   extract_contractsR   t   assertEqualt   lent	   frozensetR   R   t   from_methodR(   t   assertNotEqualR&   R   (   R   t   spiderR$   t   request(    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   test_contractsu   s    	c         C   s  t  ƒ  } t ƒ  } |  j j | j |  j ƒ } | j | ƒ |  j ƒ  |  j j | j |  j ƒ } | j | ƒ |  j ƒ  |  j j | j	 |  j ƒ } | j | ƒ |  j ƒ  |  j j | j
 |  j ƒ } | j | ƒ |  j ƒ  |  j j | j |  j ƒ } | j | ƒ |  j ƒ  d  S(   N(   R   R   R%   R7   R   R(   R   R-   R   R   R   R/   R   (   R   R9   R   R:   (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   test_returns†   s"    		



c         C   sÞ   t  ƒ  } t ƒ  } |  j j | j |  j ƒ } | j | ƒ |  j ƒ  |  j j | j |  j ƒ } | j | ƒ |  j ƒ  |  j j | j	 |  j ƒ } | j | ƒ |  j
 ƒ  |  j j | j |  j ƒ } | j | ƒ |  j
 ƒ  d  S(   N(   R   R   R%   R7   R   R(   R   R-   R   R   R/   R   (   R   R9   R   R:   (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   test_scrapes£   s     		


(   R   R   R   R   R	   R$   R)   R-   R/   R;   R<   R=   (    (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyR    f   s   					N(   R   R    t   twisted.trialt   scrapy.spidersR   t   scrapy.httpR   t   scrapy.itemR   R   t   scrapy.contractsR   t   scrapy.contracts.defaultR   R   R	   R
   t   objectR   R   t   TestCaseR    (    (    (    s8   /home/travis/build/scrapy/scrapy/tests/test_contracts.pyt   <module>   s   M