Skip to content

Commit

Permalink
Merge 1868017 into 9e6afae
Browse files Browse the repository at this point in the history
  • Loading branch information
tisto committed Sep 25, 2020
2 parents 9e6afae + 1868017 commit 3790818
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 8 deletions.
8 changes: 6 additions & 2 deletions src/plone/restapi/deserializer/blocks.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,11 @@ def __call__(self, block):
entity_map = block.get("text", {}).get("entityMap", {})
for entity in entity_map.values():
if entity.get("type") == "LINK":
href = entity.get("data", {}).get("href", "")
entity["data"]["href"] = path2uid(context=self.context, link=href)
href = entity.get("data", {}).get("url", "")
entity["data"]["url"] = path2uid(context=self.context, link=href)
print( # noqa
"SERIALIZE TEXT BLOCK: {} -> {}".format(href, entity["data"]["url"])
)
return block


Expand Down Expand Up @@ -157,4 +160,5 @@ def __init__(self, context, request):
def __call__(self, block):
url = block.get("url", "")
block["url"] = path2uid(context=self.context, link=url)
print("SERIALIZE IMAGE: {} -> {}".format(url, block["url"])) # noqa
return block
100 changes: 94 additions & 6 deletions src/plone/restapi/tests/test_resolveuid.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,105 @@
# -*- coding: utf-8 -*-
from plone.app.testing import login
from plone.app.testing import logout
from plone.app.testing import setRoles
from plone.app.testing import SITE_OWNER_NAME
from plone.app.testing import SITE_OWNER_PASSWORD
from plone.app.testing import TEST_USER_ID
from plone.dexterity.utils import iterSchemata
from plone.namedfile.file import NamedFile
from plone.restapi.interfaces import IFieldDeserializer
from plone.restapi.interfaces import IFieldSerializer
from plone.restapi.testing import PLONE_RESTAPI_BLOCKS_INTEGRATION_TESTING
from plone.restapi.testing import PLONE_RESTAPI_BLOCKS_FUNCTIONAL_TESTING
from plone.uuid.interfaces import IUUID
from Products.CMFCore.utils import getToolByName
from unittest import TestCase
from z3c.form.interfaces import IDataManager
from zope.component import getMultiAdapter

import transaction
import requests


class TestBlocksResolveUIDFunctional(TestCase):

layer = PLONE_RESTAPI_BLOCKS_FUNCTIONAL_TESTING

def setUp(self):
self.app = self.layer["app"]
self.portal = self.layer["portal"]
self.portal_url = self.portal.absolute_url()
setRoles(self.portal, TEST_USER_ID, ["Member"])
login(self.portal, SITE_OWNER_NAME)
self.portal.invokeFactory("Folder", id="folder1", title="My Folder")
self.portal.invokeFactory("Document", id="target", title="Link Target")
wftool = getToolByName(self.portal, "portal_workflow")
wftool.doActionFor(self.portal.folder1, "publish")
transaction.commit()

def test_create_document_with_link_stores_uuid(self):
response = requests.post(
self.portal.folder1.absolute_url(),
headers={"Accept": "application/json"},
auth=(SITE_OWNER_NAME, SITE_OWNER_PASSWORD),
json={
"@type": "Document",
"id": "mydocument",
"title": "My Document",
"blocks": {
"09e39ddf-a945-49f2-b609-ea427ac3430b": {
"@type": "text",
"text": {
"blocks": [
{
"data": {},
"depth": 0,
"entityRanges": [
{"key": 0, "length": 4, "offset": 0}
],
"inlineStyleRanges": [],
"key": "ark35",
"text": "Link",
"type": "unstyled",
}
],
"entityMap": {
"0": {
"data": {
"url": "{}/target".format(self.portal_url)
},
"mutability": "MUTABLE",
"type": "LINK",
}
},
},
},
"21270e22-3a61-4780-b164-d6be56d942f4": {"@type": "title"},
},
"blocks_layout": {
"items": [
"21270e22-3a61-4780-b164-d6be56d942f4",
"09e39ddf-a945-49f2-b609-ea427ac3430b",
]
},
},
)
self.assertEqual(201, response.status_code)
transaction.begin()

target_uuid = IUUID(self.portal.target)
self.assertEqual(
"../../resolveuid/{}".format(target_uuid),
self.portal.folder1.mydocument.blocks.get(
"09e39ddf-a945-49f2-b609-ea427ac3430b"
)
.get("text")
.get("entityMap")
.get("0")
.get("data")
.get("url"),
)


class TestBlocksResolveUID(TestCase):
layer = PLONE_RESTAPI_BLOCKS_INTEGRATION_TESTING
Expand Down Expand Up @@ -267,8 +357,6 @@ def test_blocks_field_deserialization_resolves_paths_to_uids(self):
"entityMap": {
"0": {
"data": {
"href": self.doc2.absolute_url(),
"rel": "nofollow",
"url": self.doc2.absolute_url(),
},
"mutability": "MUTABLE",
Expand All @@ -282,13 +370,13 @@ def test_blocks_field_deserialization_resolves_paths_to_uids(self):
self.assertEqual(
value["effbdcdc-253c-41a7-841e-5edb3b56ce32"]["text"]["entityMap"]["0"][
"data"
]["href"],
]["url"],
"../resolveuid/{}".format(uid),
)
self.assertEqual(
value["effbdcdc-253c-41a7-841e-5edb3b56ce32"]["text"]["entityMap"]["0"][
"data"
]["href"],
]["url"],
"../resolveuid/{}".format(uid),
)

Expand Down Expand Up @@ -349,13 +437,13 @@ def test_path_keeps_suffix(self):
self.assertEqual(
value["effbdcdc-253c-41a7-841e-5edb3b56ce32"]["text"]["entityMap"]["0"][
"data"
]["href"],
]["url"],
"../resolveuid/{}/view".format(uid),
)
self.assertEqual(
value["effbdcdc-253c-41a7-841e-5edb3b56ce32"]["text"]["entityMap"]["0"][
"data"
]["href"],
]["url"],
"../resolveuid/{}/view".format(uid),
)

Expand Down

0 comments on commit 3790818

Please sign in to comment.