From 5944b7f9e5c2950d4b2a0b514a80007f2485f595 Mon Sep 17 00:00:00 2001 From: Michael Hamann <michael.hamann@xwiki.com> Date: Wed, 28 Aug 2024 14:38:48 +0200 Subject: [PATCH] [Misc] Migrate DefaultWikiComponentBridge to JUnit 5 --- .../wiki/DefaultWikiComponentBridgeTest.java | 343 +++++++----------- 1 file changed, 130 insertions(+), 213 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-component/xwiki-platform-component-wiki/src/test/java/org/xwiki/component/wiki/DefaultWikiComponentBridgeTest.java b/xwiki-platform-core/xwiki-platform-component/xwiki-platform-component-wiki/src/test/java/org/xwiki/component/wiki/DefaultWikiComponentBridgeTest.java index 11bb651df85..fb7724116d9 100644 --- a/xwiki-platform-core/xwiki-platform-component/xwiki-platform-component-wiki/src/test/java/org/xwiki/component/wiki/DefaultWikiComponentBridgeTest.java +++ b/xwiki-platform-core/xwiki-platform-component/xwiki-platform-component-wiki/src/test/java/org/xwiki/component/wiki/DefaultWikiComponentBridgeTest.java @@ -19,21 +19,17 @@ */ package org.xwiki.component.wiki; -import java.util.ArrayList; +import java.util.List; import java.util.Vector; import javax.inject.Provider; -import org.jmock.Expectations; -import org.jmock.lib.legacy.ClassImposteriser; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.xwiki.component.manager.ComponentManager; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; import org.xwiki.component.wiki.internal.WikiComponentConstants; import org.xwiki.component.wiki.internal.bridge.ContentParser; import org.xwiki.component.wiki.internal.bridge.DefaultWikiComponentBridge; -import org.xwiki.component.wiki.internal.bridge.WikiComponentBridge; import org.xwiki.context.Execution; import org.xwiki.context.ExecutionContext; import org.xwiki.model.internal.DefaultModelConfiguration; @@ -42,14 +38,14 @@ import org.xwiki.model.internal.reference.LocalStringEntityReferenceSerializer; import org.xwiki.model.internal.reference.RelativeStringEntityReferenceResolver; import org.xwiki.model.reference.DocumentReference; -import org.xwiki.model.reference.EntityReferenceSerializer; -import org.xwiki.rendering.block.Block; import org.xwiki.rendering.block.XDOM; -import org.xwiki.rendering.parser.Parser; import org.xwiki.rendering.syntax.Syntax; import org.xwiki.test.annotation.ComponentList; -import org.xwiki.test.jmock.AbstractMockingComponentTestCase; -import org.xwiki.test.jmock.annotation.MockingRequirement; +import org.xwiki.test.junit5.mockito.ComponentTest; +import org.xwiki.test.junit5.mockito.InjectComponentManager; +import org.xwiki.test.junit5.mockito.InjectMockComponents; +import org.xwiki.test.junit5.mockito.MockComponent; +import org.xwiki.test.mockito.MockitoComponentManager; import com.xpn.xwiki.XWiki; import com.xpn.xwiki.XWikiContext; @@ -63,6 +59,16 @@ import com.xpn.xwiki.objects.BaseObject; import com.xpn.xwiki.web.Utils; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +/** + * Unit test for {@link DefaultWikiComponentBridge}. + * + * @version $Id$ + */ @ComponentList({ DefaultModelContext.class, DefaultModelConfiguration.class, @@ -76,275 +82,186 @@ DefaultEntityReferenceProvider.class, CompactWikiStringEntityReferenceSerializer.class }) -@MockingRequirement(value = DefaultWikiComponentBridge.class, -exceptions = {EntityReferenceSerializer.class, Parser.class}) -public class DefaultWikiComponentBridgeTest extends AbstractMockingComponentTestCase implements WikiComponentConstants +@ComponentTest +class DefaultWikiComponentBridgeTest implements WikiComponentConstants { private static final DocumentReference DOC_REFERENCE = new DocumentReference("xwiki", "XWiki", "MyComponent"); private static final DocumentReference AUTHOR_REFERENCE = new DocumentReference("xwiki", "XWiki", "Admin"); + @Mock private XWiki xwiki; - private XWikiContext xwikiContext; + @MockComponent + private Provider<XWikiContext> xWikiContextProvider; + @MockComponent + private ContentParser contentParser; + + @Mock private XWikiDocument componentDoc; + @Mock private BaseObject componentObject; - private WikiComponentBridge bridge; - - @Before - public void configure() throws Exception - { - getMockery().setImposteriser(ClassImposteriser.INSTANCE); - - Utils.setComponentManager(getComponentManager()); - - final Execution execution = registerMockComponent(Execution.class); - final ExecutionContext context = new ExecutionContext(); + @MockComponent + private Execution execution; - final Provider<XWikiContext> xcontextProvider = registerMockComponent(XWikiContext.TYPE_PROVIDER); + @InjectMockComponents + private DefaultWikiComponentBridge bridge; - this.xwiki = getMockery().mock(XWiki.class); + @InjectComponentManager + private MockitoComponentManager mockitoComponentManager; - this.xwikiContext = new XWikiContext(); - this.xwikiContext.setWikiId("xwiki"); - this.xwikiContext.setWiki(this.xwiki); - - context.setProperty("xwikicontext", this.xwikiContext); + @BeforeEach + public void configure() throws Exception + { + Utils.setComponentManager(this.mockitoComponentManager); - this.componentDoc = getMockery().mock(XWikiDocument.class); - this.componentObject = getMockery().mock(BaseObject.class, "component"); + XWikiContext xwikiContext = new XWikiContext(); + xwikiContext.setWikiId("xwiki"); + xwikiContext.setWiki(this.xwiki); + when(this.xWikiContextProvider.get()).thenReturn(xwikiContext); - getMockery().checking(new Expectations() - { - { - allowing(xcontextProvider).get(); - will(returnValue(xwikiContext)); - allowing(execution).getContext(); - will(returnValue(context)); - allowing(xwiki).getDocument(DOC_REFERENCE, xwikiContext); - will(returnValue(componentDoc)); - } - }); + ExecutionContext context = new ExecutionContext(); + context.setProperty("xwikicontext", xwikiContext); - this.bridge = getComponentManager().getInstance(WikiComponentBridge.class); + when(this.execution.getContext()).thenReturn(context); + when(this.xwiki.getDocument(DOC_REFERENCE, xwikiContext)).thenReturn(this.componentDoc); } @Test - public void getAuthorReference() throws Exception + void getAuthorReference() throws Exception { - getMockery().checking(new Expectations() - { - { - allowing(componentDoc).getAuthorReference(); - will(returnValue(AUTHOR_REFERENCE)); - } - }); - - Assert.assertEquals(AUTHOR_REFERENCE, bridge.getAuthorReference(DOC_REFERENCE)); + when(this.componentDoc.getAuthorReference()).thenReturn(AUTHOR_REFERENCE); + + assertEquals(AUTHOR_REFERENCE, this.bridge.getAuthorReference(DOC_REFERENCE)); } @Test - public void getDeclaredInterfaces() throws Exception + void getDeclaredInterfaces() throws Exception { - final BaseObject interfaceObject = getMockery().mock(BaseObject.class, "interface"); - final Vector<BaseObject> interfaceObjects = new Vector<BaseObject>(); + BaseObject interfaceObject = mock(); + Vector<BaseObject> interfaceObjects = new Vector<>(); interfaceObjects.add(interfaceObject); - getMockery().checking(new Expectations() - { - { - oneOf(componentDoc).getObjectNumbers(INTERFACE_CLASS); - will(returnValue(1)); - oneOf(componentDoc).getObjects(INTERFACE_CLASS); - will(returnValue(interfaceObjects)); - allowing(interfaceObject).getStringValue(INTERFACE_NAME_FIELD); - will(returnValue("org.xwiki.component.phase.Initializable")); - } - }); - - Assert.assertEquals(1, bridge.getDeclaredInterfaces(DOC_REFERENCE).size()); + when(this.componentDoc.getObjectNumbers(INTERFACE_CLASS)).thenReturn(1); + when(this.componentDoc.getObjects(INTERFACE_CLASS)).thenReturn(interfaceObjects); + when(interfaceObject.getStringValue(INTERFACE_NAME_FIELD)) + .thenReturn("org.xwiki.component.phase.Initializable"); + + assertEquals(1, this.bridge.getDeclaredInterfaces(DOC_REFERENCE).size()); } @Test - public void getDependencies() throws Exception + void getDependencies() throws Exception { - final BaseObject dependencyObject = getMockery().mock(BaseObject.class, "dependency"); - final Vector<BaseObject> dependencyObjects = new Vector<BaseObject>(); + BaseObject dependencyObject = mock(); + Vector<BaseObject> dependencyObjects = new Vector<>(); dependencyObjects.add(dependencyObject); - getMockery().checking(new Expectations() - { - { - oneOf(componentDoc).getObjectNumbers(DEPENDENCY_CLASS); - will(returnValue(1)); - oneOf(componentDoc).getObjects(DEPENDENCY_CLASS); - will(returnValue(dependencyObjects)); - allowing(dependencyObject).getStringValue(COMPONENT_ROLE_TYPE_FIELD); - will(returnValue("org.xwiki.component.wiki.TestRole")); - allowing(dependencyObject).getStringValue(COMPONENT_ROLE_HINT_FIELD); - will(returnValue("default")); - allowing(dependencyObject).getStringValue(DEPENDENCY_BINDING_NAME_FIELD); - will(returnValue("test")); - } - }); - - Assert.assertEquals(1, bridge.getDependencies(DOC_REFERENCE).size()); + when(this.componentDoc.getObjectNumbers(DEPENDENCY_CLASS)).thenReturn(1); + when(this.componentDoc.getObjects(DEPENDENCY_CLASS)).thenReturn(dependencyObjects); + when(dependencyObject.getStringValue(COMPONENT_ROLE_TYPE_FIELD)) + .thenReturn("org.xwiki.component.wiki.TestRole"); + when(dependencyObject.getStringValue(COMPONENT_ROLE_HINT_FIELD)) + .thenReturn("default"); + when(dependencyObject.getStringValue(DEPENDENCY_BINDING_NAME_FIELD)) + .thenReturn("test"); + + assertEquals(1, this.bridge.getDependencies(DOC_REFERENCE).size()); } @Test - public void getHandledMethods() throws Exception + void getHandledMethods() throws Exception { - final ComponentManager componentManager = getComponentManager().getInstance(ComponentManager.class); - final ContentParser contentParser = getComponentManager().getInstance(ContentParser.class); - final Parser parser = getMockery().mock(Parser.class); - final XDOM xdom = new XDOM(new ArrayList<Block>()); - final BaseObject methodObject = getMockery().mock(BaseObject.class, "method"); - final Vector<BaseObject> methodObjects = new Vector<BaseObject>(); + XDOM xdom = new XDOM(List.of()); + BaseObject methodObject = mock(); + Vector<BaseObject> methodObjects = new Vector<>(); methodObjects.add(methodObject); - getMockery().checking(new Expectations() - { - { - - oneOf(componentDoc).getObjectNumbers(METHOD_CLASS); - will(returnValue(1)); - oneOf(componentDoc).getObjects(METHOD_CLASS); - will(returnValue(methodObjects)); - allowing(methodObject).getStringValue(METHOD_NAME_FIELD); - will(returnValue("test")); - allowing(methodObject).getStringValue(METHOD_CODE_FIELD); - will(returnValue("test")); - oneOf(componentDoc).getSyntax(); - will(returnValue(Syntax.XWIKI_2_1)); - oneOf(contentParser).parse("test", Syntax.XWIKI_2_1, DOC_REFERENCE); - will(returnValue(xdom)); - } - }); - - Assert.assertEquals(1, bridge.getHandledMethods(DOC_REFERENCE).size()); + when(this.componentDoc.getObjectNumbers(METHOD_CLASS)).thenReturn(1); + when(this.componentDoc.getObjects(METHOD_CLASS)).thenReturn(methodObjects); + when(methodObject.getStringValue(METHOD_NAME_FIELD)) + .thenReturn("test"); + when(methodObject.getStringValue(METHOD_CODE_FIELD)).thenReturn("test"); + when(this.componentDoc.getSyntax()).thenReturn(Syntax.XWIKI_2_1); + when(this.contentParser.parse("test", Syntax.XWIKI_2_1, DOC_REFERENCE)).thenReturn(xdom); + + assertEquals(1, this.bridge.getHandledMethods(DOC_REFERENCE).size()); } @Test - public void getRoleHint() throws Exception + void getRoleHint() throws Exception { - getMockery().checking(new Expectations() - { - { - oneOf(componentDoc).getObject(COMPONENT_CLASS); - will(returnValue(componentObject)); - oneOf(componentObject).getStringValue(COMPONENT_ROLE_HINT_FIELD); - will(returnValue("roleHint")); - } - }); - - Assert.assertEquals("roleHint", bridge.getRoleHint(DOC_REFERENCE)); + when(this.componentDoc.getObject(COMPONENT_CLASS)).thenReturn(this.componentObject); + when(this.componentObject.getStringValue(COMPONENT_ROLE_HINT_FIELD)).thenReturn("roleHint"); + + assertEquals("roleHint", this.bridge.getRoleHint(DOC_REFERENCE)); } @Test - public void getRoleType() throws Exception + void getRoleType() throws Exception { - getMockery().checking(new Expectations() - { - { - oneOf(componentDoc).getObject(COMPONENT_CLASS); - will(returnValue(componentObject)); - oneOf(componentObject).getStringValue(COMPONENT_ROLE_TYPE_FIELD); - will(returnValue("org.xwiki.component.wiki.TestRole")); - } - }); - - Assert.assertEquals(TestRole.class, bridge.getRoleType(DOC_REFERENCE)); + when(this.componentDoc.getObject(COMPONENT_CLASS)).thenReturn(this.componentObject); + when(this.componentObject.getStringValue(COMPONENT_ROLE_TYPE_FIELD)) + .thenReturn("org.xwiki.component.wiki.TestRole"); + + assertEquals(TestRole.class, this.bridge.getRoleType(DOC_REFERENCE)); } @Test - public void getRoleTypeWithoutComponentObject() throws Exception + void getRoleTypeWithoutComponentObject() { - getMockery().checking(new Expectations() - { - { - oneOf(componentDoc).getObject(COMPONENT_CLASS); - will(returnValue(null)); - } - }); - - try { - bridge.getRoleType(DOC_REFERENCE); - Assert.fail("Should have thrown an exception"); - } catch (WikiComponentException expected) { - Assert.assertEquals("No component object could be found in document [xwiki:XWiki.MyComponent]", - expected.getMessage()); - } + when(this.componentDoc.getObject(COMPONENT_CLASS)).thenReturn(null); + + WikiComponentException wikiComponentException = + assertThrows(WikiComponentException.class, () -> this.bridge.getRoleType(DOC_REFERENCE)); + + assertEquals("No component object could be found in document [xwiki:XWiki.MyComponent]", + wikiComponentException.getMessage()); } @Test - public void getRoleTypeWithWrongRole() throws Exception + void getRoleTypeWithWrongRole() { - getMockery().checking(new Expectations() - { - { - oneOf(componentDoc).getObject(COMPONENT_CLASS); - will(returnValue(componentObject)); - oneOf(componentObject).getStringValue(COMPONENT_ROLE_TYPE_FIELD); - will(returnValue("org.xwiki.component.wiki.DoesNotExist")); - } - }); - - try { - this.bridge.getRoleType(DOC_REFERENCE); - Assert.fail("Should have thrown an exception"); - } catch (WikiComponentException expected) { - Assert.assertEquals("The role type [org.xwiki.component.wiki.DoesNotExist] does not exist", - expected.getMessage()); - } + when(this.componentDoc.getObject(COMPONENT_CLASS)).thenReturn(this.componentObject); + when(this.componentObject.getStringValue(COMPONENT_ROLE_TYPE_FIELD)) + .thenReturn("org.xwiki.component.wiki.DoesNotExist"); + + WikiComponentException exception = + assertThrows(WikiComponentException.class, () -> this.bridge.getRoleType(DOC_REFERENCE)); + + assertEquals("The role type [org.xwiki.component.wiki.DoesNotExist] does not exist", + exception.getMessage()); } @Test - public void getScope() throws Exception + void getScope() throws Exception { - getMockery().checking(new Expectations() - { - { - oneOf(componentDoc).getObject(COMPONENT_CLASS); - will(returnValue(componentObject)); - oneOf(componentObject).getStringValue(COMPONENT_SCOPE_FIELD); - will(returnValue("user")); - } - }); - - Assert.assertEquals(WikiComponentScope.USER, bridge.getScope(DOC_REFERENCE)); + when(this.componentDoc.getObject(COMPONENT_CLASS)).thenReturn(this.componentObject); + when(this.componentObject.getStringValue(COMPONENT_SCOPE_FIELD)) + .thenReturn("user"); + + assertEquals(WikiComponentScope.USER, this.bridge.getScope(DOC_REFERENCE)); } @Test - public void getScopeWithWrongScope() throws Exception + void getScopeWithWrongScope() throws Exception { - getMockery().checking(new Expectations() - { - { - oneOf(componentDoc).getObject(COMPONENT_CLASS); - will(returnValue(componentObject)); - oneOf(componentObject).getStringValue(COMPONENT_SCOPE_FIELD); - will(returnValue("doesnotexist")); - } - }); + when(this.componentDoc.getObject(COMPONENT_CLASS)).thenReturn(this.componentObject); + when(this.componentObject.getStringValue(COMPONENT_SCOPE_FIELD)) + .thenReturn("doesnotexist"); // Wiki is the default value - Assert.assertEquals(WikiComponentScope.WIKI, this.bridge.getScope(DOC_REFERENCE)); + assertEquals(WikiComponentScope.WIKI, this.bridge.getScope(DOC_REFERENCE)); } @Test - public void getSyntax() throws Exception + void getSyntax() throws Exception { - getMockery().checking(new Expectations() - { - { - oneOf(componentDoc).getSyntax(); - will(returnValue(Syntax.XWIKI_2_1)); - } - }); - - Assert.assertEquals(Syntax.XWIKI_2_1, bridge.getSyntax(DOC_REFERENCE)); + when(this.componentDoc.getSyntax()).thenReturn(Syntax.XWIKI_2_1); + + assertEquals(Syntax.XWIKI_2_1, this.bridge.getSyntax(DOC_REFERENCE)); } } -- GitLab