Ejemplo n.º 1
0
    def test_read_element(self):
        stream = Stream(
            '%angular:ng-repeat.my-class#my-id(class="test")></=  Hello  \n.next-element'
        )
        element = read_element(stream, Compiler())
        self.assertEqual(element.tag, 'angular:ng-repeat')
        self.assertEqual(element.id, 'my-id')
        self.assertEqual(element.classes, ['test', 'my-class'])
        self.assertEqual(dict(element.attributes), {'class': "test"})
        self.assertEqual(element.nuke_outer_whitespace, True)
        self.assertEqual(element.nuke_inner_whitespace, True)
        self.assertEqual(element.self_close, True)
        self.assertEqual(element.django_variable, True)
        self.assertEqual(element.inline_content, "Hello")
        self.assertEqual(stream.text[stream.ptr:], '.next-element')

        stream = Stream('%input{required}  ')
        element = read_element(stream, Compiler())
        self.assertEqual(element.tag, 'input')
        self.assertEqual(element.id, None)
        self.assertEqual(element.classes, [])
        self.assertEqual(dict(element.attributes), {'required': True})
        self.assertEqual(element.nuke_outer_whitespace, False)
        self.assertEqual(element.nuke_inner_whitespace, False)
        self.assertEqual(element.self_close,
                         True)  # input is implicitly self-closing
        self.assertEqual(element.django_variable, False)
        self.assertEqual(element.inline_content, '')
        self.assertEqual(stream.text[stream.ptr:], '')
Ejemplo n.º 2
0
    def test_read_element(self):
        stream = Stream('%angular:ng-repeat.my-class#my-id(class="test")></=  Hello  \n.next-element')
        element = read_element(stream)
        self.assertEqual(element.tag, 'angular:ng-repeat')
        self.assertEqual(element.id, 'my-id')
        self.assertEqual(element.classes, ['my-class', 'test'])
        self.assertEqual(dict(element.attributes), {'class': "test"})
        self.assertEqual(element.nuke_outer_whitespace, True)
        self.assertEqual(element.nuke_inner_whitespace, True)
        self.assertEqual(element.self_close, True)
        self.assertEqual(element.django_variable, True)
        self.assertEqual(element.inline_content, "Hello")
        self.assertEqual(stream.text[stream.ptr:], '.next-element')

        stream = Stream('%input{required}  ')
        element = read_element(stream)
        self.assertEqual(element.tag, 'input')
        self.assertEqual(element.id, None)
        self.assertEqual(element.classes, [])
        self.assertEqual(dict(element.attributes), {'required': None})
        self.assertEqual(element.nuke_outer_whitespace, False)
        self.assertEqual(element.nuke_inner_whitespace, False)
        self.assertEqual(element.self_close, True)  # input is implicitly self-closing
        self.assertEqual(element.django_variable, False)
        self.assertEqual(element.inline_content, '')
        self.assertEqual(stream.text[stream.ptr:], '')
Ejemplo n.º 3
0
    def test_parses_id(self):
        element = read_element(Stream('%div#someId.someClass'))
        assert element.id == 'someId'

        element = read_element(Stream('#someId.someClass'))
        assert element.id == 'someId'

        element = read_element(Stream('%div.someClass'))
        assert element.id is None
Ejemplo n.º 4
0
    def test_parses_tag(self):
        element = read_element(Stream('%span.class'))
        assert element.tag == 'span'

        # can have namespace and hypens
        element = read_element(Stream('%ng-tags:ng-repeat.class'))
        assert element.tag == 'ng-tags:ng-repeat'

        # defaults to div
        element = read_element(Stream('.class#id'))
        assert element.tag == 'div'
Ejemplo n.º 5
0
    def test_attribute_dictionary_properly_parses(self):
        element = read_element(Stream("%html{'xmlns':'http://www.w3.org/1999/xhtml', 'xml:lang':'en', 'lang':'en'}"))

        assert element.attributes == OrderedDict([
            ('xmlns', "http://www.w3.org/1999/xhtml"),
            ('xml:lang', "en"),
            ('lang', "en")
        ])
Ejemplo n.º 6
0
    def test_parses_classes(self):
        element = read_element(Stream('%div#someId.someClass'))
        assert element.classes == ['someClass']

        element = read_element(Stream('%div#someId.someClass.anotherClass'))
        assert element.classes == ['someClass', 'anotherClass']

        # classes before id
        element = read_element(Stream('%div.someClass.anotherClass#someId'))
        assert element.classes == ['someClass', 'anotherClass']

        # classes can contain hypens and underscores
        element = read_element(Stream('%div.-some-class-._another_class_'))
        assert element.classes == ['-some-class-', '_another_class_']

        # no class
        element = read_element(Stream('%div#someId'))
        assert element.classes == []
Ejemplo n.º 7
0
    def test_multiline_attributes(self):
        element = read_element(Stream("""%link{'rel': 'stylesheet', 'type': 'text/css',
            'href': '/long/url/to/stylesheet/resource.css'}"""))

        assert element.attributes == OrderedDict([
            ('rel', "stylesheet"),
            ('type', "text/css"),
            ('href', "/long/url/to/stylesheet/resource.css")
        ])
Ejemplo n.º 8
0
 def test_attribute_merges_ids_properly(self):
     element = read_element(Stream("%div#someId{'id':'hello'}"))
     assert element.id == 'someId_hello'
Ejemplo n.º 9
0
 def test_knows_when_its_not_django_tag(self):
     element = read_element(Stream("%div Some Text"))
     assert element.django_variable is False
Ejemplo n.º 10
0
 def test_properly_detects_django_tag(self):
     element = read_element(Stream("%div= $someVariable"))
     assert element.django_variable
Ejemplo n.º 11
0
 def test_can_close_a_non_self_closing_tag(self):
     element = read_element(Stream("%div/"))
     assert element.self_close
Ejemplo n.º 12
0
 def test_does_not_close_a_non_self_closing_tag(self):
     element = read_element(Stream("%div"))
     assert element.self_close is False
Ejemplo n.º 13
0
 def test_self_closes_a_self_closing_tag(self):
     element = read_element(Stream(r"%br"))
     assert element.self_close
Ejemplo n.º 14
0
 def test_can_use_arrays_for_id_in_attributes(self):
     element = read_element(Stream("%div#someId{'id':['more', 'andMore']}"))
     assert element.id == 'someId_more_andMore'
Ejemplo n.º 15
0
    def test_grabs_inline_tag_content(self):
        element = read_element(Stream("%div Some Text"))
        assert element.inline_content == 'Some Text'

        element = read_element(Stream("%div {% trans 'hello' %}"))
        assert element.inline_content == "{% trans 'hello' %}"
Ejemplo n.º 16
0
 def _read_element(text):
     return read_element(Stream(text), Compiler())
Ejemplo n.º 17
0
    def test_attribute_merges_classes_properly(self):
        element = read_element(Stream("%div.someClass.anotherClass{'class':'hello'}"))

        assert element.classes == ['someClass', 'anotherClass', 'hello']