Skip to content

Commit

Permalink
Only parameterless function imports could be included in the service …
Browse files Browse the repository at this point in the history
…document OData#104
  • Loading branch information
TomDu authored and shaofengzhu committed Jun 10, 2016
1 parent 243747c commit 6f0105e
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 15 deletions.
2 changes: 1 addition & 1 deletion src/Microsoft.OData.Core/ODataUtils.cs
Expand Up @@ -201,7 +201,7 @@ public static ODataServiceDocument GenerateServiceDocument(this IEdmModel model)
.Select(entitySet => new ODataEntitySetInfo() { Name = entitySet.Name, Title = entitySet.Name, Url = new Uri(entitySet.Name, UriKind.RelativeOrAbsolute) }).ToList();
serviceDocument.Singletons = model.EntityContainer.Singletons()
.Select(singleton => new ODataSingletonInfo() { Name = singleton.Name, Title = singleton.Name, Url = new Uri(singleton.Name, UriKind.RelativeOrAbsolute) }).ToList();
serviceDocument.FunctionImports = model.EntityContainer.OperationImports().OfType<IEdmFunctionImport>().Where(functionImport => functionImport.IncludeInServiceDocument)
serviceDocument.FunctionImports = model.EntityContainer.OperationImports().OfType<IEdmFunctionImport>().Where(functionImport => (functionImport.IncludeInServiceDocument && !functionImport.Function.Parameters.Any()))
.Select(functionImport => new ODataFunctionImportInfo() { Name = functionImport.Name, Title = functionImport.Name, Url = new Uri(functionImport.Name, UriKind.RelativeOrAbsolute) }).ToList();

return serviceDocument;
Expand Down
32 changes: 18 additions & 14 deletions test/FunctionalTests/Microsoft.OData.Core.Tests/ODataUtilsTests.cs
Expand Up @@ -160,23 +160,23 @@ public void TestGenerateServiceDocument()
{
var serviceDocument = this.CreateTestModel().GenerateServiceDocument();
var entitySets = serviceDocument.EntitySets.ToList();
Assert.Equal(entitySets.Count, 2);
Assert.Equal(entitySets[0].Name, "Products");
Assert.Equal(entitySets[0].Url.ToString(), "Products");
Assert.Equal(entitySets[1].Name, "Customers");
Assert.Equal(entitySets[1].Url.ToString(), "Customers");
Assert.Equal(2, entitySets.Count);
Assert.Equal("Products", entitySets[0].Name);
Assert.Equal("Products", entitySets[0].Url.ToString());
Assert.Equal("Customers", entitySets[1].Name);
Assert.Equal("Customers", entitySets[1].Url.ToString());

var singletons = serviceDocument.Singletons.ToList();
Assert.Equal(singletons.Count, 2);
Assert.Equal(singletons[0].Name, "SingleProduct");
Assert.Equal(singletons[0].Url.ToString(), "SingleProduct");
Assert.Equal(singletons[1].Name, "SingleCustomer");
Assert.Equal(singletons[1].Url.ToString(), "SingleCustomer");
Assert.Equal(2, singletons.Count);
Assert.Equal("SingleProduct", singletons[0].Name);
Assert.Equal("SingleProduct", singletons[0].Url.ToString());
Assert.Equal("SingleCustomer", singletons[1].Name);
Assert.Equal("SingleCustomer", singletons[1].Url.ToString());

var functionImports = serviceDocument.FunctionImports.ToList();
Assert.Equal(functionImports.Count, 1);
Assert.Equal(functionImports[0].Name, "SimpleFunctionImport2");
Assert.Equal(functionImports[0].Url.ToString(), "SimpleFunctionImport2");
Assert.Equal(1, functionImports.Count);
Assert.Equal("SimpleFunctionImport3", functionImports[0].Name);
Assert.Equal("SimpleFunctionImport3", functionImports[0].Url.ToString());
}

[Fact]
Expand Down Expand Up @@ -221,7 +221,11 @@ private IEdmModel CreateTestModel()

EdmFunction function2 = new EdmFunction("TestModel", "SimpleFunction2", EdmCoreModel.Instance.GetInt32(false), false /*isbound*/, null, true);
function2.AddParameter("p1", EdmCoreModel.Instance.GetInt32(false));
defaultContainer.AddFunctionImport("SimpleFunctionImport2", function1, null, true /*IncludeInServiceDocument*/);
defaultContainer.AddFunctionImport("SimpleFunctionImport2", function2, null, true /*IncludeInServiceDocument*/);

// Parameterless unbound function.
EdmFunction function3 = new EdmFunction("TestModel", "SimpleFunction3", EdmCoreModel.Instance.GetInt32(false), false /*isbound*/, null, true);
defaultContainer.AddFunctionImport("SimpleFunctionImport3", function3, null, true /*IncludeInServiceDocument*/);

return model;
}
Expand Down

0 comments on commit 6f0105e

Please sign in to comment.