コード例 #1
0
    def test_replace_all(self):
        applier = layers_applier.LayersApplier()
        applier.text = 'Prefix test <a href="url" data="test">link test</a> postfix text'
        applier.replace_all('test', 'linksecondword')

        replaced = 'Prefix linksecondword <a href="url" data="test">link linksecondword</a> postfix text'
        self.assertEquals(applier.text, replaced)
コード例 #2
0
    def test_enqueue(self):
        applier = layers_applier.LayersApplier()
        element = ('abcd', 'ABCD', [])
        applier.enqueue(element)

        priority, retrieved = applier.queue.get()
        self.assertEquals(priority, -4)
        self.assertEquals(retrieved, element)
コード例 #3
0
    def test_replace_at(self):
        text = 'The grey fox ABCD jumped ABCD over the fence ABCD'

        applier = layers_applier.LayersApplier()
        applier.text = text
        applier.replace_at('ABCD', '<a>ABCD</a>', [0, 2])

        self.assertEquals(
            applier.text,
            'The grey fox <a>ABCD</a> jumped ABCD over the fence <a>ABCD</a>')
コード例 #4
0
    def test_replace_at_case_sensitive(self):
        original = 'state'
        replacement = '<a href="link_url">state</a>'
        locations = [0, 1, 2]

        applier = layers_applier.LayersApplier()
        applier.text = "<em>(6)</em> <dfn> Under state law. </dfn> State law."
        applier.replace_at(original, replacement, locations)

        result = u"<em>(6)</em> <dfn> Under <a href=\"link_url\">state</a> law. </dfn> State law."
        self.assertEquals(applier.text, result)
コード例 #5
0
    def test_replace_skip_location(self):
        original = 'state'
        replacement = '<a href="link_url">state</a>'
        locations = [0, 2]

        applier = layers_applier.LayersApplier()
        applier.text = "<em>(6)</em> <dfn> Under state law. </dfn> state law. <dfn> state liability. </dfn>"
        applier.replace_at(original, replacement, locations)

        result = "<em>(6)</em> <dfn> Under <a href=\"link_url\">state</a> law. </dfn> state law. <dfn> <a href=\"link_url\">state</a> liability. </dfn>"
        self.assertEquals(applier.text, result)
コード例 #6
0
    def test_replace_no_original(self):
        original = 'federal'
        replacement = '<a href="link_url">state</a>'
        locations = [0, 1, 2]

        applier = layers_applier.LayersApplier()
        applier.text = "<em>(6)</em> <dfn> Under state law. </dfn> State law."
        applier.replace_at(original, replacement, locations)

        result = "<em>(6)</em> <dfn> Under state law. </dfn> State law."
        self.assertEquals(applier.text, result)
コード例 #7
0
    def test_list_enqueue(self):
        applier = layers_applier.LayersApplier()
        elements = [('abcd', 'ABCD', []), ('efghi', 'EFG', [12])]
        applier.enqueue_from_list(elements)

        priority, retrieved = applier.queue.get()
        self.assertEquals(priority, -5)
        self.assertEqual(elements[1], retrieved)

        priority, retrieved = applier.queue.get()
        self.assertEquals(priority, -4)
        self.assertEqual(elements[0], retrieved)
コード例 #8
0
    def test_apply_layers(self):
        # Tests same as above but from one level out.
        original = 'state'
        replacement = '<a href="link_url">state</a>'
        locations = [0, 2]
        text = ("<em>(6)</em> <dfn> Under state law. </dfn> state "
                "law. <dfn> state liability. </dfn>")

        applier = layers_applier.LayersApplier()
        applier.enqueue((original, replacement, locations))
        applier.apply_layers(text)

        result = ("<em>(6)</em> <dfn> Under <a href=\"link_url\">state</a> "
                  "law. </dfn> state law. <dfn> <a href=\"link_url\">state"
                  "</a> liability. </dfn>")
        self.assertEquals(applier.text, result)
コード例 #9
0
    def test_apply_layers_escaping(self):
        # See https://github.com/eregs/regulations-site/issues/514 and
        # https://github.com/fecgov/fec-eregs/issues/382
        #
        # It appears that we had a holdover step of unescaping that, thanks to
        # looser interpretations in Python 3.6 (specifically, ``&sec`` was
        # treated as a valid escape even without a trailing semicolon) started
        # breaking links that have a ``&section`` parameter.
        original = 'state'
        replacement = '<a href="link_url">state</a>'
        locations = [0, 2]
        text = ("<em>(6)</em> <dfn> Under state law. </dfn> state "
                "law. <dfn> state liability. </dfn>"
                "<a href='http://example.org?one=1&section2'>test</a>")

        applier = layers_applier.LayersApplier()
        applier.enqueue((original, replacement, locations))
        applier.apply_layers(text)

        result = ("<em>(6)</em> <dfn> Under <a href=\"link_url\">state</a> "
                  "law. </dfn> state law. <dfn> <a href=\"link_url\">state"
                  "</a> liability. </dfn>"
                  "<a href='http://example.org?one=1&section2'>test</a>")
        self.assertEquals(applier.text, result)