示例#1
0
        public async Task CallAction_CreateQuery()
        {
            var hypermediaObjectRegister = CreateHypermediaObjectRegister();

            var sirenClient = new SirenHttpHypermediaClient <EntryPointHco>(ApiEntryPoint, hypermediaObjectRegister);
            var apiRoot     = await sirenClient.EnterAsync();

            var customersRoot = await apiRoot.NavigateAsync(l => l.Customers);

            var query = new CustomersQuery
            {
                Filter = new CustomerFilter {
                    MinAge = 22
                },
                SortBy = new SortOptions {
                    PropertyName = "Age", SortType = "Ascending"
                },
                Pagination = new Pagination {
                    PageOffset = 2, PageSize = 3
                }
            };

            var resultResource = await customersRoot.CreateQuery.ExecuteAsync(query);

            var queryResultPage = await resultResource.ResultLocation.ResolveAsync();
        }
示例#2
0
        public async Task EnterEntryPoint()
        {
            var hypermediaObjectRegister = CreateHypermediaObjectRegister();

            var sirenClient = new SirenHttpHypermediaClient <EntryPointHco>(ApiEntryPoint, hypermediaObjectRegister);
            var apiRoot     = await sirenClient.EnterAsync();

            // TODO Handle Erors (http, authorization, hypermediaparsing and api), problem json, status codes
            // use chache info from header so client may cache resolved documents
        }
示例#3
0
        public async Task EnterEntryPointAndNavigate()
        {
            var hypermediaObjectRegister = CreateHypermediaObjectRegister();

            var sirenClient = new SirenHttpHypermediaClient <EntryPointHco>(ApiEntryPoint, hypermediaObjectRegister);
            var apiRoot     = await sirenClient.EnterAsync();

            var customers = await apiRoot.Customers.ResolveAsync();

            var all = await customers.All.ResolveAsync();

            var allFluent = await sirenClient.EnterAsync().NavigateAsync(l => l.Customers).NavigateAsync(l => l.All);

            var allFluent2 = await apiRoot.NavigateAsync(l => l.Customers).NavigateAsync(l => l.All);

            var optionalFluent = await apiRoot.NavigateAsync(l => l.Customers).NavigateAsync(l => l.All).NavigateAsync(l => l.Next);
        }
示例#4
0
        public async Task CallAction_CustomerMove()
        {
            var hypermediaObjectRegister = CreateHypermediaObjectRegister();

            var sirenClient = new SirenHttpHypermediaClient <EntryPointHco>(ApiEntryPoint, hypermediaObjectRegister);
            var apiRoot     = await sirenClient.EnterAsync();

            var customersAll = await apiRoot.NavigateAsync(l => l.Customers).NavigateAsync(l => l.All);

            var customer = customersAll.Customers.First();

            var newAddress   = "New Address";
            var actionResult = await customer.CustomerMove.ExecuteAsync(new NewAddress { Address = newAddress });

            customer = await customer.Self.ResolveAsync();

            Assert.IsTrue(actionResult.Success);
            Assert.AreEqual(newAddress, customer.Address);
        }
示例#5
0
        public async Task CallAction_MarkAsFavorite()
        {
            var hypermediaObjectRegister = CreateHypermediaObjectRegister();

            var sirenClient = new SirenHttpHypermediaClient <EntryPointHco>(ApiEntryPoint, hypermediaObjectRegister);
            var apiRoot     = await sirenClient.EnterAsync();

            var customersAll = await apiRoot.NavigateAsync(l => l.Customers).NavigateAsync(l => l.All);

            var customer = customersAll.Customers.First();

            if (!customer.MarkAsFavorite.CanExecute)
            {
                Assert.Inconclusive("Action can not be run on server, not offered.");
            }

            var actionResult = await customer.MarkAsFavorite.ExecuteAsync();

            customer = await customer.Self.ResolveAsync();

            Assert.IsTrue(actionResult.Success);
            Assert.IsTrue(customer.IsFavorite);
        }