Skip to content

Commit

Permalink
" and ' are also allowed between ()
Browse files Browse the repository at this point in the history
refactor and cleanup
more tests
  • Loading branch information
gotcha committed Nov 20, 2023
1 parent ff7562e commit 3dd6f14
Show file tree
Hide file tree
Showing 4 changed files with 385 additions and 16 deletions.
3 changes: 2 additions & 1 deletion docs/HISTORY.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ Changelog
5.0.0b4 (unreleased)
--------------------

- Nothing changed yet.
- Fix ck_ruid_to_url transform for tags with style and url("resolveuid/xxxx")
[gotcha]


5.0.0b3 (2023-11-13)
Expand Down
348 changes: 346 additions & 2 deletions src/collective/ckeditor/tests/test_transform.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,36 @@ def testFindTagA(self):
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))

def testFindTagAWithAbsoluteURL(self):
from collective.ckeditor.transforms import ck_ruid_to_url
# single quotes
text = "<a href='http://my-domain/plone/resolveuid/abcdef'>Link</a>"
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 0)
# double quotes
text = '<a href="http://my-domain/plone/resolveuid/abcdef">Link</a>'
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 0)

def testFindTagAWithAnchor(self):
from collective.ckeditor.transforms import ck_ruid_to_url
# single quotes
text = "<a href='resolveuid/abcdef#bla'>Link</a>"
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(tags[0], ("<a href='resolveuid/abcdef#bla'>",
'abcdef', 'resolveuid/abcdef'))
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))
# double quotes
text = '<a href="resolveuid/abcdef#bla">Link</a>'
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(tags[0], ('<a href="resolveuid/abcdef#bla">',
'abcdef', 'resolveuid/abcdef'))
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))

def testFindTagEmbed(self):
from collective.ckeditor.transforms import ck_ruid_to_url
# single quotes
Expand All @@ -61,6 +91,278 @@ def testFindTagEmbed(self):
self.assertEquals(unique, set(["abcdef"]))

def testFindTagWithStyle(self):
from collective.ckeditor.transforms import ck_ruid_to_url
# single quotes
text = (
"<div style='background-image=url(&quot;resolveuid/abcdef&quot;);'>"
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
("<div style='background-image=url(&quot;resolveuid/abcdef&quot;);'>",
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))
# double quotes
text = (
'<div style="background-image=url(&quot;resolveuid/abcdef&quot;);">'
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
('<div style="background-image=url(&quot;resolveuid/abcdef&quot;);">',
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))

def testFindTagWithStyleAndViewInUrl(self):
from collective.ckeditor.transforms import ck_ruid_to_url
# single quotes
text = (
"<div style='background-image=url(&quot;resolveuid/abcdef/image&quot;);'>"
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
("<div style='background-image=url(&quot;resolveuid/abcdef/image&quot;);'>",
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))
# double quotes
text = (
'<div style="background-image=url(&quot;resolveuid/abcdef/image&quot;);">'
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
('<div style="background-image=url(&quot;resolveuid/abcdef/image&quot;);">',
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))

def testFindTagWithMoreStyle(self):
from collective.ckeditor.transforms import ck_ruid_to_url
# single quotes
text = (
"<div style='border-color: red; "
"background-image=url(&quot;resolveuid/abcdef&quot;);'>"
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
("<div style='border-color: red; "
"background-image=url(&quot;resolveuid/abcdef&quot;);'>",
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))
# double quotes
text = (
'<div style="border-color: red; '
'background-image=url(&quot;resolveuid/abcdef&quot;);">'
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
('<div style="border-color: red; '
'background-image=url(&quot;resolveuid/abcdef&quot;);">',
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))

def testFindTagWithEvenMoreStyle(self):
from collective.ckeditor.transforms import ck_ruid_to_url
# single quotes
text = (
"<div style='border-color: red; "
"background-image=url(&quot;resolveuid/abcdef&quot;); "
"border-style:solid'>"
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
("<div style='border-color: red; "
"background-image=url(&quot;resolveuid/abcdef&quot;); "
"border-style:solid'>",
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))
# double quotes
text = (
'<div style="border-color: red; '
'background-image=url(&quot;resolveuid/abcdef&quot;); '
'border-style:solid">'
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
('<div style="border-color: red; '
'background-image=url(&quot;resolveuid/abcdef&quot;); '
'border-style:solid">',
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))

def testFindTagWithStyleWithAposEntity(self):
from collective.ckeditor.transforms import ck_ruid_to_url
# single quotes
text = (
"<div style='background-image=url(&apos;resolveuid/abcdef&apos;);'>"
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
("<div style='background-image=url(&apos;resolveuid/abcdef&apos;);'>",
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))
# double quotes
text = (
'<div style="background-image=url(&apos;resolveuid/abcdef&apos;);">'
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
('<div style="background-image=url(&apos;resolveuid/abcdef&apos;);">',
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))

def testFindTagWithStyleAndViewInUrlWithAposEntity(self):
from collective.ckeditor.transforms import ck_ruid_to_url
# single quotes
text = (
"<div style='background-image=url(&apos;resolveuid/abcdef/image&apos;);'>"
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
("<div style='background-image=url(&apos;resolveuid/abcdef/image&apos;);'>",
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))
# double quotes
text = (
'<div style="background-image=url(&apos;resolveuid/abcdef/image&apos;);">'
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
('<div style="background-image=url(&apos;resolveuid/abcdef/image&apos;);">',
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))

def testFindTagWithMoreStyleWithAposEntity(self):
from collective.ckeditor.transforms import ck_ruid_to_url
# single quotes
text = (
"<div style='border-color: red; "
"background-image=url(&apos;resolveuid/abcdef&apos;);'>"
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
("<div style='border-color: red; "
"background-image=url(&apos;resolveuid/abcdef&apos;);'>",
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))
# double quotes
text = (
'<div style="border-color: red; '
'background-image=url(&apos;resolveuid/abcdef&apos;);">'
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
('<div style="border-color: red; '
'background-image=url(&apos;resolveuid/abcdef&apos;);">',
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))

def testFindTagWithEvenMoreStyleWithAposEntity(self):
from collective.ckeditor.transforms import ck_ruid_to_url
# single quotes
text = (
"<div style='border-color: red; "
"background-image=url(&apos;resolveuid/abcdef&apos;); "
"border-style:solid'>"
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
("<div style='border-color: red; "
"background-image=url(&apos;resolveuid/abcdef&apos;); "
"border-style:solid'>",
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))
# double quotes
text = (
'<div style="border-color: red; '
'background-image=url(&apos;resolveuid/abcdef&apos;); '
'border-style:solid">'
"content</div>"
)
tags, unique = ck_ruid_to_url.find_tags_with_resolveuid(text)
self.assertEquals(len(tags), 1)
self.assertEquals(
tags[0],
('<div style="border-color: red; '
'background-image=url(&apos;resolveuid/abcdef&apos;); '
'border-style:solid">',
'abcdef', 'resolveuid/abcdef')
)
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))

def testFindTagWithStyleWithoutQuotEntity(self):
from collective.ckeditor.transforms import ck_ruid_to_url
# single quotes
text = (
Expand Down Expand Up @@ -91,7 +393,7 @@ def testFindTagWithStyle(self):
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))

def testFindTagWithMoreStyle(self):
def testFindTagWithMoreStyleWithoutQuotEntity(self):
from collective.ckeditor.transforms import ck_ruid_to_url
# single quotes
text = (
Expand Down Expand Up @@ -126,7 +428,7 @@ def testFindTagWithMoreStyle(self):
self.assertEquals(len(unique), 1)
self.assertEquals(unique, set(["abcdef"]))

def testFindTagWithEvenMoreStyle(self):
def testFindTagWithEvenMoreStyleWithoutQuotEntity(self):
from collective.ckeditor.transforms import ck_ruid_to_url
# single quotes
text = (
Expand Down Expand Up @@ -192,6 +494,34 @@ def mocked(uid):
original, compute_url=mocked)
self.assertEquals(final, "<img src='/Plone/ABCDEF' />")

original = (
"<div style='border-color: red; "
"background-image=url(&quot;resolveuid/abcdef&quot;); "
"border-style:solid'>"
"content</div>"
)
final = ck_ruid_to_url.replace_resolveuid_urls_with_absolute_urls(
original, compute_url=mocked)
self.assertEquals(
final,
"<div style='border-color: red; "
"background-image=url(&quot;/Plone/ABCDEF&quot;); "
"border-style:solid'>content</div>")

original = (
"<div style='border-color: red; "
"background=url(&quot;resolveuid/abcdef&quot;); "
"border-style:solid'>"
"content</div>"
)
final = ck_ruid_to_url.replace_resolveuid_urls_with_absolute_urls(
original, compute_url=mocked)
self.assertEquals(
final,
"<div style='border-color: red; "
"background=url(&quot;/Plone/ABCDEF&quot;); "
"border-style:solid'>content</div>")

original = (
"<div style='border-color: red; "
"background-image=url(resolveuid/abcdef); "
Expand All @@ -205,3 +535,17 @@ def mocked(uid):
"<div style='border-color: red; "
"background-image=url(/Plone/ABCDEF); "
"border-style:solid'>content</div>")

original = (
"<div style='border-color: red; "
"background=url(resolveuid/abcdef); "
"border-style:solid'>"
"content</div>"
)
final = ck_ruid_to_url.replace_resolveuid_urls_with_absolute_urls(
original, compute_url=mocked)
self.assertEquals(
final,
"<div style='border-color: red; "
"background=url(/Plone/ABCDEF); "
"border-style:solid'>content</div>")
Loading

0 comments on commit 3dd6f14

Please sign in to comment.