import os
from django.test import TestCase
from compressor.templatetags.compress import CompressedCssNode, CompressedJsNode
from compressor.conf import settings
class CompressedNodeTestCase(TestCase):
    
    def setUp(self):
        settings.COMPRESS = True
        self.css = """
        
        
        
        """
        self.css_output = ''
        self.cssNode = CompressedCssNode(self.css)
        self.js = """
        
        
        """
        self.js_output = ''
        self.jsNode = CompressedJsNode(self.js)
        
    def test_css_split(self):
        out = [
            ('file', os.path.join(settings.MEDIA_ROOT, u'css/one.css')),
            ('hunk', u'p { border:5px solid green;}'),
            ('file', os.path.join(settings.MEDIA_ROOT, u'css/two.css')),
        ]
        self.assertEqual(out, self.cssNode.split_contents())
    def test_css_hunks(self):
        out = ['body { background:#990; }', u'p { border:5px solid green;}', 'body { color:#fff; }']
        self.assertEqual(out, self.cssNode.get_hunks())
    def test_css_concat(self):
        out = u'body { background:#990; }\np { border:5px solid green;}\nbody { color:#fff; }'
        self.assertEqual(out, self.cssNode.concat())
    def test_css_return_if_off(self):
        settings.COMPRESS = False
        self.assertEqual(self.css, self.cssNode.render())
    def test_css_return_if_on(self):
        self.assertEqual(self.css_output, self.cssNode.render())
    def test_js_split(self):
        out = [
            ('file', os.path.join(settings.MEDIA_ROOT, u'js/one.js')),
            ('hunk', u'obj.value = "value";'),
        ]
        self.assertEqual(out, self.jsNode.split_contents())
    def test_js_hunks(self):
        out = ['obj = {};', u'obj.value = "value";']
        self.assertEqual(out, self.jsNode.get_hunks())
    def test_js_concat(self):
        out = u'obj = {};\nobj.value = "value";'
        self.assertEqual(out, self.jsNode.concat())
    def test_js_return_if_off(self):
        settings.COMPRESS = False
        self.assertEqual(self.js, self.jsNode.render())
    def test_js_return_if_on(self):
        self.assertEqual(self.js_output, self.jsNode.render())