Example #1
0
        // PATCH ~/Employees(1)/Namespace.Manager
        public async Task UpdateDerivedEntityType()
        {
            await ResetDatasource();

            Uri serviceUrl = new Uri(this.BaseAddress + "/AttributeRouting/");
            var client = new TypedProxy.Container(serviceUrl);
            client.MergeOption = MergeOption.OverwriteChanges;
            client.Format.UseJson();

            var manager = client.Employees.OfType<TypedProxy.Manager>().Where(m => m.Id == 2).Single();
            manager.Gender = null;
            manager.PhoneNumbers = new List<string>() { "8621-9999-8888", "2345", "4567", "5678" };
            client.UpdateObject(manager);
            client.SaveChanges();

            var updatedManager = client.Employees.OfType<TypedProxy.Manager>().Where(m => m.Id == 2).Single();

            expectedValueOfNullableInt = 1;
            actualValueOfNullableInt = updatedManager.Level;
            Assert.True(expectedValueOfNullableInt == actualValueOfNullableInt,
                string.Format("The manager's Level should not be changed, expected: {0}, actual: {1}", expectedValueOfNullableInt, actualValueOfNullableInt));
            TypedProxy.Gender? gender = manager.Gender;
            Assert.True(manager.Gender == null,
                string.Format("The manager's gender is updated to null, but actually it is {0})", manager.Gender));

            actualValueOfInt = manager.PhoneNumbers.Count();
            expectedValueOfInt = 4;
            Assert.True(expectedValueOfInt == actualValueOfInt,
                string.Format("Manager PhoneNumbers count is in-correct, expected: {0}, actual: {1}", expectedValueOfInt, actualValueOfInt));
        }
Example #2
0
        public async Task PutEntityWithOpenComplexTypeClientTest()
        {
            foreach (string routing in Routings)
            {
                await ResetDatasource();

                Uri serviceUrl = new Uri(string.Format(this.BaseAddress + "/{0}/", routing));
                var client = new TypedProxy.Container(serviceUrl);

                client.MergeOption = Microsoft.OData.Client.MergeOption.OverwriteChanges;
                client.Format.UseJson();

                var account = client.Accounts.Where(a => a.Id == 1).Single();
                Assert.NotNull(account);

                account.AccountInfo.NickName = "NewNickName";
                account.AccountInfo.Age = 11;

                account.AccountInfo.Gender = WebStack.QA.Test.OData.OpenType.Typed.Client.Gender.Male;

                account.AccountInfo.Subs = new Collection<string>() { "1", "2", "3" };

                account.Address.Country = "United States";
                account.Tags.Tag1 = "New Value";

                account.OwnerAlias = "saxu";
                account.ShipAddresses = new List<TypedProxy.Address>();
                account.OwnerGender = TypedProxy.Gender.Male;
                account.Emails = new List<string>() { "*****@*****.**", "*****@*****.**" };
                account.LuckyNumbers = new List<int>() { 4 };

                client.UpdateObject(account);
                client.SaveChanges(Microsoft.OData.Client.SaveChangesOptions.ReplaceOnUpdate);

                var updatedAccount = client.Accounts.Where(a => a.Id == 1).Single();
                Assert.NotNull(updatedAccount);

                var updatedAccountInfo = updatedAccount.AccountInfo;
                Assert.NotNull(updatedAccountInfo);
                Assert.Equal("NewNickName", updatedAccountInfo.NickName);
                Assert.Equal(11, updatedAccountInfo.Age);
                Assert.Equal(3, updatedAccountInfo.Subs.Count);

                // Defect 2371564 odata.type is missed in client payload for dynamic enum type
                //Assert.Equal(WebStack.QA.Test.OData.OpenType.Typed.Client.Gender.Male, updatedAccountInfo.Gender);

                var updatedAddress = updatedAccount.Address;
                Assert.NotNull(updatedAddress);
                Assert.Equal("United States", updatedAddress.Country);

                Assert.Equal("New Value", updatedAccount.Tags.Tag1);

                Assert.Equal("saxu", updatedAccount.OwnerAlias);
                Assert.Equal(0, updatedAccount.ShipAddresses.Count);
                Assert.Equal(1, updatedAccount.LuckyNumbers.Count);
                Assert.Equal(2, updatedAccount.Emails.Count);
                Assert.NotNull(updatedAccount.Emails.SingleOrDefault(e => e == "*****@*****.**"));
                // Defect 2371564 odata.type is missed in client payload for dynamic enum type
                //Assert.Equal(WebStack.QA.Test.OData.OpenType.Typed.Client.Gender.Male, updatedAccountInfo.Gender);
                //Assert.Equal(TypedProxy.Gender.Male, updatedAccount.OwnerGender);
            }
        }
Example #3
0
        // PUT ~/Employees(1)/Namespace.Manager
        public async Task ReplaceDerivedEntityType()
        {
            await ResetDatasource();

            Uri serviceUrl = new Uri(this.BaseAddress + "/convention/");
            var client = new TypedProxy.Container(serviceUrl);
            client.MergeOption = MergeOption.OverwriteChanges;
            client.Format.UseJson();

            var employees = client.Employees.OfType<TypedProxy.Manager>().ToList();
            var manager = employees.Where(m => m.Id == 2).Single();

            manager.Level = 3;
            manager.Gender = TypedProxy.Gender.Male;
            manager.PhoneNumbers = new List<string>() { "8621-9999-8888", "2345", "4567" };
            client.UpdateObject(manager);
            client.SaveChanges(SaveChangesOptions.ReplaceOnUpdate);

            var managers = client.Employees.OfType<TypedProxy.Manager>().ToList();
            var updatedManager = managers.Where(m => m.Id == 2).Single();

            expectedValueOfNullableInt = 3;
            actualValueOfNullableInt = updatedManager.Level;
            Assert.True(expectedValueOfNullableInt == actualValueOfNullableInt,
                string.Format("Manager Level is in-correct, expected: {0}, actual: {1}", expectedValueOfNullableInt, actualValueOfNullableInt));
            TypedProxy.Gender? gender = manager.Gender;
            Assert.Equal(TypedProxy.Gender.Male, gender);

            actualValueOfInt = manager.PhoneNumbers.Count();
            expectedValueOfInt = 3;
            Assert.True(expectedValueOfInt == actualValueOfInt,
                string.Format("Manager PhoneNumbers count is in-correct, expected: {0}, actual: {1}", expectedValueOfInt, actualValueOfInt));
        }