public void UpdateRootVersionWithDescendantTest()
        {
            Key         orderKey;
            VersionInfo orderVersion;
            Key         orderItemKey;
            VersionInfo orderItemVersion;

            using (var session = Domain.OpenSession()) {
                using (var transactionScope = session.OpenTransaction()) {
                    var order = new AdvancedOrder()
                    {
                        Number = 1, CustomerName = "Customer1"
                    };
                    var orderItem = new AdvancedOrderItem()
                    {
                        Product = "Product", Quantity = 10, Order = order, SupplierName = "Supplier1"
                    };
                    orderKey         = order.Key;
                    orderVersion     = order.VersionInfo;
                    orderItemKey     = orderItem.Key;
                    orderItemVersion = orderItem.VersionInfo;
                    transactionScope.Complete();
                }
            }
            using (var session = Domain.OpenSession()) {
                using (var transactionScope = session.OpenTransaction()) {
                    var order     = session.Query.Single <Order>(orderKey);
                    var orderItem = session.Query.Single <AdvancedOrderItem>(orderItemKey);
                    Assert.IsTrue(orderVersion == order.VersionInfo);
                    Assert.IsTrue(orderItemVersion == orderItem.VersionInfo);
                    orderItem.SupplierName = "Supplier2";
                    Assert.IsFalse(orderVersion == order.VersionInfo);
                    Assert.IsFalse(orderItemVersion == orderItem.VersionInfo);
                    transactionScope.Complete();
                }
            }
        }
            public void TestAdvancedOrderForm()
            {
                string jsonRpcCallId = "jsonrpc id 19347819";
                Messaging.SendFormRequest request = new Messaging.SendFormRequest ();
                request.Member = "*****@*****.**";
                request.ParentKey = null;
                request.Flags = 0;
                request.AlertFlags = 0;
                request.Branding = "A68EBEAB5C962B271BD236AAE6595E5C353B56A650F98B760026CAFA094DB8D1";
                request.Text = "Select the books you wish to order.";
                request.Tag = "my message tag19347819";
                request.Context = null;
                AdvancedOrderWidget widget = new AdvancedOrderWidget ();
                widget.Currency = "$";
                AdvancedOrderCategory category1 = new AdvancedOrderCategory ();
                category1.Id = "romance";
                category1.Name = "Romance";
                AdvancedOrderItem item11 = new AdvancedOrderItem ();
                item11.Id = "1";
                item11.Name = "Fifty Shades of Grey";
                item11.Description = "by E.L. James";
                item11.Value = 0;
                item11.Unit = "pc.";
                item11.UnitPrice = 999;
                item11.Step = 1;
                item11.StepUnit = "pc.";
                item11.StepUnitConversion = 1;
                item11.ImageUrl = "https://d2arxad8u2l0g7.cloudfront.net/books/1385207843l/10818853.jpg";
                item11.HasPrice = true;
                category1.Items.Add (item11);
                widget.Categories.Add (category1);
                AdvancedOrderCategory category2 = new AdvancedOrderCategory ();
                category2.Id = "horror";
                category2.Name = "Horror";
                AdvancedOrderItem item21 = new AdvancedOrderItem ();
                item21.Id = "2";
                item21.Name = "'Salem's Lot";
                item21.Description = "by Stephen King";
                item21.Value = 0;
                item21.Unit = "pc.";
                item21.UnitPrice = 799;
                item21.Step = 1;
                item21.StepUnit = "pc.";
                item21.StepUnitConversion = 1;
                item21.ImageUrl = "https://d2arxad8u2l0g7.cloudfront.net/books/1327891565l/11590.jpg";
                item21.HasPrice = true;
                category2.Items.Add (item21);
                widget.Categories.Add (category2);
                AdvancedOrderCategory category3 = new AdvancedOrderCategory ();
                category3.Id = "whodunit";
                category3.Name = "Whodunit";
                AdvancedOrderItem item31 = new AdvancedOrderItem ();
                item31.Id = "3";
                item31.Name = "Mirror Deep";
                item31.Description = "by Joss Landry";
                item31.Value = 0;
                item31.Unit = "pc.";
                item31.UnitPrice = 899;
                item31.Step = 1;
                item31.StepUnit = "pc.";
                item31.StepUnitConversion = 1;
                item31.ImageUrl = "https://d2arxad8u2l0g7.cloudfront.net/books/1368021554l/17901969.jpg";
                item31.HasPrice = true;
                category3.Items.Add (item31);
                widget.Categories.Add (category3);

                request.Form.Widget = widget;
                request.Form.PositiveButtonCaption = "Order";
                request.Form.NegativeButtonCaption = "Cancel";
                request.Form.NegativeButtonConfirmation = "Are you sure you wish to cancel?";
                Messaging.SendFormResponse response = this.Api.Send (request, jsonRpcCallId);
                Assert.IsNotNull (response.Result);
            }