def test_attribute_deletion(self): self.folder.invokeFactory('Document', 'd1') target = self.folder['d1'] target.title = u'Old title' target.description = u'Old description' draft = Draft() draft.someAttribute = 1 draft.description = u'New description' proxy = DraftProxy(draft, target) del proxy.someAttribute del proxy.title del proxy.description self.assertEqual( set(['someAttribute', 'title', 'description']), draft._proxyDeleted ) self.assertFalse(hasattr(draft, 'someAttribute')) self.assertFalse(hasattr(draft, 'title')) self.assertFalse(hasattr(draft, 'description')) self.assertFalse(hasattr(proxy, 'someAttribute')) self.assertFalse(hasattr(proxy, 'title')) self.assertFalse(hasattr(proxy, 'description')) self.assertEqual(u'Old title', target.title) self.assertEqual(u'Old description', target.description)
def test_annotations(self): self.folder.invokeFactory('Document', 'd1') target = self.folder['d1'] targetAnnotations = IAnnotations(target) targetAnnotations[u'test.key'] = 123 targetAnnotations[u'other.key'] = 456 draft = Draft() draftAnnotations = IAnnotations(draft) draftAnnotations[u'some.key'] = 234 proxy = DraftProxy(draft, target) proxyAnnotations = IAnnotations(proxy) self.assertEqual(123, proxyAnnotations[u'test.key']) self.assertEqual(234, proxyAnnotations[u'some.key']) proxyAnnotations[u'test.key'] = 789 self.assertEqual(789, proxyAnnotations[u'test.key']) self.assertEqual(123, targetAnnotations[u'test.key']) # Annotations API self.assertEqual(789, proxyAnnotations.get(u'test.key')) keys = proxyAnnotations.keys() self.assertTrue(u'test.key' in keys) self.assertTrue(u'some.key' in keys) self.assertTrue(u'other.key' in keys) self.assertEqual(789, proxyAnnotations.setdefault(u'test.key', -1)) self.assertEqual(234, proxyAnnotations.setdefault(u'some.key', -1)) self.assertEqual(456, proxyAnnotations.setdefault(u'other.key', -1)) self.assertEqual(-1, proxyAnnotations.setdefault(u'new.key', -1)) del proxyAnnotations[u'test.key'] self.assertFalse(u'test.key' in proxyAnnotations) self.assertFalse(u'test.key' in draftAnnotations) self.assertTrue(u'test.key' in targetAnnotations) self.assertTrue(u'test.key' in draft._proxyAnnotationsDeleted) del proxyAnnotations[u'some.key'] self.assertFalse(u'some.key' in proxyAnnotations) self.assertFalse(u'some.key' in draftAnnotations) self.assertFalse(u'some.key' in targetAnnotations) self.assertTrue(u'some.key' in draft._proxyAnnotationsDeleted) # this key was never in the proxy/draft del proxyAnnotations[u'other.key'] self.assertFalse(u'other.key' in proxyAnnotations) self.assertFalse(u'other.key' in draftAnnotations) self.assertTrue(u'other.key' in targetAnnotations) self.assertTrue(u'other.key' in draft._proxyAnnotationsDeleted)
def test_getCurrentDraft_draft_set_create(self): request = self.request management = ICurrentDraftManagement(request) management.draft = setDraft = Draft() draft = getCurrentDraft(request, create=True) self.assertEqual(setDraft, draft) response = request.response self.assertFalse('plone.app.drafts.targetKey' in response.cookies) self.assertFalse('plone.app.drafts.draftName' in response.cookies)
def test_interfaces(self): self.folder.invokeFactory('Document', 'd1') target = self.folder['d1'] draft = Draft() proxy = DraftProxy(draft, target) self.assertFalse(IDraft.providedBy(proxy)) self.assertTrue(IDraftProxy.providedBy(proxy)) if HAS_PLONE_APP_CONTENTTYPES: from plone.app.contenttypes.interfaces import IDocument self.assertTrue(IDocument.providedBy(proxy)) elif HAS_ATCONTENTTYPES: from Products.ATContentTypes.interfaces import IATDocument self.assertTrue(IATDocument.providedBy(proxy))
def test_attributes(self): self.folder.invokeFactory('Document', 'd1') target = self.folder['d1'] target.title = u'Old title' draft = Draft() draft.someAttribute = 1 proxy = DraftProxy(draft, target) self.assertEqual(u'Old title', proxy.title) self.assertEqual(1, proxy.someAttribute) proxy.title = u'New title' self.assertEqual(u'New title', proxy.title)
def test_syncDraft(self): class Target(object): pass draft = Draft() draft.a1 = 1 draft.a2 = 2 target = Target() @adapter(Draft, Target) @implementer(IDraftSyncer) class Syncer1(object): def __init__(self, draft, target): self.draft = draft self.target = target def __call__(self): self.target.a1 = self.draft.a1 provideAdapter(Syncer1, name=u's1') @adapter(Draft, Target) @implementer(IDraftSyncer) class Syncer2(object): def __init__(self, draft, target): self.draft = draft self.target = target def __call__(self): self.target.a2 = self.draft.a2 provideAdapter(Syncer2, name=u's2') syncDraft(draft, target) self.assertEqual(1, target.a1) self.assertEqual(2, target.a2)
def factory(userId, targetKey): return Draft(name=u'foo')
def test_discardDraft_no_user(self): self.storage.createDraft('user1', '123') draft = Draft('user2', '123', u'draft') self.storage.discardDraft(draft)
def test_discardDraft_not_found(self): self.storage.createDraft('user1', '123') draft = Draft('user1', '123', u'bogus') self.storage.discardDraft(draft)