ó
EõMPc           @   s  d  d l  m Z d  d l m Z m Z d  d l m Z m Z m Z m	 Z	 d  d l
 m Z d  d l m Z 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 „  Z d „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   http(   t   settingst   global_settings(   t	   constantst   utilst	   get_levelt	   set_level(   t   MessageFailure(   t   default_storaget   base(   t   Message(   t   reverse(   t   TestCase(   t   override_settings(   t   ugettext_lazy(   t   skipIfc         C   s   t  d t j k d ƒ |  ƒ S(   Ns   django.contrib.auths#   django.contrib.auth isn't installed(   R   R   t   INSTALLED_APPS(   t   func(    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   skipUnlessAuthIsInstalled   s    c         C   sy   |  j  t j d ƒ |  j  d d ƒ |  j  t j d d d ƒ|  j  t j d ƒ |  j  t j d ƒ |  j  t j d	 ƒ d
 S(   sc   
    Adds 6 messages from different levels (including a custom one) to a storage
    instance.
    s   A generic info messagei   s   Some custom levels   A debugging messaget
   extra_tagss	   extra-tags	   A warnings   An errors   This was a triumph.N(   t   addR   t   INFOt   DEBUGt   WARNINGt   ERRORt   SUCCESS(   t   storage(    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   add_level_messages   s    t   override_settings_tagsc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s2   t  t |  ƒ j ƒ  t j |  _ t j ƒ  t _ d  S(   N(   t   superR   t   enableR	   t
   LEVEL_TAGSt   old_level_tagsR   t   get_level_tags(   t   self(    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyR   "   s    c         C   s#   t  t |  ƒ j ƒ  |  j t _ d  S(   N(   R   R   t   disableR    R	   R   (   R"   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyR#   )   s    (   t   __name__t
   __module__R   R#   (    (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyR   !   s   	t   BaseTestc        	   B   sg  e  Z e Z d  Z i e j d 6e j d 6e j d 6e j	 d 6e j
 d 6Z d „  Z d „  Z d „  Z d	 „  Z d0 d
 „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d e j ƒ d „  ƒ Z e d e j ƒ d „  ƒ Z e d e j ƒ d „  ƒ Z e d e d „  e j ƒ d e d „  e j ƒ d e d „  e j  ƒ d e j ƒ d „  ƒ Z! e d e d „  e j ƒ d e d „  e j ƒ d e d „  e j  ƒ d e j ƒ d „  ƒ Z" d  „  Z# d! „  Z$ d" „  Z% d# „  Z& d$ „  Z' d% „  Z( d& „  Z) d' „  Z* e d d( ƒ d) „  ƒ Z+ d* „  Z, e- d+ i d e j 6d, e j 6d, e j	 6d- e j
 6d. d( 6ƒ d/ „  ƒ Z. RS(1   s"   django.contrib.messages.tests.urlst   debugt   infot   successt   warningt   errorc         C   sN   t  d d d t j d d d d |  j j |  j j f ƒ |  _ |  j j ƒ  d  S(   Nt   TEMPLATE_DIRSt   TEMPLATE_CONTEXT_PROCESSORSt   MESSAGE_TAGSt    t   MESSAGE_STORAGEs   %s.%s(    (   R   R   R-   t   storage_classR%   R$   t   settings_overrideR   (   R"   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   setUp9   s    	c         C   s   |  j  j ƒ  d  S(   N(   R2   R#   (   R"   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   tearDownC   s    c         C   s
   t  j ƒ  S(   N(   R    t   HttpRequest(   R"   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   get_requestF   s    c         C   s
   t  j ƒ  S(   N(   R    t   HttpResponse(   R"   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   get_responseI   s    c         C   s(   |  j  |  j ƒ  ƒ } | p g  | _ | S(   s)  
        Returns the storage backend, setting its loaded data to the ``data``
        argument.

        This method avoids the storage ``_get`` method from getting called so
        that other parts of the storage backend can be tested independent of
        the message retrieval logic.
        (   R1   R6   t   _loaded_data(   R"   t   dataR   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   get_storageL   s    	c         C   sr   |  j  ƒ  } |  j | j ƒ | j t j d ƒ |  j | j ƒ | j t j d d d ƒ|  j t | ƒ d ƒ d  S(   Ns   Test message 1s   Test message 2R   t   tagi   (	   R;   t   assertFalset	   added_newR   R   R   t
   assertTruet   assertEqualt   len(   R"   R   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_addY   s    c         C   sd   |  j  ƒ  } |  j ƒ  } | j t j t d ƒ ƒ | j | ƒ |  j | | ƒ } |  j | d ƒ d  S(   Ns   lazy messagei   (	   R;   R8   R   R   R   R   t   updatet   stored_messages_countR@   (   R"   R   t   responset   storing(    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_add_lazy_translationa   s    c         C   sK   |  j  ƒ  } |  j ƒ  } | j | ƒ |  j | | ƒ } |  j | d ƒ d  S(   Ni    (   R;   R8   RC   RD   R@   (   R"   R   RE   RF   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_no_updatek   s
    c         C   sw   |  j  ƒ  } |  j ƒ  } | j t j d ƒ | j t j d d d ƒ| j | ƒ |  j | | ƒ } |  j | d ƒ d  S(   Ns   Test message 1R   R<   i   (   R;   R8   R   R   R   RC   RD   R@   (   R"   R   RE   RF   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_add_updater   s    c         C   sh   |  j  ƒ  } |  j ƒ  } | j t j d ƒ t | ƒ | j | ƒ |  j | | ƒ } |  j | d ƒ d  S(   Ns   Test message 3i    (	   t   get_existing_storageR8   R   R   R   t   listRC   RD   R@   (   R"   R   RE   RF   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_existing_add_read_update}   s    
c         C   sh   |  j  ƒ  } |  j ƒ  } t | ƒ | j t j d ƒ | j | ƒ |  j | | ƒ } |  j | d ƒ d  S(   Ns   Test message 3i   (	   RJ   R8   RK   R   R   R   RC   RD   R@   (   R"   R   RE   RF   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_existing_read_add_updateˆ   s    
t   MESSAGE_LEVELc   	      C   s  i g  t  d ƒ D] } d | ^ q d 6} t d ƒ } xÓ d D]Ë } t d
 d | f ƒ} |  j j | | d t ƒ} |  j | | ƒ |  j d | j k ƒ g  | d D] } t |  j	 | | ƒ ^ q¤ } |  j
 t | j d ƒ | ƒ x" | d D] } |  j | | ƒ qî Wq= Wd S(   s²   
        With the message middleware enabled, tests that messages are properly
        stored and then retrieved across the full request/redirect/response
        cycle.
        i   s   Test message %dt   messagess'   django.contrib.messages.tests.urls.showR'   R(   R)   R*   R+   s&   django.contrib.messages.tests.urls.addt   argst   followN(   s   debugs   infos   successR*   s   error(   t   rangeR   t   clientt   postt   Truet   assertRedirectsR?   t   contextR
   t   levelsR@   RK   t   assertContains(	   R"   t   xR:   t   show_urlt   levelt   add_urlRE   t   msgRO   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt    test_full_request_response_cycle“   s    '	*c         C   s  i g  t  d ƒ D] } d | ^ q d 6} t d ƒ } xÉ |  j j ƒ  D]¸ } t d d | f ƒ} |  j j | | d t ƒ} |  j | | ƒ |  j d | j	 k ƒ x" | d D] } |  j
 | | ƒ q­ W|  j j | ƒ } x" | d D] } |  j | | ƒ qä WqF Wd  S(   Ni   s   Test message %dRO   s9   django.contrib.messages.tests.urls.show_template_responses8   django.contrib.messages.tests.urls.add_template_responseRP   RQ   (   RR   R   RX   t   keysRS   RT   RU   RV   R?   RW   RY   t   gett   assertNotContains(   R"   RZ   R:   R[   R\   R]   RE   R^   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_with_template_responseª   s    '	c   	      C   s  i g  t  d ƒ D] } d | ^ q d 6} t d ƒ } g  } xj d D]b } | j g  | d D] } t |  j | | ƒ ^ qZ ƒ t d
 d | f ƒ} |  j j | | ƒ qC W|  j j | ƒ } |  j d | j	 k ƒ |  j
 t | j	 d ƒ | ƒ x" | d D] } |  j | | ƒ qù Wd S(   si   
        Tests that messages persist properly when multiple POSTs are made
        before a GET.
        i   s   Test message %dRO   s'   django.contrib.messages.tests.urls.showR'   R(   R)   R*   R+   s&   django.contrib.messages.tests.urls.addRP   N(   s   debugs   infos   successs   warnings   error(   RR   R   t   extendR
   RX   RS   RT   Ra   R?   RW   R@   RK   RY   (	   R"   RZ   R:   R[   RO   R\   R^   R]   RE   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_multiple_posts¾   s    '	+	R   c         C   s
   |  d k S(   Ns   django.contrib.messages(    (   t   app(    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   <lambda>×   s    t   MIDDLEWARE_CLASSESc         C   s
   d |  k S(   Nt   MessageMiddleware(    (   t   m(    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyRg   Ù   s    R-   c         C   s
   d |  k S(   Ns   context_processors.messages(    (   t   p(    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyRg   Û   s    c         C   s‚   i g  t  d ƒ D] } d | ^ q d 6} t d ƒ } xE d D]= } t d
 d | f ƒ} |  j t |  j j | | d t ƒq= Wd S(   sƒ   
        Tests that, when the middleware is disabled, an exception is raised
        when one attempts to store a message.
        i   s   Test message %dRO   s'   django.contrib.messages.tests.urls.showR'   R(   R)   R*   R+   s&   django.contrib.messages.tests.urls.addRP   RQ   N(   s   debugs   infos   successs   warnings   error(   RR   R   t   assertRaisesR   RS   RT   RU   (   R"   RZ   R:   R[   R\   R]   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_middleware_disabledÕ   s    '	c         C   s
   |  d k S(   Ns   django.contrib.messages(    (   Rf   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyRg   ð   s    c         C   s
   d |  k S(   NRi   (    (   Rj   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyRg   ò   s    c         C   s
   d |  k S(   Ns   context_processors.messages(    (   Rk   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyRg   ô   s    c         C   s¨   i g  t  d ƒ D] } d | ^ q d 6t d 6} t d ƒ } xd d D]\ } t d d | f ƒ} |  j j | | d t ƒ} |  j | | ƒ |  j d | j k ƒ qD Wd S(   s{   
        Tests that, when the middleware is disabled, an exception is not
        raised if 'fail_silently' = True
        i   s   Test message %dRO   t   fail_silentlys'   django.contrib.messages.tests.urls.showR'   R(   R)   R*   R+   s&   django.contrib.messages.tests.urls.addRP   RQ   N(   s   debugs   infos   successs   warnings   error(   RR   RU   R   RS   RT   RV   R=   RW   (   R"   RZ   R:   R[   R\   R]   RE   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt&   test_middleware_disabled_fail_silentlyî   s    $
	c         C   s   t  d ƒ ‚ d S(   sh   
        Returns the number of messages being stored after a
        ``storage.update()`` call.
        s&   This method must be set by a subclass.N(   t   NotImplementedError(   R"   R   RE   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyRD   	  s    c         C   s   t  d ƒ ‚ d  S(   Ns&   This method must be set by a subclass.(   Rp   (   R"   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_get  s    c         C   s1   |  j  t t j d ƒ t t j d d d ƒg ƒ S(   Ns   Test message 1s   Test message 2R   R<   (   R;   R
   R   R   (   R"   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyRJ     s    c         C   sR   |  j  ƒ  } |  j | j ƒ t | ƒ } |  j | j ƒ |  j | t | ƒ ƒ d S(   sd   
        Tests that reading the existing storage doesn't cause the data to be
        lost.
        N(   RJ   R=   t   usedRK   R?   R@   (   R"   R   R:   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_existing_read  s
    c         C   sC   |  j  ƒ  } |  j | j ƒ | j t j d ƒ |  j | j ƒ d  S(   Ns   Test message 3(   RJ   R=   R>   R   R   R   R?   (   R"   R   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_existing_add%  s    c         C   sw   |  j  ƒ  } |  j t | ƒ t j ƒ |  j ƒ  } | | _ |  j t | ƒ t j ƒ t | ƒ |  j t | ƒ d ƒ d  S(   Ni   (	   R6   R@   R   R   R   R;   t	   _messagesR   RA   (   R"   t   requestR   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_default_level+  s    	
c         C   st   |  j  ƒ  } |  j | ƒ } | | _ |  j t | d ƒ ƒ |  j t | ƒ d ƒ t | ƒ |  j t | ƒ d ƒ d  S(   Ni   i   (	   R6   R1   Ru   R?   R   R@   R   R   RA   (   R"   Rv   R   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_low_level9  s    	
c         C   st   |  j  ƒ  } |  j | ƒ } | | _ |  j t | d ƒ ƒ |  j t | ƒ d ƒ t | ƒ |  j t | ƒ d ƒ d  S(   Ni   i   (	   R6   R1   Ru   R?   R   R@   R   R   RA   (   R"   Rv   R   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_high_levelD  s    	
i   c         C   sU   |  j  ƒ  } |  j | ƒ } |  j t | ƒ d ƒ t | ƒ |  j t | ƒ d ƒ d  S(   Ni   i   (   R6   R1   R@   R   R   RA   (   R"   Rv   R   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_settings_levelO  s
    
c         C   sa   |  j  ƒ  } d | _ t | ƒ g  | D] } | j ^ q& } |  j | d d d d d d g ƒ d  S(   Ni    R(   R/   s   extra-tag debugR*   R+   R)   (   R;   R\   R   t   tagsR@   (   R"   R   R^   R{   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt	   test_tagsY  s    	
	R.   R/   t   badt   customc         C   sa   |  j  ƒ  } d | _ t | ƒ g  | D] } | j ^ q& } |  j | d d d d d d g ƒ d  S(   Ni    R(   R~   s	   extra-tagR/   R}   R)   (   R;   R\   R   R{   R@   (   R"   R   R^   R{   (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   test_custom_tagsb  s    		
	N(/   R$   R%   R   R1   t   urlsR   R   R   R   R   R   RX   R3   R4   R6   R8   t   NoneR;   RB   RG   RH   RI   RL   RM   R   R_   Rc   Re   t   filterR   R   Rh   R-   Rm   Ro   RD   Rq   RJ   Rs   Rt   Rw   Rx   Ry   Rz   R|   R   R   (    (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyR&   .   sp   



	
					
												
			



N(   t   djangoR    t   django.confR   R   t   django.contrib.messagesR   R   R   R   t   django.contrib.messages.apiR   t   django.contrib.messages.storageR   R	   t$   django.contrib.messages.storage.baseR
   t   django.core.urlresolversR   t   django.testR   t   django.test.utilsR   t   django.utils.translationR   t   django.utils.unittestR   R   R   R   R&   (    (    (    s;   ../Django//lib/python/django/contrib/messages/tests/base.pyt   <module>   s   "		