From eccc7f55a6788bdb4f9f40bb57546c3da5ac4576 Mon Sep 17 00:00:00 2001 From: Eduard Moraru <Enygma2002@gmail.com> Date: Tue, 16 Dec 2014 16:59:21 +0200 Subject: [PATCH] XWIKI-10998: After a user deletes his avatar, "User Avatar" is not correctly displayed - Added tests to preserve previous coverage. --- .../macro/useravatar/UserAvatarMacro.java | 2 +- .../macro/useravatar/IntegrationTests.java | 15 +++++++++++++++ .../src/test/resources/macrouseravatar5.test | 14 ++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 xwiki-platform-core/xwiki-platform-rendering/xwiki-platform-rendering-macros/xwiki-platform-rendering-macro-useravatar/src/test/resources/macrouseravatar5.test diff --git a/xwiki-platform-core/xwiki-platform-rendering/xwiki-platform-rendering-macros/xwiki-platform-rendering-macro-useravatar/src/main/java/org/xwiki/rendering/internal/macro/useravatar/UserAvatarMacro.java b/xwiki-platform-core/xwiki-platform-rendering/xwiki-platform-rendering-macros/xwiki-platform-rendering-macro-useravatar/src/main/java/org/xwiki/rendering/internal/macro/useravatar/UserAvatarMacro.java index 49dedb4844e..f9023ada46a 100644 --- a/xwiki-platform-core/xwiki-platform-rendering/xwiki-platform-rendering-macros/xwiki-platform-rendering-macro-useravatar/src/main/java/org/xwiki/rendering/internal/macro/useravatar/UserAvatarMacro.java +++ b/xwiki-platform-core/xwiki-platform-rendering/xwiki-platform-rendering-macros/xwiki-platform-rendering-macro-useravatar/src/main/java/org/xwiki/rendering/internal/macro/useravatar/UserAvatarMacro.java @@ -160,7 +160,7 @@ public List<Block> execute(UserAvatarMacroParameters parameters, String content, } catch (Exception e) { // Log and fallback on default. logger.warn("Failed to get the avatar for user [{}]. Using default.", - this.compactWikiEntityReferenceSerializer.serialize(userReference)); + this.compactWikiEntityReferenceSerializer.serialize(userReference), e); } } ImageBlock imageBlock = new ImageBlock(imageReference, false); diff --git a/xwiki-platform-core/xwiki-platform-rendering/xwiki-platform-rendering-macros/xwiki-platform-rendering-macro-useravatar/src/test/java/org/xwiki/rendering/macro/useravatar/IntegrationTests.java b/xwiki-platform-core/xwiki-platform-rendering/xwiki-platform-rendering-macros/xwiki-platform-rendering-macro-useravatar/src/test/java/org/xwiki/rendering/macro/useravatar/IntegrationTests.java index f14a7e01683..8a98ede4545 100644 --- a/xwiki-platform-core/xwiki-platform-rendering/xwiki-platform-rendering-macros/xwiki-platform-rendering-macro-useravatar/src/test/java/org/xwiki/rendering/macro/useravatar/IntegrationTests.java +++ b/xwiki-platform-core/xwiki-platform-rendering/xwiki-platform-rendering-macros/xwiki-platform-rendering-macro-useravatar/src/test/java/org/xwiki/rendering/macro/useravatar/IntegrationTests.java @@ -69,6 +69,8 @@ public void initialize(ComponentManager componentManager) throws Exception final DocumentReference userNotExistingReference = new DocumentReference("wiki", "XWiki", "UserNotExisting"); final DocumentReference userWithNonExistingAvatarFileReference = new DocumentReference("wiki", "XWiki", "UserWithNonExistingAvatarFile"); + final DocumentReference userWithExceptionRetrievingAvatarFileReference = + new DocumentReference("wiki", "XWiki", "UserWithExceptionRetrievingAvatarFile"); final DocumentReference userClassReference = new DocumentReference("wiki", "XWiki", "XWikiUsers"); final DocumentAccessBridge mockDocumentAccessBridge = registerMockComponent(componentManager, mockery, DocumentAccessBridge.class); @@ -78,6 +80,7 @@ public void initialize(ComponentManager componentManager) throws Exception allowing(mockDocumentAccessBridge).exists(with(any(String.class))); will(returnValue(false)); allowing(mockDocumentAccessBridge).exists(userNotExistingReference); will(returnValue(false)); allowing(mockDocumentAccessBridge).exists(userWithNonExistingAvatarFileReference); will(returnValue(true)); + allowing(mockDocumentAccessBridge).exists(userWithExceptionRetrievingAvatarFileReference); will(returnValue(true)); allowing(mockDocumentAccessBridge).getProperty(adminUserReference, userClassReference, "avatar"); will(returnValue("mockAvatar.png")); @@ -85,11 +88,15 @@ public void initialize(ComponentManager componentManager) throws Exception "avatar"); will(returnValue(null)); allowing(mockDocumentAccessBridge).getProperty(userWithNonExistingAvatarFileReference, userClassReference, "avatar"); will(returnValue("mockAvatar.png")); + allowing(mockDocumentAccessBridge).getProperty(userWithExceptionRetrievingAvatarFileReference, + userClassReference, "avatar"); will(returnValue("mockAvatar.png")); allowing(mockDocumentAccessBridge).getAttachmentVersion(new AttachmentReference("mockAvatar.png", adminUserReference)); will(returnValue("1.1")); allowing(mockDocumentAccessBridge).getAttachmentVersion(new AttachmentReference("mockAvatar.png", userWithNonExistingAvatarFileReference)); will(returnValue(null)); + allowing(mockDocumentAccessBridge).getAttachmentVersion(new AttachmentReference("mockAvatar.png", + userWithExceptionRetrievingAvatarFileReference)); will(throwException(new Exception("Sum Ting Wong"))); }}); // Document Resolver Mock @@ -108,6 +115,9 @@ public void initialize(ComponentManager componentManager) throws Exception allowing(mockDocumentReferenceResolver).resolve("XWiki.UserWithNonExistingAvatarFile", new EntityReference("XWiki", EntityType.SPACE)); will(returnValue(userWithNonExistingAvatarFileReference)); + allowing(mockDocumentReferenceResolver).resolve("XWiki.UserWithExceptionRetrievingAvatarFile", + new EntityReference("XWiki", EntityType.SPACE)); + will(returnValue(userWithExceptionRetrievingAvatarFileReference)); }}); // Entity Reference Serializer Mock @@ -122,6 +132,11 @@ public void initialize(ComponentManager componentManager) throws Exception allowing(mockEntityReferenceSerializer).serialize( new AttachmentReference("mockAvatar.png", userWithNonExistingAvatarFileReference)); will(returnValue("XWiki.UserWithNonExistingAvatarFile@mockAvatar.png")); + allowing(mockEntityReferenceSerializer).serialize( + new AttachmentReference("mockAvatar.png", userWithExceptionRetrievingAvatarFileReference)); + will(returnValue("XWiki.UserWithExceptionRetrievingAvatarFile@mockAvatar.png")); + allowing(mockEntityReferenceSerializer).serialize(userWithExceptionRetrievingAvatarFileReference); + will(returnValue("XWiki.UserWithExceptionRetrievingAvatarFile")); }}); // Entity Reference Serializer Mock diff --git a/xwiki-platform-core/xwiki-platform-rendering/xwiki-platform-rendering-macros/xwiki-platform-rendering-macro-useravatar/src/test/resources/macrouseravatar5.test b/xwiki-platform-core/xwiki-platform-rendering/xwiki-platform-rendering-macros/xwiki-platform-rendering-macro-useravatar/src/test/resources/macrouseravatar5.test new file mode 100644 index 00000000000..486e67b6bae --- /dev/null +++ b/xwiki-platform-core/xwiki-platform-rendering/xwiki-platform-rendering-macros/xwiki-platform-rendering-macro-useravatar/src/test/resources/macrouseravatar5.test @@ -0,0 +1,14 @@ +.runTransformations +.#-------------------------------------------------------------------- +.input|xwiki/2.0 +.# Verify that the macro generates an error if the user doesn't exist. +.#-------------------------------------------------------------------- +{{useravatar username="XWiki.UserWithExceptionRetrievingAvatarFile" /}} +.#-------------------------------------------------------------------- +.expect|event/1.0 +.#-------------------------------------------------------------------- +beginDocument +beginMacroMarkerStandalone [useravatar] [username=XWiki.UserWithExceptionRetrievingAvatarFile] +onImage [Typed = [true] Type = [url] Reference = [/xwiki/noavatar.png]] [false] [[alt]=[Picture of UserWithExceptionRetrievingAvatarFile][title]=[UserWithExceptionRetrievingAvatarFile]] +endMacroMarkerStandalone [useravatar] [username=XWiki.UserWithExceptionRetrievingAvatarFile] +endDocument \ No newline at end of file -- GitLab