1. Project Clover database Tue Dec 20 2016 21:24:09 CET
  2. Package org.xwiki.model.internal.reference

File DefaultReferenceEntityReferenceResolverTest.java

 

Code metrics

0
100
13
1
260
193
14
0.14
7.69
13
1.08

Classes

Class Line # Actions
DefaultReferenceEntityReferenceResolverTest 47 100 0% 14 1
0.9911504499.1%
 

Contributing tests

This file is covered by 12 tests. .

Source view

1    /*
2    * See the NOTICE file distributed with this work for additional
3    * information regarding copyright ownership.
4    *
5    * This is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU Lesser General Public License as
7    * published by the Free Software Foundation; either version 2.1 of
8    * the License, or (at your option) any later version.
9    *
10    * This software is distributed in the hope that it will be useful,
11    * but WITHOUT ANY WARRANTY; without even the implied warranty of
12    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13    * Lesser General Public License for more details.
14    *
15    * You should have received a copy of the GNU Lesser General Public
16    * License along with this software; if not, write to the Free
17    * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
18    * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
19    */
20    package org.xwiki.model.internal.reference;
21   
22    import org.junit.Before;
23    import org.junit.Rule;
24    import org.junit.Test;
25    import org.xwiki.component.util.ReflectionUtils;
26    import org.xwiki.model.EntityType;
27    import org.xwiki.model.reference.EntityReference;
28    import org.xwiki.model.reference.EntityReferenceProvider;
29    import org.xwiki.model.reference.EntityReferenceResolver;
30    import org.xwiki.model.reference.InvalidEntityReferenceException;
31    import org.xwiki.model.reference.test.TestConstants;
32    import org.xwiki.test.annotation.ComponentList;
33    import org.xwiki.test.mockito.MockitoComponentMockingRule;
34   
35    import static org.mockito.Mockito.*;
36    import static org.junit.Assert.*;
37   
38    /**
39    * Unit tests for {@link DefaultReferenceEntityReferenceResolver}.
40    *
41    * @version $Id: cf95a7f815e7d427df9cb254f78ba62705f04bc4 $
42    * @since 2.2M1
43    */
44    @ComponentList({
45    DefaultSymbolScheme.class
46    })
 
47    public class DefaultReferenceEntityReferenceResolverTest implements TestConstants
48    {
49    @Rule
50    public MockitoComponentMockingRule<EntityReferenceResolver<EntityReference>> mocker =
51    new MockitoComponentMockingRule<>(DefaultReferenceEntityReferenceResolver.class);
52   
53    private EntityReferenceResolver<EntityReference> resolver;
54   
 
55  12 toggle @Before
56    public void setUp() throws Exception
57    {
58  12 this.resolver = this.mocker.getComponentUnderTest();
59   
60  12 EntityReferenceProvider referenceProvider = mock(EntityReferenceProvider.class);
61  12 ReflectionUtils.setFieldValue(this.resolver, "provider", referenceProvider);
62   
63  12 when(referenceProvider.getDefaultReference(EntityType.WIKI)).thenReturn(DEFAULT_WIKI_REFERENCE);
64  12 when(referenceProvider.getDefaultReference(EntityType.SPACE)).thenReturn(DEFAULT_SPACE_REFERENCE);
65  12 when(referenceProvider.getDefaultReference(EntityType.DOCUMENT)).thenReturn(DEFAULT_PAGE_REFERENCE);
66  12 when(referenceProvider.getDefaultReference(EntityType.OBJECT)).thenReturn(DEFAULT_OBJECT_REFERENCE);
67  12 when(referenceProvider.getDefaultReference(EntityType.OBJECT_PROPERTY)).thenReturn(
68    DEFAULT_OBJECT_PROPERTY_REFERENCE);
69    }
70   
 
71  1 toggle @Test
72    public void resolveDocumentReferenceWhenMissingParents()
73    {
74  1 EntityReference partialReference = new EntityReference("page", EntityType.DOCUMENT);
75   
76  1 EntityReference reference = this.resolver.resolve(partialReference, EntityType.DOCUMENT);
77   
78  1 assertNotSame(partialReference, reference);
79  1 assertEquals(DEFAULT_SPACE, reference.getParent().getName());
80  1 assertEquals(EntityType.SPACE, reference.getParent().getType());
81  1 assertEquals(DEFAULT_WIKI, reference.getParent().getParent().getName());
82  1 assertEquals(EntityType.WIKI, reference.getParent().getParent().getType());
83    }
84   
 
85  1 toggle @Test
86    public void resolveAttachmentReferenceWhenMissingParents()
87    {
88  1 EntityReference reference =
89    this.resolver.resolve(new EntityReference("filename", EntityType.ATTACHMENT), EntityType.ATTACHMENT);
90   
91  1 assertEquals(DEFAULT_PAGE, reference.getParent().getName());
92  1 assertEquals(EntityType.DOCUMENT, reference.getParent().getType());
93  1 assertEquals(DEFAULT_SPACE, reference.getParent().getParent().getName());
94  1 assertEquals(EntityType.SPACE, reference.getParent().getParent().getType());
95  1 assertEquals(DEFAULT_WIKI, reference.getParent().getParent().getParent().getName());
96  1 assertEquals(EntityType.WIKI, reference.getParent().getParent().getParent().getType());
97    }
98   
 
99  1 toggle @Test
100    public void resolveDocumentReferenceWhenMissingParentBetweenReferences()
101    {
102  1 EntityReference partialReference =
103    new EntityReference("page", EntityType.DOCUMENT, new EntityReference("wiki", EntityType.WIKI));
104   
105  1 EntityReference reference = this.resolver.resolve(partialReference, EntityType.DOCUMENT);
106   
107  1 assertNotSame(partialReference, reference);
108  1 assertEquals(DEFAULT_SPACE, reference.getParent().getName());
109  1 assertEquals(EntityType.SPACE, reference.getParent().getType());
110  1 assertNotSame(partialReference.getParent().getParent(), reference.getParent().getParent());
111  1 assertEquals("wiki", reference.getParent().getParent().getName());
112  1 assertEquals(EntityType.WIKI, reference.getParent().getParent().getType());
113    }
114   
 
115  1 toggle @Test
116    public void resolveAttachmentReferenceWhenMissingParentBetweenReferences()
117    {
118  1 EntityReference reference =
119    this.resolver.resolve(new EntityReference("filename", EntityType.ATTACHMENT, new EntityReference("wiki",
120    EntityType.WIKI)), EntityType.ATTACHMENT);
121   
122  1 assertEquals(DEFAULT_PAGE, reference.getParent().getName());
123  1 assertEquals(EntityType.DOCUMENT, reference.getParent().getType());
124  1 assertEquals(DEFAULT_SPACE, reference.getParent().getParent().getName());
125  1 assertEquals(EntityType.SPACE, reference.getParent().getParent().getType());
126  1 assertEquals("wiki", reference.getParent().getParent().getParent().getName());
127  1 assertEquals(EntityType.WIKI, reference.getParent().getParent().getParent().getType());
128    }
129   
 
130  1 toggle @Test
131    public void resolveDocumentReferenceWhenInvalidReference()
132    {
133  1 try {
134  1 this.resolver.resolve(new EntityReference("page", EntityType.DOCUMENT, new EntityReference("filename",
135    EntityType.ATTACHMENT)), EntityType.DOCUMENT);
136  0 fail("Should have thrown an exception here");
137    } catch (InvalidEntityReferenceException expected) {
138  1 assertEquals("Invalid reference [Document filename???page]", expected.getMessage());
139    }
140    }
141   
 
142  1 toggle @Test
143    public void resolveDocumentReferenceWhenTypeIsSpace()
144    {
145  1 EntityReference reference =
146    this.resolver.resolve(new EntityReference("space", EntityType.SPACE), EntityType.DOCUMENT);
147   
148  1 assertEquals(EntityType.DOCUMENT, reference.getType());
149  1 assertEquals(DEFAULT_PAGE, reference.getName());
150  1 assertEquals(EntityType.SPACE, reference.getParent().getType());
151  1 assertEquals("space", reference.getParent().getName());
152  1 assertEquals(EntityType.WIKI, reference.getParent().getParent().getType());
153  1 assertEquals(DEFAULT_WIKI, reference.getParent().getParent().getName());
154    }
155   
 
156  1 toggle @Test
157    public void resolveSpaceReferenceWhenTypeIsDocument()
158    {
159  1 EntityReference reference =
160    this.resolver.resolve(new EntityReference("page", EntityType.DOCUMENT), EntityType.SPACE);
161   
162  1 assertEquals(EntityType.SPACE, reference.getType());
163  1 assertEquals(DEFAULT_SPACE, reference.getName());
164  1 assertEquals(EntityType.WIKI, reference.getParent().getType());
165  1 assertEquals(DEFAULT_WIKI, reference.getParent().getName());
166    }
167   
168    /**
169    * Tests that a relative object reference is resolved correctly and completed with the default document parent.
170    */
 
171  1 toggle @Test
172    public void resolveObjectReferenceWhenMissingParents()
173    {
174  1 EntityReference reference =
175    resolver.resolve(new EntityReference("object", EntityType.OBJECT), EntityType.OBJECT);
176  1 assertEquals(EntityType.OBJECT, reference.getType());
177  1 assertEquals("object", reference.getName());
178  1 assertEquals(EntityType.DOCUMENT, reference.getParent().getType());
179  1 assertEquals(DEFAULT_PAGE, reference.getParent().getName());
180  1 assertEquals(EntityType.SPACE, reference.getParent().getParent().getType());
181  1 assertEquals(DEFAULT_SPACE, reference.getParent().getParent().getName());
182  1 assertEquals(EntityType.WIKI, reference.getParent().getParent().getParent().getType());
183  1 assertEquals(DEFAULT_WIKI, reference.getParent().getParent().getParent().getName());
184    }
185   
186    /**
187    * Tests that a relative object property is resolved correctly and completed with the default object parent.
188    */
 
189  1 toggle @Test
190    public void resolveObjectPropertyReferenceWhenMissingParents()
191    {
192  1 EntityReference reference =
193    resolver.resolve(new EntityReference("property", EntityType.OBJECT_PROPERTY), EntityType.OBJECT_PROPERTY);
194  1 assertEquals(EntityType.OBJECT_PROPERTY, reference.getType());
195  1 assertEquals("property", reference.getName());
196  1 assertEquals(EntityType.OBJECT, reference.getParent().getType());
197  1 assertEquals(DEFAULT_OBJECT, reference.getParent().getName());
198  1 assertEquals(EntityType.DOCUMENT, reference.getParent().getParent().getType());
199  1 assertEquals(DEFAULT_PAGE, reference.getParent().getParent().getName());
200  1 assertEquals(EntityType.SPACE, reference.getParent().getParent().getParent().getType());
201  1 assertEquals(DEFAULT_SPACE, reference.getParent().getParent().getParent().getName());
202  1 assertEquals(EntityType.WIKI, reference.getParent().getParent().getParent().getParent().getType());
203  1 assertEquals(DEFAULT_WIKI, reference.getParent().getParent().getParent().getParent().getName());
204    }
205   
206    /**
207    * Test that a document reference, when resolved as an object reference, is correctly completed with the default
208    * values for object name.
209    */
 
210  1 toggle @Test
211    public void resolveObjectReferenceWhenTypeIsDocument()
212    {
213  1 EntityReference reference =
214    resolver.resolve(new EntityReference("page", EntityType.DOCUMENT, new EntityReference("space",
215    EntityType.SPACE, new EntityReference("wiki", EntityType.WIKI))), EntityType.OBJECT);
216  1 assertEquals(EntityType.OBJECT, reference.getType());
217  1 assertEquals(DEFAULT_OBJECT, reference.getName());
218  1 assertEquals(EntityType.DOCUMENT, reference.getParent().getType());
219  1 assertEquals("page", reference.getParent().getName());
220  1 assertEquals(EntityType.SPACE, reference.getParent().getParent().getType());
221  1 assertEquals("space", reference.getParent().getParent().getName());
222  1 assertEquals(EntityType.WIKI, reference.getParent().getParent().getParent().getType());
223  1 assertEquals("wiki", reference.getParent().getParent().getParent().getName());
224    }
225   
226    /**
227    * Test that a document reference, when resolved as a property reference, is correctly completed with the default
228    * values for object and property name.
229    */
 
230  1 toggle @Test
231    public void resolveObjectPropertyReferenceWhenTypeIsDocument()
232    {
233  1 EntityReference reference =
234    resolver.resolve(new EntityReference("page", EntityType.DOCUMENT, new EntityReference("space",
235    EntityType.SPACE, new EntityReference("wiki", EntityType.WIKI))), EntityType.OBJECT_PROPERTY);
236  1 assertEquals(EntityType.OBJECT_PROPERTY, reference.getType());
237  1 assertEquals(DEFAULT_OBJECT_PROPERTY, reference.getName());
238  1 assertEquals(EntityType.OBJECT, reference.getParent().getType());
239  1 assertEquals(DEFAULT_OBJECT, reference.getParent().getName());
240  1 assertEquals(EntityType.DOCUMENT, reference.getParent().getParent().getType());
241  1 assertEquals("page", reference.getParent().getParent().getName());
242  1 assertEquals(EntityType.SPACE, reference.getParent().getParent().getParent().getType());
243  1 assertEquals("space", reference.getParent().getParent().getParent().getName());
244  1 assertEquals(EntityType.WIKI, reference.getParent().getParent().getParent().getParent().getType());
245  1 assertEquals("wiki", reference.getParent().getParent().getParent().getParent().getName());
246    }
247   
 
248  1 toggle @Test
249    public void resolveDocumentReferenceWhenNullReference()
250    {
251  1 EntityReference reference = this.resolver.resolve(null, EntityType.DOCUMENT);
252   
253  1 assertEquals(EntityType.DOCUMENT, reference.getType());
254  1 assertEquals(DEFAULT_PAGE, reference.getName());
255  1 assertEquals(EntityType.SPACE, reference.getParent().getType());
256  1 assertEquals(DEFAULT_SPACE, reference.getParent().getName());
257  1 assertEquals(EntityType.WIKI, reference.getParent().getParent().getType());
258  1 assertEquals(DEFAULT_WIKI, reference.getParent().getParent().getName());
259    }
260    }