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

File EntityReferenceTreeTest.java

 

Code metrics

0
77
4
1
179
110
4
0.05
19.25
4
1

Classes

Class Line # Actions
EntityReferenceTreeTest 33 77 0% 4 0
1.0100%
 

Contributing tests

This file is covered by 4 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.reference;
21   
22    import java.util.Arrays;
23   
24    import org.junit.Assert;
25    import org.junit.Test;
26    import org.xwiki.model.EntityType;
27   
28    /**
29    * Validate {@link EntityReferenceTree}.
30    *
31    * @version $Id: 801ec1c8d3c6f2719d6c7dfdaa372e738ff91fb2 $
32    */
 
33    public class EntityReferenceTreeTest
34    {
 
35  1 toggle @Test
36    public void testOneReference()
37    {
38  1 EntityReferenceTreeNode treeNode = new EntityReferenceTree(new DocumentReference("wiki", "space", "page"));
39   
40  1 Assert.assertEquals(null, treeNode.getReference());
41  1 Assert.assertEquals(1, treeNode.getChildren().size());
42   
43  1 treeNode = treeNode.get("wiki");
44   
45  1 Assert.assertNotNull(treeNode);
46  1 Assert.assertEquals(new WikiReference("wiki"), treeNode.getReference());
47  1 Assert.assertEquals(1, treeNode.getChildren().size());
48   
49  1 treeNode = treeNode.get("space");
50   
51  1 Assert.assertNotNull(treeNode);
52  1 Assert.assertEquals(new SpaceReference("space", new WikiReference("wiki")), treeNode.getReference());
53  1 Assert.assertEquals(1, treeNode.getChildren().size());
54   
55  1 treeNode = treeNode.get("page");
56   
57  1 Assert.assertNotNull(treeNode);
58  1 Assert.assertEquals(new DocumentReference("wiki", "space", "page"), treeNode.getReference());
59  1 Assert.assertEquals(0, treeNode.getChildren().size());
60    }
61   
 
62  1 toggle @Test
63    public void testSeveralReferences()
64    {
65  1 EntityReferenceTreeNode tree = new EntityReferenceTree(new DocumentReference("wiki", "space", "page"),
66    new DocumentReference("wiki", "space2", "page2"), new DocumentReference("wiki", "space", "page2"),
67    new DocumentReference("wiki2", "space2", "page2"));
68   
69  1 Assert.assertEquals(null, tree.getReference());
70  1 Assert.assertEquals(2, tree.getChildren().size());
71   
72    {
73  1 EntityReferenceTreeNode treeNode = tree.get("wiki");
74   
75  1 Assert.assertNotNull(treeNode);
76  1 Assert.assertEquals(new WikiReference("wiki"), treeNode.getReference());
77  1 Assert.assertEquals(2, treeNode.getChildren().size());
78   
79  1 treeNode = treeNode.get("space");
80   
81  1 Assert.assertNotNull(treeNode);
82  1 Assert.assertEquals(new SpaceReference("space", new WikiReference("wiki")), treeNode.getReference());
83  1 Assert.assertEquals(2, treeNode.getChildren().size());
84   
85  1 treeNode = treeNode.get("page");
86   
87  1 Assert.assertNotNull(treeNode);
88  1 Assert.assertEquals(new DocumentReference("wiki", "space", "page"), treeNode.getReference());
89  1 Assert.assertEquals(0, treeNode.getChildren().size());
90    }
91   
92    {
93  1 EntityReferenceTreeNode treeNode = tree.get("wiki2");
94   
95  1 Assert.assertNotNull(treeNode);
96  1 Assert.assertEquals(new WikiReference("wiki2"), treeNode.getReference());
97  1 Assert.assertEquals(1, treeNode.getChildren().size());
98   
99  1 treeNode = treeNode.get("space2");
100   
101  1 Assert.assertNotNull(treeNode);
102  1 Assert.assertEquals(new SpaceReference("space2", new WikiReference("wiki2")), treeNode.getReference());
103  1 Assert.assertEquals(1, treeNode.getChildren().size());
104   
105  1 treeNode = treeNode.get("page2");
106   
107  1 Assert.assertNotNull(treeNode);
108  1 Assert.assertEquals(new DocumentReference("wiki2", "space2", "page2"), treeNode.getReference());
109  1 Assert.assertEquals(0, treeNode.getChildren().size());
110    }
111    }
112   
 
113  1 toggle @Test
114    public void getDescendantByReference()
115    {
116  1 DocumentReference documentReference = new DocumentReference("wiki", Arrays.asList("Path", "To"), "Page");
117  1 EntityReferenceTree tree = new EntityReferenceTree(documentReference);
118   
119  1 Assert.assertSame(documentReference.getWikiReference(), tree.get(new WikiReference("wiki")).getReference());
120   
121  1 Assert.assertSame(documentReference.getLastSpaceReference(),
122    tree.get(documentReference.getLastSpaceReference()).getReference());
123   
124  1 EntityReference entityReference =
125    new EntityReference(documentReference.getName(), EntityType.DOCUMENT, documentReference.getParent());
126  1 Assert.assertSame(documentReference, tree.get(entityReference).getReference());
127   
128    // The entity type should be taken into account.
129  1 Assert.assertNull(tree
130    .get(new EntityReference(documentReference.getName(), EntityType.SPACE, documentReference.getParent())));
131   
132  1 Assert.assertNull(tree.get((EntityReference) null));
133   
134  1 Assert.assertNull(tree.get(new SpaceReference("From", documentReference.getParent().getParent())));
135    }
136   
 
137  1 toggle @Test
138    public void testSiblingWithDifferentType()
139    {
140  1 DocumentReference document = new DocumentReference("wiki", "space", "entity");
141  1 SpaceReference space = new SpaceReference("wiki", "space", "entity");
142   
143  1 EntityReferenceTreeNode tree = new EntityReferenceTree(document, space);
144   
145  1 Assert.assertSame(document, tree.get(document).getReference());
146  1 Assert.assertSame(space, tree.get(space).getReference());
147   
148  1 EntityReferenceTreeNode treeNode = tree;
149   
150  1 Assert.assertEquals(null, treeNode.getReference());
151  1 Assert.assertEquals(1, treeNode.getChildren().size());
152   
153  1 treeNode = treeNode.get("wiki");
154   
155  1 Assert.assertNotNull(treeNode);
156  1 Assert.assertSame(document.getWikiReference(), treeNode.getReference());
157  1 Assert.assertEquals(1, treeNode.getChildren().size());
158   
159  1 treeNode = treeNode.get("space");
160   
161  1 Assert.assertNotNull(treeNode);
162  1 Assert.assertSame(document.getParent(), treeNode.getReference());
163  1 Assert.assertEquals(2, treeNode.getChildren().size());
164  1 Assert.assertEquals(1, treeNode.getChildren(EntityType.DOCUMENT).size());
165  1 Assert.assertEquals(1, treeNode.getChildren(EntityType.SPACE).size());
166   
167  1 EntityReferenceTreeNode documentNode = treeNode.getChildren(EntityType.DOCUMENT).iterator().next();
168   
169  1 Assert.assertNotNull(documentNode);
170  1 Assert.assertSame(document, documentNode.getReference());
171  1 Assert.assertEquals(0, documentNode.getChildren().size());
172   
173  1 EntityReferenceTreeNode spaceNode = treeNode.getChildren(EntityType.SPACE).iterator().next();
174   
175  1 Assert.assertNotNull(spaceNode);
176  1 Assert.assertSame(space, spaceNode.getReference());
177  1 Assert.assertEquals(0, spaceNode.getChildren().size());
178    }
179    }