blob: 0e6c50e2527fd9ef39e961d38bc5da03ae1786ba [file] [log] [blame]
/*******************************************************************************
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
******************************************************************************/
package org.apache.olingo.odata2.core.uri;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.olingo.odata2.api.edm.Edm;
import org.apache.olingo.odata2.api.exception.ODataException;
import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
import org.apache.olingo.odata2.api.uri.PathSegment;
import org.apache.olingo.odata2.api.uri.UriInfo;
import org.apache.olingo.odata2.api.uri.UriParser;
import org.apache.olingo.odata2.testutil.fit.BaseTest;
import org.apache.olingo.odata2.testutil.mock.MockFacade;
import org.junit.BeforeClass;
import org.junit.Test;
/**
*
*/
public class ExpandSelectTreeCreatorImplTest extends BaseTest {
private static Edm edm;
@BeforeClass
public static void setEdm() throws ODataException {
edm = MockFacade.getMockEdm();
}
@Test
public void allNull() throws Exception {
// {"all":true,"properties":[],"links":[]}
String expected = "{\"all\":true,\"properties\":[],\"links\":[]}";
String actual = getExpandSelectTree(null, null).toJsonString();
assertEquals(expected, actual);
}
@Test
public void oneProperty() throws Exception {
// {"all":false,"properties":["Age"],"links":[]}
String expected = "{\"all\":false,\"properties\":[\"Age\"],\"links\":[]}";
// $select=Age
String actual = getExpandSelectTree("Age", null).toJsonString();
assertEquals(expected, actual);
}
@Test
public void complexProperty() throws Exception {
final ExpandSelectTreeNode actual = getExpandSelectTree("Location", null);
assertNotNull(actual);
assertFalse(actual.isAll());
assertEquals(Arrays.asList(edm.getEntityType("RefScenario", "Employee").getProperty("Location")),
actual.getProperties());
assertTrue(actual.getLinks().isEmpty());
}
@Test
public void onlyPropertyAndExpandLink() throws Exception {
// {"all":false,"properties":["Age"],"links":[]}
String expected = "{\"all\":false,\"properties\":[\"Age\"],\"links\":[]}";
// $select=Age&$expand=ne_Room
String actual = getExpandSelectTree("Age", "ne_Room").toJsonString();
assertEquals(expected, actual);
}
@Test
public void starAndExpandLink() throws Exception {
// {"all":true,"properties":[],"links":[]}
String expected = "{\"all\":true,\"properties\":[],\"links\":[]}";
// $select=*&$expand=ne_Room
String actual = getExpandSelectTree("*", "ne_Room").toJsonString();
assertEquals(expected, actual);
// $select=*,EmployeeId&$expand=ne_Room
actual = getExpandSelectTree("*,EmployeeId", "ne_Room").toJsonString();
assertEquals(expected, actual);
// $select=EmployeeId,*&$expand=ne_Room
actual = getExpandSelectTree("EmployeeId,*", "ne_Room").toJsonString();
assertEquals(expected, actual);
}
@Test
public void oneSelectLink() throws Exception {
// {"all":false,"properties":[],"links":[{"ne_Room":null}]}
String expected = "{\"all\":false,\"properties\":[],\"links\":[{\"ne_Room\":null}]}";
// $select=ne_Room
String actual = getExpandSelectTree("ne_Room", null).toJsonString();
assertEquals(expected, actual);
}
@Test
public void starAndNavPropInSelectAndExpand() throws Exception {
// {"all":false,"properties":[],"links":[{\"ne_Room\":{\"all\":true,\"properties\":[],\"links\":[]}}]}
String expected =
"{\"all\":true,\"properties\":[],\"links\":[{\"ne_Room\":{\"all\":true,\"properties\":[],\"links\":[]}}]}";
// $select=ne_Room,* $expand=ne_Room
String actual = getExpandSelectTree("ne_Room,*", "ne_Room").toJsonString();
assertEquals(expected, actual);
// $select=*,ne_Room $expand=ne_Room
actual = getExpandSelectTree("*,ne_Room", "ne_Room").toJsonString();
assertEquals(expected, actual);
// $select=*,ne_Room,ne_Manager $expand=ne_Room
actual = getExpandSelectTree("*,ne_Room,ne_Manager", "ne_Room").toJsonString();
assertEquals(expected, actual);
// $select=ne_Room,*,ne_Manager $expand=ne_Room
actual = getExpandSelectTree("ne_Room,*,ne_Manager", "ne_Room").toJsonString();
assertEquals(expected, actual);
// $select=ne_Room,ne_Manager,* $expand=ne_Room
actual = getExpandSelectTree("ne_Room,ne_Manager,*", "ne_Room").toJsonString();
assertEquals(expected, actual);
}
@Test
public void sameLinkInSelectAndExpand() throws Exception {
// {"all":false,"properties":[],"links":[{"ne_Room":{"all":true,"properties":[],"links":[]}}]}
String expected =
"{\"all\":false,\"properties\":[],\"links\":[{\"ne_Room\":{\"all\":true,\"properties\":[],\"links\":[]}}]}";
// $select=ne_Room&$expand=ne_Room
String actual = getExpandSelectTree("ne_Room", "ne_Room").toJsonString();
assertEquals(expected, actual);
// $select=ne_Room/*&$expand=ne_Room
actual = getExpandSelectTree("ne_Room/*", "ne_Room").toJsonString();
assertEquals(expected, actual);
}
@Test
public void deepLinkInSelectAndExpand() throws Exception {
// {"all":false,"properties":[],"links":[{"ne_Room":{"all":false,"properties":[],
// "links":[{"nr_Employees":{"all":true,"properties":[],"links":[]}}]}}]}
String expected =
"{\"all\":false,\"properties\":[],\"links\":[{\"ne_Room\":{\"all\":false," +
"\"properties\":[],\"links\":[{\"nr_Employees\":{\"all\":true,\"properties\":[],\"links\":[]}}]}}]}";
// $select=ne_Room/nr_Employees&$expand=ne_Room,ne_Manager,ne_Room/nr_Employees,ne_Room/nr_Building
String actual =
getExpandSelectTree("ne_Room/nr_Employees", "ne_Room,ne_Manager,ne_Room/nr_Employees,ne_Room/nr_Building")
.toJsonString();
assertEquals(expected, actual);
}
@Test
public void thirdLevel() throws Exception {
assertEquals("{\"all\":false,\"properties\":[],\"links\":["
+ "{\"ne_Team\":{\"all\":false,\"properties\":[],\"links\":["
+ "{\"nt_Employees\":{\"all\":false,\"properties\":[],\"links\":["
+ "{\"ne_Manager\":{\"all\":false,\"properties\":[\"EmployeeId\"],\"links\":[]}}]}}]}}]}",
getExpandSelectTree("ne_Team/nt_Employees/ne_Manager/EmployeeId", "ne_Team/nt_Employees/ne_Manager")
.toJsonString());
}
@Test
public void expandOneLink() throws Exception {
// {"all":true,"properties":[],"links":[{"ne_Room":{"all":true,"properties":[],"links":[]}}]}
String expected =
"{\"all\":true,\"properties\":[],\"links\":[{\"ne_Room\":{\"all\":true,\"properties\":[],\"links\":[]}}]}";
// $expand=ne_Room
String actual = getExpandSelectTree(null, "ne_Room").toJsonString();
assertEquals(expected, actual);
}
@Test
public void complexSelectExpand() throws Exception {
// {"all":false,"properties":["Age"],"links":[{"ne_Room":{"all":false,"properties":["Seats"],
// "links":[]}},{"ne_Team":null},{"ne_Manager":{"all":true,"properties":[],"links":[{"ne_Team":{"all":true,
// "properties":[],"links":[{"nt_Employees":{"all":true,"properties":[],"links":[]}}]}}]}}]}
String select = "Age,ne_Room/Seats,ne_Team/Name,ne_Manager/*,ne_Manager/ne_Team,ne_Team";
String expand = "ne_Room/nr_Building,ne_Manager/ne_Team/nt_Employees,ne_Manager/ne_Room";
ExpandSelectTreeNode actual = getExpandSelectTree(select, expand);
assertFalse(actual.isAll());
assertEquals("Age", actual.getProperties().get(0).getName());
assertNotNull(actual.getLinks());
Map<String, ExpandSelectTreeNode> links = actual.getLinks();
assertEquals(3, links.size());
for (String navPropertyName : links.keySet()) {
if ("ne_Room".equals(navPropertyName)) {
ExpandSelectTreeNode roomNode = links.get(navPropertyName);
assertFalse(roomNode.isAll());
assertEquals("Seats", roomNode.getProperties().get(0).getName());
assertTrue(roomNode.getLinks().isEmpty());
} else if ("ne_Team".equals(navPropertyName)) {
assertNull(links.get(navPropertyName));
} else if ("ne_Manager".equals(navPropertyName)) {
ExpandSelectTreeNodeImpl managerNode = (ExpandSelectTreeNodeImpl) links.get(navPropertyName);
String expected =
"{\"all\":true,\"properties\":[],\"links\":[{\"ne_Team\":{\"all\":true,\"properties\":[]," +
"\"links\":[{\"nt_Employees\":{\"all\":true,\"properties\":[],\"links\":[]}}]}}]}";
String actualString = managerNode.toJsonString();
assertEquals(expected, actualString);
} else {
fail("Unknown navigation property in links: " + navPropertyName);
}
}
}
@Test
public void twoProperties() throws Exception {
// {"all":false,"properties":["Age","EmployeeId"],"links":[]}
String expected = "{\"all\":false,\"properties\":[\"Age\",\"EmployeeId\"],\"links\":[]}";
// $select=Age,EmployeeId
String actual = getExpandSelectTree("Age,EmployeeId", null).toJsonString();
assertEquals(expected, actual);
}
@Test
public void sameProperties() throws Exception {
// {"all":false,"properties":["EmployeeId","Age"],"links":[]}
String expected = "{\"all\":false,\"properties\":[\"EmployeeId\",\"Age\"],\"links\":[]}";
// $select=EmployeeId,Age,EmployeeId
String actual = getExpandSelectTree("EmployeeId,Age,EmployeeId", null).toJsonString();
assertEquals(expected, actual);
}
@Test
public void propertiesAndStar() throws Exception {
// {"all":true,"properties":[],"links":[]}
String expected = "{\"all\":true,\"properties\":[],\"links\":[]}";
// $select=Age,EmployeeId,*
String actual = getExpandSelectTree("Age,EmployeeId,*", null).toJsonString();
assertEquals(expected, actual);
// $select=*,Age,EmployeeId
actual = getExpandSelectTree("*,Age,EmployeeId", null).toJsonString();
assertEquals(expected, actual);
}
@Test
public void multiSelectLinkWithoutExpand() throws Exception {
// {"all":false,"properties":[],"links":[{"ne_Manager":null}]}
String expected = "{\"all\":false,\"properties\":[],\"links\":[{\"ne_Manager\":null}]}";
// $select=ne_Manager
String actual = getExpandSelectTree("ne_Manager", null).toJsonString();
assertEquals(expected, actual);
// $select=ne_Manager/ne_Manager
actual = getExpandSelectTree("ne_Manager/ne_Manager", null).toJsonString();
assertEquals(expected, actual);
// $select=ne_Manager/ne_Manager,ne_Manager
actual = getExpandSelectTree("ne_Manager/ne_Manager,ne_Manager", null).toJsonString();
assertEquals(expected, actual);
// $select=ne_Manager/ne_Manager/ne_Manager/ne_Manager,ne_Manager
actual = getExpandSelectTree("ne_Manager/ne_Manager/ne_Manager/ne_Manager,ne_Manager", null).toJsonString();
assertEquals(expected, actual);
// $select=ne_Manager,ne_Manager/ne_Manager/ne_Manager/ne_Manager
actual = getExpandSelectTree("ne_Manager,ne_Manager/ne_Manager/ne_Manager/ne_Manager", null).toJsonString();
assertEquals(expected, actual);
}
@Test
public void sameSelectLinks() throws Exception {
// {"all":false,"properties":[],"links":[{"ne_Manager":null}]}
String expected = "{\"all\":false,\"properties\":[],\"links\":[{\"ne_Manager\":null}]}";
// $select=ne_Manager,ne_Manager
String actual = getExpandSelectTree("ne_Manager,ne_Manager", null).toJsonString();
assertEquals(expected, actual);
}
@Test
public void sameExpandLinks() throws Exception {
// {"all":true,"properties":[],"links":[{"ne_Manager":{"all":true,"properties":[],"links":[]}}]}
String expected =
"{\"all\":true,\"properties\":[],\"links\":[{\"ne_Manager\":{\"all\":true,\"properties\":[],\"links\":[]}}]}";
// $expand=ne_Manager,ne_Manager
String actual = getExpandSelectTree(null, "ne_Manager,ne_Manager").toJsonString();
assertEquals(expected, actual);
}
@Test
public void multiExpandLinkWithoutSelect() throws Exception {
// {"all":true,"properties":[],"links":[{"ne_Manager":{"all":true,"properties":[],
// "links":[{"ne_Manager":{"all":true,"properties":[],"links":[]}}]}}]}
String expected =
"{\"all\":true,\"properties\":[],\"links\":[{\"ne_Manager\":{\"all\":true,\"properties\":[]," +
"\"links\":[{\"ne_Manager\":{\"all\":true,\"properties\":[],\"links\":[]}}]}}]}";
// $expand=ne_Manager/ne_Manager,ne_Manager
String actual = getExpandSelectTree(null, "ne_Manager/ne_Manager,ne_Manager").toJsonString();
assertEquals(expected, actual);
}
@Test
public void twoSelectLinks() throws Exception {
// One of the two is expected but the order of links is not defined
String expected = "{\"all\":false,\"properties\":[],\"links\":[{\"ne_Manager\":null},{\"ne_Room\":null}]}";
String expected2 = "{\"all\":false,\"properties\":[],\"links\":[{\"ne_Room\":null},{\"ne_Manager\":null}]}";
// $select=ne_Manager,ne_Room
String actual = getExpandSelectTree("ne_Manager,ne_Room", null).toJsonString();
if (!expected.equals(actual) && !expected2.equals(actual)) {
fail("Either " + expected + " or " + expected2 + " expected but was: " + actual);
}
}
@Test
public void oneSelectDeepExpand() throws Exception {
// {"all":false,"properties":[],"links":[{"ne_Manager":{"all":true,"properties":[],"links":[{
// "ne_Room":{"all":true,"properties":[],"links":[{"nr_Building":{"all":true,"properties":[],"links":[]}}]}}]}}]}
String expected =
"{\"all\":false,\"properties\":[],\"links\":[{\"ne_Manager\":{\"all\":true,\"properties\":[]," +
"\"links\":[{\"ne_Room\":{\"all\":true,\"properties\":[],\"links\":[{\"nr_Building\":{\"all\":true," +
"\"properties\":[],\"links\":[]}}]}}]}}]}";
// $select=ne_Manager $expand=ne_Manager/ne_Room/nr_Building
String actual = getExpandSelectTree("ne_Manager", "ne_Manager/ne_Room/nr_Building").toJsonString();
assertEquals(expected, actual);
// $select=ne_Manager,ne_Manager/EmployeeId $expand=ne_Manager/ne_Room/nr_Building
actual = getExpandSelectTree("ne_Manager,ne_Manager/EmployeeId", "ne_Manager/ne_Room/nr_Building").toJsonString();
assertEquals(expected, actual);
// $select=ne_Manager/EmployeeId,ne_Manager $expand=ne_Manager/ne_Room/nr_Building
actual = getExpandSelectTree("ne_Manager/EmployeeId,ne_Manager", "ne_Manager/ne_Room/nr_Building").toJsonString();
assertEquals(expected, actual);
// $select=ne_Manager,ne_Manager $expand=ne_Manager/ne_Room/nr_Building
actual = getExpandSelectTree("ne_Manager,ne_Manager", "ne_Manager/ne_Room/nr_Building").toJsonString();
assertEquals(expected, actual);
}
@Test
public void starAtEndWithExpand() throws Exception {
// {"all":false,"properties":["EmployeeId"],"links":[{"ne_Room":{"all":true,"properties":[],"links":[]}}]}
String expected =
"{\"all\":false,\"properties\":[\"EmployeeId\"],\"links\":[{\"ne_Room\":{\"all\":true," +
"\"properties\":[],\"links\":[]}}]}";
// $select=EmployeeId,ne_Room/* $expand=ne_Room/nr_Building
String actual = getExpandSelectTree("EmployeeId,ne_Room/*", "ne_Room/nr_Building").toJsonString();
assertEquals(expected, actual);
// $select=EmployeeId,ne_Room/Id $expand=ne_Room/nr_Building/nb_Rooms
actual = getExpandSelectTree("EmployeeId,ne_Room/*", "ne_Room/nr_Building/nb_Rooms").toJsonString();
assertEquals(expected, actual);
}
@Test
public void propertyAtEndWithExpand() throws Exception {
// {"all":false,"properties":["EmployeeId"],"links":[{"ne_Room":{"all":true,"properties":[],"links":[]}}]}
String expected =
"{\"all\":false,\"properties\":[\"EmployeeId\"],\"links\":[{\"ne_Room\":{\"all\":false," +
"\"properties\":[\"Id\"],\"links\":[]}}]}";
// $select=EmployeeId,ne_Room/* $expand=ne_Room/nr_Building
String actual = getExpandSelectTree("EmployeeId,ne_Room/Id", "ne_Room/nr_Building").toJsonString();
assertEquals(expected, actual);
// $select=EmployeeId,ne_Room/Id $expand=ne_Room/nr_Building/nb_Rooms
actual = getExpandSelectTree("EmployeeId,ne_Room/Id", "ne_Room/nr_Building/nb_Rooms").toJsonString();
assertEquals(expected, actual);
}
@Test
public void starTest() throws Exception {
// {"all":false,"properties":["EmployeeId"],"links":[{"ne_Room":{"all":true,"properties":[],"links":[]}}]}
String expected =
"{\"all\":true,\"properties\":[],\"links\":[{\"ne_Room\":{\"all\":true,\"properties\":[],\"links\":[]}}]}";
// $select=EmployeeId,ne_Room/* $expand=ne_Room/nr_Building
String actual = getExpandSelectTree("*,ne_Room/*", "ne_Room/nr_Building").toJsonString();
assertEquals(expected, actual);
// $select=EmployeeId,ne_Room/Id $expand=ne_Room/nr_Building/nb_Rooms
actual = getExpandSelectTree("ne_Room/*,*", "ne_Room/nr_Building").toJsonString();
assertEquals(expected, actual);
}
@Test
public void twoExpandsTwoSelects() throws Exception {
// {"all":false,"properties":[],"links":[{"ne_Manager":{"all":false,"properties":["EmployeeId"],
// "links":[{"ne_Room":{"all":true,"properties":[],"links":[{"nr_Building":{"all":true,"properties":[],
// "links":[]}}]}}]}}]}
String expected =
"{\"all\":false,\"properties\":[],\"links\":[{\"ne_Manager\":{\"all\":false,\"properties\":[\"EmployeeId\"]," +
"\"links\":[{\"ne_Room\":{\"all\":true,\"properties\":[],\"links\":[{\"nr_Building\":{\"all\":true," +
"\"properties\":[],\"links\":[]}}]}}]}}]}";
// $select=ne_Manager/EmployeeId,ne_Manager/ne_Room $expand=ne_Manager/ne_Room/nr_Building
String actual =
getExpandSelectTree("ne_Manager/ne_Room,ne_Manager/EmployeeId", "ne_Manager/ne_Room/nr_Building")
.toJsonString();
assertEquals(expected, actual);
// $select=EmployeeId,ne_Room/Id $expand=ne_Room/nr_Building/nb_Rooms
actual =
getExpandSelectTree("ne_Manager/EmployeeId,ne_Manager/ne_Room", "ne_Manager/ne_Room/nr_Building")
.toJsonString();
assertEquals(expected, actual);
}
@Test
public void twoExpandsTest() throws Exception {
// {"all":false,"properties":[],"links":[{"ne_Manager":{"all":true,"properties":[],
// "links":[{"ne_Room":{"all":true,"properties":[],"links":[{"nr_Building":{"all":true,"properties":[],
// "links":[]}}]}},{"ne_Team":{"all":true,"properties":[],"links":[]}}]}}]}
String expected1 =
"{\"all\":false,\"properties\":[],\"links\":[{\"ne_Manager\":{\"all\":true,\"properties\":[]," +
"\"links\":[{\"ne_Room\":{\"all\":true,\"properties\":[],\"links\":[{\"nr_Building\":{\"all\":true," +
"\"properties\":[],\"links\":[]}}]}},{\"ne_Team\":{\"all\":true,\"properties\":[],\"links\":[]}}]}}]}";
String expected2 =
"{\"all\":false,\"properties\":[],\"links\":[{\"ne_Manager\":{\"all\":true,\"properties\":[]," +
"\"links\":[{\"ne_Team\":{\"all\":true,\"properties\":[],\"links\":[]}},{\"ne_Room\":{\"all\":true," +
"\"properties\":[],\"links\":[{\"nr_Building\":{\"all\":true,\"properties\":[],\"links\":[]}}]}}]}}]}";
// $select=ne_Manager $expand=ne_Manager/ne_Room/nr_Building,ne_Manager/ne_Team
String actual =
getExpandSelectTree("ne_Manager", "ne_Manager/ne_Room/nr_Building,ne_Manager/ne_Team").toJsonString();
if (!expected1.equals(actual) && !expected2.equals(actual)) {
fail("Either " + expected1 + " or " + expected2 + " expected but was: " + actual);
}
// $select=ne_Manager $expand=ne_Manager/ne_Team,ne_Manager/ne_Room/nr_Building
actual = getExpandSelectTree("ne_Manager", "ne_Manager/ne_Team,ne_Manager/ne_Room/nr_Building").toJsonString();
if (!expected1.equals(actual) && !expected2.equals(actual)) {
fail("Either " + expected1 + " or " + expected2 + " expected but was: " + actual);
}
// $select=ne_Manager,ne_Manager/ne_Team/Id $expand=ne_Manager/ne_Team,ne_Manager/ne_Room/nr_Building
actual =
getExpandSelectTree("ne_Manager,ne_Manager/ne_Team/Id", "ne_Manager/ne_Team,ne_Manager/ne_Room/nr_Building")
.toJsonString();
if (!expected1.equals(actual) && !expected2.equals(actual)) {
fail("Either " + expected1 + " or " + expected2 + " expected but was: " + actual);
}
// $select=ne_Manager/ne_Team/Id,ne_Manager $expand=ne_Manager/ne_Team,ne_Manager/ne_Room/nr_Building
actual =
getExpandSelectTree("ne_Manager/ne_Team/Id,ne_Manager", "ne_Manager/ne_Team,ne_Manager/ne_Room/nr_Building")
.toJsonString();
if (!expected1.equals(actual) && !expected2.equals(actual)) {
fail("Either " + expected1 + " or " + expected2 + " expected but was: " + actual);
}
}
@Test
public void oneExpandsFourSelects() throws Exception {
// {"all":false,"properties":[],"links":[{"ne_Manager":{"all":true,"properties":[],"links":[{"ne_Room":
// {"all":true,"properties":[],"links":[{"nr_Building":{"all":true,"properties":[],"links":[]}}]}}]}}]}
String expected =
"{\"all\":false,\"properties\":[],\"links\":[{\"ne_Manager\":{\"all\":true,\"properties\":[],\"links\":" +
"[{\"ne_Room\":{\"all\":true,\"properties\":[],\"links\":[{\"nr_Building\":{\"all\":true,\"properties\":" +
"[],\"links\":[]}}]}}]}}]}";
// $select=ne_Manager/EmployeeId,ne_Manager/ne_Room/Id,ne_Manager/ne_Room/nr_Building/Id,ne_Manager
// $expand=ne_Manager/ne_Room/nr_Building
String actual =
getExpandSelectTree("ne_Manager/EmployeeId,ne_Manager/ne_Room/Id,ne_Manager/ne_Room/nr_Building/Id,ne_Manager",
"ne_Manager/ne_Room/nr_Building").toJsonString();
assertEquals(expected, actual);
}
private ExpandSelectTreeNodeImpl getExpandSelectTree(final String selectString, final String expandString)
throws Exception {
final List<PathSegment> pathSegments =
MockFacade.getPathSegmentsAsODataPathSegmentMock(Arrays.asList("Employees('1')"));
Map<String, String> queryParameters = new HashMap<String, String>();
if (selectString != null) {
queryParameters.put("$select", selectString);
}
if (expandString != null) {
queryParameters.put("$expand", expandString);
}
final UriInfo uriInfo = UriParser.parse(edm, pathSegments, queryParameters);
ExpandSelectTreeCreator expandSelectTreeCreator =
new ExpandSelectTreeCreator(uriInfo.getSelect(), uriInfo.getExpand());
ExpandSelectTreeNode expandSelectTree = expandSelectTreeCreator.create();
assertNotNull(expandSelectTree);
return (ExpandSelectTreeNodeImpl) expandSelectTree;
}
}