public async Task DelayQueryOnEntitySetNet45() { TestClientContext = this.CreateWrappedContext <InMemoryEntities>().Context; TestClientContext.MergeOption = MergeOption.OverwriteChanges; //Post an Product var product = Product.CreateProduct(10001, "10001", "2", 2.0f, 2, true); TestClientContext.AddToProducts(product); await TestClientContext.SaveChangesAsync(); //Action Bound on EntitySet var discountAction = TestClientContext.Products.Discount(50); Assert.IsTrue(discountAction.RequestUri.OriginalString.EndsWith("/Products/Microsoft.Test.OData.Services.ODataWCFService.Discount")); await discountAction.ExecuteAsync(); //ByKey var queryProduct = TestClientContext.Products.ByKey(new Dictionary <string, object> { { "ProductID", 10001 } }); Assert.IsTrue(queryProduct.RequestUri.OriginalString.EndsWith("/Products(10001)")); product = await queryProduct.GetValueAsync(); Assert.AreEqual(1, product.UnitPrice); //Action Bound on Entity var expectedAccessLevel = AccessLevel.ReadWrite | AccessLevel.Execute; var accessLevelAction = TestClientContext.Products.ByKey(new Dictionary <string, object> { { "ProductID", 10001 } }).AddAccessRight(expectedAccessLevel); Assert.IsTrue(accessLevelAction.RequestUri.OriginalString.EndsWith("/Products(10001)/Microsoft.Test.OData.Services.ODataWCFService.AddAccessRight")); var accessLevel = await accessLevelAction.GetValueAsync(); Assert.IsTrue(accessLevel.Value.HasFlag(expectedAccessLevel)); //Function Bound on Entity and return Collection of Entity //Won't execute since ODL doesn't support it now. var getProductDetailsAction = TestClientContext.Products.ByKey(new Dictionary <string, object> { { "ProductID", 10001 } }).GetProductDetails(1); var getRelatedProductAction = getProductDetailsAction.ByKey(new Dictionary <string, object> { { "ProductID", 10001 }, { "ProductDetailID", 10001 } }).GetRelatedProduct(); Assert.IsTrue(getProductDetailsAction.RequestUri.OriginalString.EndsWith("/Products(10001)/Microsoft.Test.OData.Services.ODataWCFService.GetProductDetails(count=1)")); Assert.IsTrue(getRelatedProductAction.RequestUri.OriginalString.EndsWith("/Products(10001)/Microsoft.Test.OData.Services.ODataWCFService.GetProductDetails(count=1)(ProductID=10001,ProductDetailID=10001)/Microsoft.Test.OData.Services.ODataWCFService.GetRelatedProduct()")); foreach (var pd in await getProductDetailsAction.ExecuteAsync()) { //Check whether GetEnumerator works Assert.AreEqual(5, pd.ProductID); } }
public async Task DelayQueryOnEntitySetNet35() { TestClientContext = this.CreateWrappedContext<InMemoryEntities>().Context; TestClientContext.MergeOption = MergeOption.OverwriteChanges; //Post a Product var product = Product.CreateProduct(10001, "10001", "2", 2.0f, 2, true); TestClientContext.AddToProducts(product); await TestClientContext.SaveChangesAsync(); //Action Bound on EntitySet and return an EntitySet var discountAction = TestClientContext.Products.Discount(50); Assert.IsTrue(discountAction.RequestUri.OriginalString.EndsWith("/Products/Microsoft.Test.OData.Services.ODataWCFService.Discount")); var ar = discountAction.BeginExecute(null, null).EnqueueWait(this); discountAction.EndExecute(ar); //Query an Entity var queryProduct = TestClientContext.Products.ByKey(new Dictionary<string, object> { { "ProductID", 10001 } }); Assert.IsTrue(queryProduct.RequestUri.OriginalString.EndsWith("/Products(10001)")); queryProduct.BeginGetValue( (ar1) => { product = queryProduct.EndGetValue(ar1); Assert.AreEqual(1, product.UnitPrice); }, queryProduct).EnqueueWait(this); //Action Bound on Entity and return an Enum var expectedAccessLevel = AccessLevel.ReadWrite | AccessLevel.Execute; var accessLevelAction = TestClientContext.Products.ByKey(new Dictionary<string, object> { { "ProductID", 10001 } }).AddAccessRight(expectedAccessLevel); Assert.IsTrue(accessLevelAction.RequestUri.OriginalString.EndsWith("/Products(10001)/Microsoft.Test.OData.Services.ODataWCFService.AddAccessRight")); var ar2 = accessLevelAction.BeginGetValue(null, null).EnqueueWait(this); var accessLevel = accessLevelAction.EndGetValue(ar2); Assert.IsTrue(accessLevel.Value.HasFlag(expectedAccessLevel)); //Function Bound on Entity and return Collection of Entity //Won't execute since ODL doesn't support it now. var getProductDetailsFunction = TestClientContext.Products.ByKey(new Dictionary<string, object> { { "ProductID", 10001 } }).GetProductDetails(1); var getRelatedProductAction = getProductDetailsFunction.ByKey(new Dictionary<string, object> { { "ProductID", 10001 }, { "ProductDetailID", 10001 } }).GetRelatedProduct(); Assert.IsTrue(getProductDetailsFunction.RequestUri.OriginalString.EndsWith("/Products(10001)/Microsoft.Test.OData.Services.ODataWCFService.GetProductDetails(count=1)")); Assert.IsTrue(getRelatedProductAction.RequestUri.OriginalString.EndsWith("/Products(10001)/Microsoft.Test.OData.Services.ODataWCFService.GetProductDetails(count=1)(ProductID=10001,ProductDetailID=10001)/Microsoft.Test.OData.Services.ODataWCFService.GetRelatedProduct()")); var ar3 = getProductDetailsFunction.BeginExecute(null, null).EnqueueWait(this); var productDetails = getProductDetailsFunction.EndExecute(ar3); foreach (var pd in productDetails) { //Check whether GetEnumerator works Assert.AreEqual(5, pd.ProductID); } }