Exemple #1
0
    def test_def_save_each(self):
        expect = {
            'first': {
                'items': [{
                    'url': '/local/a',
                    'desc': 'first nav item'
                }, {
                    'url': '/local/b',
                    'desc': 'second nav item'
                }]
            },
            'second': {
                'items': [{
                    'url': 'http://ext.com/a',
                    'desc': 'first content link'
                }, {
                    'url': 'http://ext.com/b',
                    'desc': 'second content link'
                }]
            }
        }
        TMPL = """
            def: simple
                $ li a
                    save each               : items
                        | [href] ;              : url
                        | text ;                : desc

            $ #first-ul
                simple ;                : first
            $ #second-ul
                simple ;                : second
        """
        tt = TakeTemplate(TMPL)
        data = tt(html_fixture)
        assert data == expect
        TMPL = """
            def: simple
                $ li a
                    save each               : items
                        | [href] ;              : url
                        | text ;                : desc

            $ #first-ul ; simple ;      : first
            $ #second-ul ; simple ;     : second
        """
        tt = TakeTemplate(TMPL)
        data = tt(html_fixture)
        assert data == expect
Exemple #2
0
 def test_deep_save_alias(self):
     TMPL = """
         : parent.value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['parent']['value'].html() == pq_doc.html()
Exemple #3
0
 def test_css_sub_ctx_save(self):
     TMPL = """
         $ h1 | 0 text ; save: value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['value'] == 'Text in h1'
Exemple #4
0
 def test_multiple_inline_sub_ctx(self):
     TMPL = """
         $ h1 ; | 0 ; | text ; : value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['value'] == 'Text in h1'
Exemple #5
0
 def test_attr_text_error(self):
     TMPL = """
         $ h1 | [href] text
             save: fail
     """
     with pytest.raises(UnexpectedTokenError):
         tt = TakeTemplate(TMPL)
Exemple #6
0
 def test_invalid_query_error(self):
     TMPL = """
         .hm | [href]
             hm: fail
     """
     with pytest.raises(InvalidDirectiveError):
         tt = TakeTemplate(TMPL)
Exemple #7
0
 def test_deep_save_each(self):
     TMPL = """
         $ nav
             $ a
                 save each: nav.items
                     | [href]
                         save: item.url
                     | text
                         save: item.text
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     expect = {
         'nav': {
             'items': [{
                     'item': {
                         'url': '/local/a',
                         'text': 'first nav item'
                     }
                 },{
                     'item': {
                         'url': '/local/b',
                         'text': 'second nav item'
                     }
                 }
             ]
         }
     }
     assert data == expect
Exemple #8
0
 def test_invalid_directive_statement_error(self):
     TMPL = """
         $ h1 | [href]
             save fail
     """
     with pytest.raises(InvalidDirectiveError):
         tt = TakeTemplate(TMPL)
Exemple #9
0
    def test_verbose_url_regexp(self):
        TMPL = """
            accessor: url parts
                ```
                    (https?)
                    (://)
                    ([^/]+)
                    (?:/(.+))?
                ```
                    set context

            $ #second-ul a
                save each                   : urls
                    | [href]
                        url parts
                            rx match
                                | 1 ;           : protocol
                                | 3 ;           : domain
                                | 4 ;           : page
        """
        tt = TakeTemplate(TMPL)
        data = tt(html_fixture)
        expect = [
            {
                'protocol': 'http',
                'domain': 'ext.com',
                'page': 'a'
            },
            {
                'protocol': 'http',
                'domain': 'ext.com',
                'page': 'b'
            }
        ]
        assert data['urls'] == expect
Exemple #10
0
 def test_save(self):
     TMPL = """
         save: value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['value'].html() == pq_doc.html()
Exemple #11
0
 def test_css_sub_ctx_save_alias_nested(self):
     TMPL = """
         $ h1 | 0 text ; : parent.value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['parent']['value'] == 'Text in h1'
Exemple #12
0
 def test_template_compiles(self):
     TMPL = """
         $ h1 | text
             save: value
     """
     tt = TakeTemplate(TMPL)
     assert tt
Exemple #13
0
 def test_neg_index(self):
     TMPL = """
         $ a | -1 text
             save: value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['value'] == 'second content link'
Exemple #14
0
 def test_comments_id_selector(self):
     TMPL = """
         $ #id-on-h1 | [id]
             save: value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data == {'value': 'id-on-h1'}
Exemple #15
0
 def test_absent_neg_index(self):
     TMPL = """
         $ notpresent | -1 text
             save: value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['value'] == ''
Exemple #16
0
 def test_save_absent_attr(self):
     TMPL = """
         $ h1 | [mia]
             save: value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['value'] == None
Exemple #17
0
 def test_save_attr(self):
     TMPL = """
         $ h1 | [id]
             save: value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['value'] == 'id-on-h1'
Exemple #18
0
 def test_query_deep_save(self):
     TMPL = """
         $ h1 | text
             save: deep.value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data == {'deep': {'value': 'Text in h1'}}
Exemple #19
0
 def test_inline_namespace(self):
     TMPL = """
         $ li ; +                            : parent
             | 0 text ;                          : value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['parent']['value'] == 'first nav item'
Exemple #20
0
 def test_save_css_text_query(self):
     TMPL = """
         $ h1 | text
             save: value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data == {'value': 'Text in h1'}
Exemple #21
0
 def test_save_css_index_text_query(self):
     TMPL = """
         $ a | 0 text
             save: value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['value'] == 'first nav item'
Exemple #22
0
 def test_alias_save_text(self):
     TMPL = """
         +                       : parent
             $ h1 | 0 text ;         : value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['parent']['value'] == 'Text in h1'
Exemple #23
0
 def test_save_css_index_query(self):
     TMPL = """
         $ a | 0
             save: value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['value'].html() == pq_doc('a').eq(0).html()
Exemple #24
0
 def test_save_css_query_hard_tabs(self):
     TMPL = """
t\t$ h1
t\t\tsave: value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['value'].html() == pq_doc('h1').html()
Exemple #25
0
 def test_sub_ctx_save_hard_tabs(self):
     TMPL = """
t\t$ section
t\t\t\t$ ul\t|\t\t[id]
t\t\t\t\t\tsave: \t \tvalue
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data == {'value': 'second-ul'}
Exemple #26
0
 def test_sub_ctx_save_alias(self):
     TMPL = """
         $ section
             $ ul | [id]
                 : value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data == {'value': 'second-ul'}
Exemple #27
0
 def test_sub_ctx_save_alias_empty(self):
     TMPL = """
         $ nav
             $ ul | 1 [id]
                 : value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data == {'value': None}
Exemple #28
0
 def test_invalid_save_each_context(self):
     TMPL = """
         $ li
             save each: items
             $ h1
                 save: fail
     """
     with pytest.raises(TakeSyntaxError):
         tt = TakeTemplate(TMPL)
Exemple #29
0
 def test_basic_own_text(self):
     TMPL = """
         $ #not-all-own-text
             | text ;        save: full_text
             | own_text ;    save: own_text
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['full_text'] == 'own text not own text more own text'
     assert data['own_text'] == 'own text  more own text'
Exemple #30
0
 def test_merge_only_prop(self):
     TMPL = """
         def: simple
             $ li | 0 text
                 save: value
         simple
             merge: value
     """
     tt = TakeTemplate(TMPL)
     data = tt(html_fixture)
     assert data['value'] == 'first nav item'