
2!V                 @   s   d  d l  m Z m 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 d  d l m Z e j e j o e j d d  d k  d
  Gd d   d e   Z d S)    )with_statementunicode_literalsN)TestCase)six)override_settings)settings)css_tag      z+Jinja can only run on Python < 3 and >= 3.3c               @   s   e  Z d  Z d Z d d   Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z	 e
 d d  d d    Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d  d!   Z d" d#   Z d$ d%   Z d& S)'TestJinja2CompressorExtensiona  
    Test case for jinja2 extension.

    .. note::
       At tests we need to make some extra care about whitespace. Please note
       that we use jinja2 specific controls (*minus* character at block's
       beginning or end). For more information see jinja2 documentation.
    c             C   s9   |  j  | j   | j   d | j   | j   f  d  S)Nz%r != %r)assertEqualstrip)selfresultexpected r   L/tmp/pip-build-0sboevxh/django-compressor/compressor/tests/test_jinja2ext.pyassertStrippedEqual   s    z1TestJinja2CompressorExtension.assertStrippedEqualc             C   sD   d d  l  } | |  _  d d l m } |  j  j d | g  |  _ d  S)Nr   )CompressorExtension
extensions)jinja2Zcompressor.contrib.jinja2extr   Environmentenv)r   r   r   r   r   r   setUp   s    	z#TestJinja2CompressorExtension.setUpc             C   s&   |  j  |  j j j |  j j d  d  S)Nz%{% compress %}Foobar{% endcompress %})assertRaisesr   
exceptionsTemplateSyntaxErrorr   from_string)r   r   r   r   'test_error_raised_if_no_arguments_given$   s    zETestJinja2CompressorExtension.test_error_raised_if_no_arguments_givenc             C   s&   |  j  |  j j j |  j j d  d  S)Nz){% compress foo %}Foobar{% endcompress %})r   r   r   r   r   r   )r   r   r   r   %test_error_raised_if_wrong_kind_given(   s    zCTestJinja2CompressorExtension.test_error_raised_if_wrong_kind_givenc             C   s&   |  j  |  j j j |  j j d  d  S)Nz,{% compress js %}Foobar{% endcompress css %})r   r   r   r   r   r   )r   r   r   r   -test_error_raised_if_wrong_closing_kind_given,   s    zKTestJinja2CompressorExtension.test_error_raised_if_wrong_closing_kind_givenc             C   s&   |  j  |  j j j |  j j d  d  S)Nz-{% compress css foo %}Foobar{% endcompress %})r   r   r   r   r   r   )r   r   r   r   %test_error_raised_if_wrong_mode_given0   s    zCTestJinja2CompressorExtension.test_error_raised_if_wrong_mode_givenCOMPRESS_ENABLEDFc             C   s   d j  d d d g  } d | d } |  j j |  } |  j | | j    d | d } |  j j |  } |  j | | j    d  S)N
zJ<link rel="stylesheet" href="css/one.css" type="text/css" charset="utf-8">z;<style type="text/css">p { border:5px solid green;}</style>zJ<link rel="stylesheet" href="css/two.css" type="text/css" charset="utf-8">z{% compress css %}z{% endcompress %}z{% endcompress css %})joinr   r   r   render)r   Ztag_bodyZtemplate_stringtemplater   r   r   test_compress_is_disabled4   s    z7TestJinja2CompressorExtension.test_compress_is_disabledc             C   s?   |  j  j d  } i t j d 6} |  j d | j |   d  S)Nz>{% compress js %}{% block js %}{% endblock %}{% endcompress %}
STATIC_URL )r   r   r   COMPRESS_URLr   r%   )r   r&   contextr   r   r   test_empty_tagD   s    z,TestJinja2CompressorExtension.test_empty_tagc             C   s?   |  j  j d  } i t j d 6} |  j d | j |   d  S)NzJ{% compress js %}{% block js %}
        {% endblock %}{% endcompress js %}r(   r)   )r   r   r   r*   r   r%   )r   r&   r+   r   r   r   test_empty_tag_with_kindI   s    		z6TestJinja2CompressorExtension.test_empty_tag_with_kindc             C   sK   |  j  j d  } i t j d 6} t d  } |  j | | j |   d  S)Na7  {% compress css -%}
        <link rel="stylesheet" href="{{ STATIC_URL }}css/one.css" type="text/css" charset="utf-8">
        <style type="text/css">p { border:5px solid green;}</style>
        <link rel="stylesheet" href="{{ STATIC_URL }}css/two.css" type="text/css" charset="utf-8">
        {% endcompress %}r(   z"/static/CACHE/css/e41ba2cc6982.css)r   r   r   r*   r   r   r%   )r   r&   r+   outr   r   r   test_css_tagO   s
    		z*TestJinja2CompressorExtension.test_css_tagc             C   sK   |  j  j d  } i t j d 6} t d  } |  j | | j |   d  S)Nz{% compress css -%}
        <link rel="stylesheet" href="{{ STATIC_URL }}css/nonasc.css" type="text/css" charset="utf-8">
        <style type="text/css">p { border:5px solid green;}</style>
        {% endcompress %}r(   z"/static/CACHE/css/799f6defe43c.css)r   r   r   r*   r   r   r%   )r   r&   r+   r.   r   r   r   test_nonascii_css_tagY   s
    		z3TestJinja2CompressorExtension.test_nonascii_css_tagc             C   sE   |  j  j d  } i t j d 6} d } |  j | | j |   d  S)Nz{% compress js -%}
        <script src="{{ STATIC_URL }}js/one.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript" charset="utf-8">obj.value = "value";</script>
        {% endcompress %}r(   zO<script type="text/javascript" src="/static/CACHE/js/066cd253eada.js"></script>)r   r   r   r*   r   r%   )r   r&   r+   r.   r   r   r   test_js_tagb   s
    		z)TestJinja2CompressorExtension.test_js_tagc             C   sE   |  j  j d  } i t j d 6} d } |  j | | j |   d  S)Nu   {% compress js -%}
        <script src="{{ STATIC_URL }}js/nonasc.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript" charset="utf-8">var test_value = "—";</script>
        {% endcompress %}r(   zO<script type="text/javascript" src="/static/CACHE/js/e214fe629b28.js"></script>)r   r   r   r*   r   r%   )r   r&   r+   r.   r   r   r   test_nonascii_js_tagk   s
    		z2TestJinja2CompressorExtension.test_nonascii_js_tagc             C   sE   |  j  j d  } i t j d 6} d } |  j | | j |   d  S)Nu   {% compress js -%}
        <script src="{{ STATIC_URL }}js/nonasc-latin1.js" type="text/javascript" charset="latin-1"></script>
        <script type="text/javascript">var test_value = "—";</script>
        {% endcompress %}r(   zO<script type="text/javascript" src="/static/CACHE/js/be9e078b5ca7.js"></script>)r   r   r   r*   r   r%   )r   r&   r+   r.   r   r   r   test_nonascii_latin1_js_tagt   s
    		z9TestJinja2CompressorExtension.test_nonascii_latin1_js_tagc             C   sT   |  j  j d  } i t j d 6} d j d d g  } |  j | | j |   d  S)Nz{% compress css, inline -%}
        <link rel="stylesheet" href="{{ STATIC_URL }}css/one.css" type="text/css" charset="utf-8">
        <style type="text/css">p { border:5px solid green;}</style>
        {% endcompress %}r(   r#   z0<style type="text/css">body { background:#990; }z$p { border:5px solid green;}</style>)r   r   r   r*   r$   r   r%   )r   r&   r+   r.   r   r   r   test_css_inline}   s    		z-TestJinja2CompressorExtension.test_css_inlinec             C   sE   |  j  j d  } i t j d 6} d } |  j | | j |   d  S)Nz{% compress js, inline -%}
        <script src="{{ STATIC_URL }}js/one.js" type="text/css" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript" charset="utf-8">obj.value = "value";</script>
        {% endcompress %}r(   zA<script type="text/javascript">obj={};obj.value="value";</script>)r   r   r   r*   r   r%   )r   r&   r+   r.   r   r   r   test_js_inline   s
    		z,TestJinja2CompressorExtension.test_js_inlinec          
   C   s^   |  j  d d   |  j j d  } Wd  QXd } i t  j d 6} |  j | | j |   d  S)Nr"   Fua   {% compress css %}<style type="text/css">/* русский текст */</style>{% endcompress %}zS<link rel="stylesheet" href="/static/CACHE/css/b2cec0f8cb24.css" type="text/css" />r(   )r   r   r   r*   r   r%   )r   r&   r.   r+   r   r   r   test_nonascii_inline_css   s
    z6TestJinja2CompressorExtension.test_nonascii_inline_cssN)__name__
__module____qualname____doc__r   r   r   r   r    r!   r   r'   r,   r-   r/   r0   r1   r2   r3   r4   r5   r6   r   r   r   r   r      s$   

					r   )r
   r
   )
__future__r   r   sysZunittestZdjango.testr   Zdjango.utilsr   Zdjango.test.utilsr   Zcompressor.confr   Zcompressor.tests.test_baser   ZskipIfPY3version_infor   r   r   r   r   <module>   s   %