public void If_Fetch_returns_X_items_and_then_DataSource_removes_one_and_adds_two_Count_should_be_X_plus_1()
        {
            var context = GetContext();

            var provider = new Csla.Xaml.CslaDataProvider();

            provider.ManageObjectLifetime = true;
            CustomerList.GetCustomerList((o1, e1) =>
            {
                Csla.ApplicationContext.GlobalContext.Clear();
                var custs = e1.Object;
                int count = custs.Count;
                provider.ObjectInstance = custs;
                provider.RemoveItem(null, new Csla.Xaml.ExecuteEventArgs {
                    MethodParameter = custs[0]
                });
                provider.AddNewItem();
                provider.AddNewItem();
                context.Assert.AreEqual(count - 1 + 2, custs.Count);
                context.Assert.Success();
            });
            var tmp = provider.Data;

            context.Complete();
        }
        public void ProviderCancelAfterSuccessfulSave()
        {
            var context = GetContext();

            var provider = new Csla.Xaml.CslaDataProvider();

            provider.ManageObjectLifetime = true;
            CustomerList.GetCustomerList((o1, e1) =>
            {
                Csla.ApplicationContext.GlobalContext.Clear();
                var custs = e1.Object;
                int count = custs.Count;
                provider.ManageObjectLifetime = true;
                provider.ObjectInstance       = custs;
                provider.RemoveItem(null, new Csla.Xaml.ExecuteEventArgs {
                    MethodParameter = custs[0]
                });
                bool continueTest     = true;
                provider.DataChanged += (o3, e3) =>
                {
                    if (continueTest)
                    {
                        continueTest           = false;
                        CustomerList savedList = provider.Data as CustomerList;
                        context.Assert.AreEqual(count - 1, savedList.Count);
                        context.Assert.Success();
                    }
                };
                provider.Save();
            });
            var tmp = provider.Data;

            context.Complete();
        }
 public void TestCslaDataProviderSave()
 {
     using (var context = GetContext())
     {
         context.SetTimeout(TimeSpan.FromSeconds(30));
         var provider = new Csla.Xaml.CslaDataProvider();
         Customer.GetCustomer((o1, e1) =>
         {
             Csla.ApplicationContext.GlobalContext.Clear();
             var cust                  = e1.Object;
             int custID                = cust.Id;
             string custName           = cust.Name;
             provider.ObjectInstance   = cust;
             cust.Name                 = "new test name";
             provider.PropertyChanged += (o2, e2) =>
             {
                 if (e2.PropertyName == "Data")
                 {
                     context.Assert.AreEqual("Updating Customer new test name", ((Customer)provider.Data).Method);
                     context.Assert.Success();
                 }
                 else if (e2.PropertyName == "Error")
                 {
                     context.Assert.Fail(provider.Error);
                 }
             };
             provider.Save();
         });
         var tmp = provider.Data;
         context.Complete();
     }
 }
        public void TestCslaDataProviderSavedEventTestWithInvalidException()
        {
            var context = GetContext();

            var provider = new Csla.Xaml.CslaDataProvider();

            Customer.GetCustomer((o1, e1) =>
            {
                Csla.ApplicationContext.GlobalContext.Clear();
                var cust                = e1.Object;
                cust.Id                 = 0;
                int custID              = cust.Id;
                string custName         = cust.Name;
                provider.ObjectInstance = cust;
                provider.Saved         += (o2, e2) =>
                {
                    context.Assert.IsNotNull(e2.Error);
                    context.Assert.Success();
                };
                provider.Save();
            });
            var tmp = provider.Data;

            context.Complete();
        }
        public void TestCslaDataProviderSavedEventTestWithChanges()
        {
            var context = GetContext();

            var provider = new Csla.Xaml.CslaDataProvider();

            Customer.GetCustomer((o1, e1) =>
            {
                Csla.ApplicationContext.GlobalContext.Clear();
                var cust                = e1.Object;
                int custID              = cust.Id;
                string custName         = cust.Name;
                provider.ObjectInstance = cust;
                cust.Name               = "new test name";
                provider.Saved         += (o2, e2) =>
                {
                    context.Assert.AreEqual("Updating Customer new test name", ((Customer)provider.Data).Method);
                    context.Assert.Success();
                };
                provider.Save();
            });
            var tmp = provider.Data;

            context.Complete();
        }
 public void TestAddNew()
 {
     Csla.Test.Basic.RootList list = new Csla.Test.Basic.RootList();
       Csla.Xaml.CslaDataProvider dp = new Csla.Xaml.CslaDataProvider();
       dp.ObjectInstance = list;
       RootListChild child = dp.AddNew() as RootListChild;
       Assert.IsNotNull(child);
 }
 public void TestAddNewReturnsNull()
 {
     Csla.Test.Basic.Root item = Csla.Test.Basic.Root.NewRoot();
       Csla.Xaml.CslaDataProvider dp = new Csla.Xaml.CslaDataProvider();
       dp.ObjectInstance = item;
       object child = dp.AddNew();
       Assert.IsNull(child);
 }
        public void TestAddNew()
        {
            Csla.Test.Basic.RootList   list = new Csla.Test.Basic.RootList();
            Csla.Xaml.CslaDataProvider dp   = new Csla.Xaml.CslaDataProvider();
            dp.ObjectInstance = list;
            RootListChild child = dp.AddNew() as RootListChild;

            Assert.IsNotNull(child);
        }
        public void TestAddNewReturnsNull()
        {
            Csla.Test.Basic.Root       item = Csla.Test.Basic.Root.NewRoot();
            Csla.Xaml.CslaDataProvider dp   = new Csla.Xaml.CslaDataProvider();
            dp.ObjectInstance = item;
            object child = dp.AddNew();

            Assert.IsNull(child);
        }
        public void TestCslaDataProviderCanOperationsObjectLevel()
        {
            var context = GetContext();

            var provider = new Csla.Xaml.CslaDataProvider();

            Customer.GetCustomer((o1, e1) =>
            {
                Csla.ApplicationContext.GlobalContext.Clear();
                var cust        = e1.Object;
                int custID      = cust.Id;
                string custName = cust.Name;


                context.Assert.AreEqual(provider.CanEditObject, false);
                context.Assert.AreEqual(provider.CanGetObject, false);
                context.Assert.AreEqual(provider.CanDeleteObject, false);
                context.Assert.AreEqual(provider.CanCreateObject, false);

                System.Collections.Generic.List <string> list = new System.Collections.Generic.List <string>();

                provider.PropertyChanged += (o3, e3) =>
                {
                    list.Add(e3.PropertyName);
                };
                context.Completed += (o5, e5) =>
                {
                    bool success = list.Contains("CanDeleteObject") &&
                                   list.Contains("CanDeleteObject") &&
                                   list.Contains("CanDeleteObject") &&
                                   list.Contains("CanDeleteObject");
                    context.Assert.IsTrue(success);
                };
                provider.ObjectInstance = cust;

                context.Assert.AreEqual(provider.CanEditObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.EditObject, cust));
                context.Assert.AreEqual(provider.CanGetObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.GetObject, cust));
                context.Assert.AreEqual(provider.CanDeleteObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.DeleteObject, cust));
                context.Assert.AreEqual(provider.CanCreateObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.CreateObject, cust));

                context.Assert.AreEqual(provider.CanEditObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.EditObject, typeof(Customer)));
                context.Assert.AreEqual(provider.CanGetObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.GetObject, typeof(Customer)));
                context.Assert.AreEqual(provider.CanDeleteObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.DeleteObject, typeof(Customer)));
                context.Assert.AreEqual(provider.CanCreateObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.CreateObject, typeof(Customer)));
                context.Assert.Success();
            });
            var tmp = provider.Data;

            context.Complete();
        }
        public void TestCancelError()
        {
            ProviderList list = ProviderList.GetList();
              Csla.Xaml.CslaDataProvider dp = new Csla.Xaml.CslaDataProvider();
              list.BeginEdit();
              dp.ManageObjectLifetime = true;
              dp.ObjectInstance = list;
              dp.RemoveItem(null, new Xaml.ExecuteEventArgs { MethodParameter = list[0] });
              dp.Save();

              Assert.AreEqual(1, list.Count);

              dp.Cancel();
              Assert.AreEqual(2, list.Count);
        }
 public void TestSavedWithChanges()
 {
   Customer item = Customer.GetCustomer(1);
   Csla.Xaml.CslaDataProvider dp = new Csla.Xaml.CslaDataProvider();
   dp.ObjectInstance = item;
   item.Name = "New Name";
   bool saved = false;
   dp.Saved += (o, e) =>
     {
       Assert.IsNull(e.Error,"Error should be null");
       Assert.IsNotNull(e.NewObject, "Object should exist");
       Assert.AreEqual(((Customer)e.NewObject).Method, "Updating Customer New Name");
       saved = true;
     };
   dp.Save();
   Assert.IsTrue(saved);
 }
        public void TestSavedWithoutChanges()
        {
            Customer item = Customer.GetCustomer(1);

            Csla.Xaml.CslaDataProvider dp = new Csla.Xaml.CslaDataProvider();
            dp.ObjectInstance = item;
            bool saved = false;

            dp.Saved += (o, e) =>
            {
                Assert.IsNull(e.Error, "Error should be null");
                Assert.IsNotNull(e.NewObject, "Object should exist");
                saved = true;
            };
            dp.Save();
            Assert.IsTrue(saved);
        }
        public void TestCancelError()
        {
            ProviderList list = ProviderList.GetList();

            Csla.Xaml.CslaDataProvider dp = new Csla.Xaml.CslaDataProvider();
            list.BeginEdit();
            dp.ManageObjectLifetime = true;
            dp.ObjectInstance       = list;
            dp.RemoveItem(null, new Xaml.ExecuteEventArgs {
                MethodParameter = list[0]
            });
            dp.Save();

            Assert.AreEqual(1, list.Count);

            dp.Cancel();
            Assert.AreEqual(2, list.Count);
        }
        public void TestSavedWithChangesInvalid()
        {
            Customer item = Customer.GetCustomer(1);

            Csla.Xaml.CslaDataProvider dp = new Csla.Xaml.CslaDataProvider();
            dp.ObjectInstance = item;
            item.Name         = "New Name";
            item.Id           = 0;
            bool saved = false;

            dp.Saved += (o, e) =>
            {
                Assert.IsNotNull(e.Error, "Error should be null");
                saved = true;
            };
            dp.Save();
            Assert.IsTrue(saved);
        }
        public void IF_BO_Throws_on_Fetch_Error_Is_Set()
        {
            var context = GetContext();

            var provider = new Csla.Xaml.CslaDataProvider();

            provider.DataChanged += (o1, e1) =>
            {
                context.Assert.IsNotNull(provider.Error);
                context.Assert.Success();
            };
            provider.IsInitialLoadEnabled = true;
            provider.ManageObjectLifetime = true;
            provider.FactoryMethod        = "GetCustomerWithException";
            provider.ObjectType           = typeof(Customer).AssemblyQualifiedName;//"cslalighttest.CslaDataProvider.Customer, Csla.Testing.Business, Version=..., Culture=neutral, PublicKeyToken=null";
            var tmp = provider.Data;

            context.Complete();
        }
        public void TestSavedWithChanges()
        {
            Customer item = Customer.GetCustomer(1);

            Csla.Xaml.CslaDataProvider dp = new Csla.Xaml.CslaDataProvider();
            dp.ObjectInstance = item;
            item.Name         = "New Name";
            bool saved = false;

            dp.Saved += (o, e) =>
            {
                Assert.IsNull(e.Error, "Error should be null");
                Assert.IsNotNull(e.NewObject, "Object should exist");
                Assert.AreEqual(((Customer)e.NewObject).Method, "Updating Customer New Name");
                saved = true;
            };
            dp.Save();
            Assert.IsTrue(saved);
        }
        public void Create_call_on_BO_that_does_not_implement_DP_Create_returns_no_Exception_info_in_Error_property()
        {
            var context = GetContext();

            var provider = new Csla.Xaml.CslaDataProvider();

            provider.DataChanged += (o1, e1) =>
            {
                context.Assert.IsNull(provider.Error);
                context.Assert.Success();
            };
            provider.IsInitialLoadEnabled = true;
            provider.ManageObjectLifetime = true;
            provider.FactoryMethod        = "CreateCustomer";
            provider.ObjectType           = typeof(CustomerWO_DP_XYZ).AssemblyQualifiedName;//"cslalighttest.CslaDataProvider.CustomerWO_DP_XYZ, Csla.Testing.Business, Version=..., Culture=neutral, PublicKeyToken=null";
            var tmp = provider.Data;

            context.Complete();
        }
        public void ProviderCancelAfterExceptionInSave()
        {
            var context = GetContext();

            var provider = new Csla.Xaml.CslaDataProvider();

            provider.ManageObjectLifetime = true;
            CustomerWithErrorList.GetCustomerWithErrorList((o1, e1) =>
            {
                Csla.ApplicationContext.GlobalContext.Clear();
                var custs = e1.Object;
                int count = custs.Count;
                provider.ObjectInstance = custs;
                provider.RemoveItem(null, new Csla.Xaml.ExecuteEventArgs {
                    MethodParameter = custs[0]
                });


                provider.DataChanged += (o4, e4) =>
                {
                    if (provider.Data != null)
                    {
                        CustomerWithErrorList savedList = provider.Data as CustomerWithErrorList;
                        context.Assert.AreEqual(count, savedList.Count);
                        context.Assert.Success();
                    }
                };

                provider.PropertyChanged += (o3, e3) =>
                {
                    if (e3.PropertyName == "Error")
                    {
                        provider.Cancel();
                    }
                };
                provider.Save();
            });
            var tmp = provider.Data;

            context.Complete();
        }
        public void TestCslaDataProviderRebind()
        {
            var context = GetContext();

            var provider = new Csla.Xaml.CslaDataProvider();

            Customer.GetCustomer((o1, e1) =>
            {
                Csla.ApplicationContext.GlobalContext.Clear();
                var cust                = e1.Object;
                int custID              = cust.Id;
                string custName         = cust.Name;
                provider.ObjectInstance = cust;
                bool changedToNull      = false;
                bool changedToData      = false;

                provider.DataChanged += (o2, e2) =>
                {
                    if (provider.Data == null)
                    {
                        changedToNull = true;
                    }

                    if (provider.Data == cust)
                    {
                        changedToData = true;
                    }

                    if (changedToNull && changedToData)
                    {
                        context.Assert.IsTrue(true);
                        context.Assert.Success();
                    }
                };
                provider.Rebind();
            });
            var tmp = provider.Data;

            context.Complete();
        }
        public void Cancel_reverts_property_values_on_bound_BO_back_to_the_original_values()
        {
            var context = GetContext();

            var provider = new Csla.Xaml.CslaDataProvider();

            Customer.GetCustomer((o1, e1) =>
            {
                var cust                = e1.Object;
                int custID              = cust.Id;
                string custName         = cust.Name;
                provider.ObjectInstance = cust;
                cust.Name               = "new test name";
                provider.Cancel();
                context.Assert.AreEqual(custID, ((Customer)provider.Data).Id);
                context.Assert.AreEqual(custName, ((Customer)provider.Data).Name);
                context.Assert.Success();
            });
            var tmp = provider.Data;

            context.Complete();
        }
    public void When_Fetch_with_no_parameters_loads_Customer_with_random_id_between_1_and_10_DataSource_receives_that_record()
    {
      var context = GetContext();

      var provider = new Csla.Xaml.CslaDataProvider();
      provider.PropertyChanged += (o1, e1) =>
      {
        if (e1.PropertyName == "Data")
        {
          var customer = (Customer)provider.Data;
          context.Assert.AreEqual(true, customer.Id > 0 && customer.Id < 11);
          context.Assert.Success();
        }
      };
      provider.IsInitialLoadEnabled = true;
      provider.ManageObjectLifetime = true;
      provider.FactoryMethod = "GetCustomer";
      provider.ObjectType = typeof(Customer).AssemblyQualifiedName;//"cslalighttest.CslaDataProvider.Customer, Csla.Testing.Business, Version=..., Culture=neutral, PublicKeyToken=null";
      var tmp = provider.Data;

      context.Complete();
    }
        public void TestCslaDataProviderCancelShouldBeBusy()
        {
            var context = GetContext();

            var provider = new Csla.Xaml.CslaDataProvider();

            Customer.GetCustomer((o1, e1) =>
            {
                Csla.ApplicationContext.GlobalContext.Clear();
                var cust           = e1.Object;
                bool wasBusy       = false;
                bool wasNotBusy    = false;
                context.Completed += (o5, e5) =>
                {
                    context.Assert.IsTrue(wasBusy);
                    context.Assert.IsTrue(wasNotBusy);
                };
                provider.ObjectInstance = cust;
                cust.Name = "blah";
                provider.PropertyChanged += (o3, e3) =>
                {
                    if (e3.PropertyName == "IsBusy" && provider.IsBusy)
                    {
                        wasBusy = true;
                    }
                    if (e3.PropertyName == "IsNotBusy" && provider.IsNotBusy && wasBusy)
                    {
                        wasNotBusy = true;
                    }
                };
                provider.ObjectInstance = cust;
                provider.Cancel();
                context.Assert.Success();
            });
            var tmp = provider.Data;

            context.Complete();
        }
        public void When_Fetch_with_no_parameters_loads_Customer_with_random_id_between_1_and_10_DataSource_receives_that_record()
        {
            var context = GetContext();

            var provider = new Csla.Xaml.CslaDataProvider();

            provider.PropertyChanged += (o1, e1) =>
            {
                if (e1.PropertyName == "Data")
                {
                    var customer = (Customer)provider.Data;
                    context.Assert.AreEqual(true, customer.Id > 0 && customer.Id < 11);
                    context.Assert.Success();
                }
            };
            provider.IsInitialLoadEnabled = true;
            provider.ManageObjectLifetime = true;
            provider.FactoryMethod        = "GetCustomer";
            provider.ObjectType           = typeof(Customer).AssemblyQualifiedName;//"cslalighttest.CslaDataProvider.Customer, Csla.Testing.Business, Version=..., Culture=neutral, PublicKeyToken=null";
            var tmp = provider.Data;

            context.Complete();
        }
        public void Refresh_Calls_FactoryMethod_second_time()
        {
            var context          = GetContext();
            int dataLoadedNTimes = 0;
            var provider         = new Csla.Xaml.CslaDataProvider();

            provider.PropertyChanged += (o1, e1) =>
            {
                if (e1.PropertyName == "Data" && ++dataLoadedNTimes == 2)
                {
                    context.Assert.Success();
                }
            };
            provider.IsInitialLoadEnabled = true;
            provider.ManageObjectLifetime = true;
            provider.FactoryMethod        = "GetCustomer";
            provider.ObjectType           = typeof(Customer).AssemblyQualifiedName;//"cslalighttest.CslaDataProvider.Customer, Csla.Testing.Business, Version=..., Culture=neutral, PublicKeyToken=null";
            var tmp = provider.Data;

            //Second call
            provider.Refresh();

            context.Complete();
        }
 public void TestSavedWithChangesInvalid()
 {
     Customer item = Customer.GetCustomer(1);
       Csla.Xaml.CslaDataProvider dp = new Csla.Xaml.CslaDataProvider();
       dp.ObjectInstance = item;
       item.Name = "New Name";
       item.Id = 0;
       bool saved = false;
       dp.Saved += (o, e) =>
       {
     Assert.IsNotNull(e.Error, "Error should be null");
     saved = true;
       };
       dp.Save();
       Assert.IsTrue(saved);
 }
 public void TestSavedWithoutChanges()
 {
     Customer item = Customer.GetCustomer(1);
       Csla.Xaml.CslaDataProvider dp = new Csla.Xaml.CslaDataProvider();
       dp.ObjectInstance = item;
       bool saved = false;
       dp.Saved += (o, e) =>
       {
     Assert.IsNull(e.Error, "Error should be null");
     Assert.IsNotNull(e.NewObject, "Object should exist");
     saved = true;
       };
       dp.Save();
       Assert.IsTrue(saved);
 }
    public void ProviderCancelAfterSuccessfulSave()
    {
      var context = GetContext();

      var provider = new Csla.Xaml.CslaDataProvider();
      provider.ManageObjectLifetime = true;
      CustomerList.GetCustomerList((o1, e1) =>
      {
        Csla.ApplicationContext.GlobalContext.Clear();
        var custs = e1.Object;
        int count = custs.Count;
        provider.ManageObjectLifetime = true;
        provider.ObjectInstance = custs;
        provider.RemoveItem(null, new Csla.Xaml.ExecuteEventArgs { MethodParameter = custs[0] });
        bool continueTest = true;
        provider.DataChanged += (o3, e3) =>
        {
          if (continueTest)
          {
            continueTest = false;
            CustomerList savedList = provider.Data as CustomerList;
            context.Assert.AreEqual(count - 1, savedList.Count);
            context.Assert.Success();
          }

        };
        provider.Save();


      });
      var tmp = provider.Data;
      context.Complete();
    }
    public void ProviderCancelAfterExceptionInSave()
    {
      var context = GetContext();

      var provider = new Csla.Xaml.CslaDataProvider();
      provider.ManageObjectLifetime = true;
      CustomerWithErrorList.GetCustomerWithErrorList((o1, e1) =>
      {
        Csla.ApplicationContext.GlobalContext.Clear();
        var custs = e1.Object;
        int count = custs.Count;
        provider.ObjectInstance = custs;
        provider.RemoveItem(null, new Csla.Xaml.ExecuteEventArgs { MethodParameter = custs[0] });


        provider.DataChanged += (o4, e4) =>
        {
          if (provider.Data != null)
          {
            CustomerWithErrorList savedList = provider.Data as CustomerWithErrorList;
            context.Assert.AreEqual(count, savedList.Count);
            context.Assert.Success();
          }
        };

        provider.PropertyChanged += (o3, e3) =>
          {
            if (e3.PropertyName == "Error")
            {
              provider.Cancel();
            }

          };
        provider.Save();


      });
      var tmp = provider.Data;
      context.Complete();
    }
    public void TestCslaDataProviderSavedEventTestWithoutChanges()
    {
      var context = GetContext();

      var provider = new Csla.Xaml.CslaDataProvider();
      Customer.GetCustomer((o1, e1) =>
      {
        Csla.ApplicationContext.GlobalContext.Clear();
        var cust = e1.Object;
        int custID = cust.Id;
        string custName = cust.Name;
        provider.ObjectInstance = cust;
        provider.Saved += (o2, e2) =>
        {
          context.Assert.AreEqual(custName, ((Customer)provider.Data).Name);
          context.Assert.Success();

        };
        provider.Save();
      });
      var tmp = provider.Data;
      context.Complete();
    }
    public void TestCslaDataProviderCanOperationsObjectLevel()
    {
      var context = GetContext();

      var provider = new Csla.Xaml.CslaDataProvider();
      Customer.GetCustomer((o1, e1) =>
      {
        Csla.ApplicationContext.GlobalContext.Clear();
        var cust = e1.Object;
        int custID = cust.Id;
        string custName = cust.Name;


        context.Assert.AreEqual(provider.CanEditObject, false);
        context.Assert.AreEqual(provider.CanGetObject, false);
        context.Assert.AreEqual(provider.CanDeleteObject, false);
        context.Assert.AreEqual(provider.CanCreateObject, false);

        System.Collections.Generic.List<string> list = new System.Collections.Generic.List<string>();

        provider.PropertyChanged += (o3, e3) =>
          {
            list.Add(e3.PropertyName);
          };
        context.Completed += (o5, e5) =>
          {
            bool success = list.Contains("CanDeleteObject") &&
                              list.Contains("CanDeleteObject") &&
                              list.Contains("CanDeleteObject") &&
                              list.Contains("CanDeleteObject");
            context.Assert.IsTrue(success);
          };
        provider.ObjectInstance = cust;

        context.Assert.AreEqual(provider.CanEditObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.EditObject, cust));
        context.Assert.AreEqual(provider.CanGetObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.GetObject, cust));
        context.Assert.AreEqual(provider.CanDeleteObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.DeleteObject, cust));
        context.Assert.AreEqual(provider.CanCreateObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.CreateObject, cust));

        context.Assert.AreEqual(provider.CanEditObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.EditObject, typeof(Customer)));
        context.Assert.AreEqual(provider.CanGetObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.GetObject, typeof(Customer)));
        context.Assert.AreEqual(provider.CanDeleteObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.DeleteObject, typeof(Customer)));
        context.Assert.AreEqual(provider.CanCreateObject, Csla.Rules.BusinessRules.HasPermission(Csla.Rules.AuthorizationActions.CreateObject, typeof(Customer)));
        context.Assert.Success();

      });
      var tmp = provider.Data;
      context.Complete();
    }
    public void Create_call_on_BO_that_does_not_implement_DP_Create_returns_no_Exception_info_in_Error_property()
    {
      var context = GetContext();

      var provider = new Csla.Xaml.CslaDataProvider();
      provider.DataChanged += (o1, e1) =>
      {
        context.Assert.IsNull(provider.Error);
        context.Assert.Success();
      };
      provider.IsInitialLoadEnabled = true;
      provider.ManageObjectLifetime = true;
      provider.FactoryMethod = "CreateCustomer";
      provider.ObjectType = typeof(CustomerWO_DP_XYZ).AssemblyQualifiedName;//"cslalighttest.CslaDataProvider.CustomerWO_DP_XYZ, Csla.Testing.Business, Version=..., Culture=neutral, PublicKeyToken=null";
      var tmp = provider.Data;

      context.Complete();

    }
    public void Refresh_Calls_FactoryMethod_second_time()
    {
      var context = GetContext();
      int dataLoadedNTimes = 0;
      var provider = new Csla.Xaml.CslaDataProvider();
      provider.PropertyChanged += (o1, e1) =>
      {
        if (e1.PropertyName == "Data" && ++dataLoadedNTimes == 2)
        {
          context.Assert.Success();
        }
      };
      provider.IsInitialLoadEnabled = true;
      provider.ManageObjectLifetime = true;
      provider.FactoryMethod = "GetCustomer";
      provider.ObjectType = typeof(Customer).AssemblyQualifiedName;//"cslalighttest.CslaDataProvider.Customer, Csla.Testing.Business, Version=..., Culture=neutral, PublicKeyToken=null";
      var tmp = provider.Data;

      //Second call
      provider.Refresh();

      context.Complete();

    }
    public void IF_BO_Throws_on_Fetch_Error_Is_Set()
    {
      var context = GetContext();

      var provider = new Csla.Xaml.CslaDataProvider();
      provider.DataChanged += (o1, e1) =>
        {
          context.Assert.IsNotNull(provider.Error);
          context.Assert.Success();
        };
      provider.IsInitialLoadEnabled = true;
      provider.ManageObjectLifetime = true;
      provider.FactoryMethod = "GetCustomerWithException";
      provider.ObjectType = typeof(Customer).AssemblyQualifiedName;//"cslalighttest.CslaDataProvider.Customer, Csla.Testing.Business, Version=..., Culture=neutral, PublicKeyToken=null";
      var tmp = provider.Data;

      context.Complete();

    }
    public void If_Fetch_returns_X_items_and_then_DataSource_removes_one_and_adds_two_Count_should_be_X_plus_1()
    {
      var context = GetContext();

      var provider = new Csla.Xaml.CslaDataProvider();
      provider.ManageObjectLifetime = true;
      CustomerList.GetCustomerList((o1, e1) =>
      {
        Csla.ApplicationContext.GlobalContext.Clear();
        var custs = e1.Object;
        int count = custs.Count;
        provider.ObjectInstance = custs;
        provider.RemoveItem(null, new Csla.Xaml.ExecuteEventArgs { MethodParameter = custs[0] });
        provider.AddNewItem();
        provider.AddNewItem();
        context.Assert.AreEqual(count - 1 + 2, custs.Count);
        context.Assert.Success();

      });
      var tmp = provider.Data;
      context.Complete();
    }
    public void TestCslaDataProviderSavedEventTestWithInvalidException()
    {
      var context = GetContext();

      var provider = new Csla.Xaml.CslaDataProvider();
      Customer.GetCustomer((o1, e1) =>
      {
        Csla.ApplicationContext.GlobalContext.Clear();
        var cust = e1.Object;
        cust.Id = 0;
        int custID = cust.Id;
        string custName = cust.Name;
        provider.ObjectInstance = cust;
        provider.Saved += (o2, e2) =>
        {
          context.Assert.IsNotNull(e2.Error);
          context.Assert.Success();

        };
        provider.Save();
      });
      var tmp = provider.Data;
      context.Complete();
    }
    public void TestCslaDataProviderRebind()
    {
      var context = GetContext();

      var provider = new Csla.Xaml.CslaDataProvider();
      Customer.GetCustomer((o1, e1) =>
      {
        Csla.ApplicationContext.GlobalContext.Clear();
        var cust = e1.Object;
        int custID = cust.Id;
        string custName = cust.Name;
        provider.ObjectInstance = cust;
        bool changedToNull = false;
        bool changedToData = false;

        provider.DataChanged += (o2, e2) =>
        {
          if (provider.Data == null)
            changedToNull = true;

          if (provider.Data == cust)
            changedToData = true;

          if (changedToNull && changedToData)
          {
            context.Assert.IsTrue(true);
            context.Assert.Success();
          }
        };
        provider.Rebind();

      });
      var tmp = provider.Data;
      context.Complete();
    }
    public void TestCslaDataProviderCancelShouldBeBusy()
    {
      var context = GetContext();

      var provider = new Csla.Xaml.CslaDataProvider();
      Customer.GetCustomer((o1, e1) =>
      {
        Csla.ApplicationContext.GlobalContext.Clear();
        var cust = e1.Object;
        bool wasBusy = false;
        bool wasNotBusy = false;
        context.Completed += (o5, e5) =>
        {
          context.Assert.IsTrue(wasBusy);
          context.Assert.IsTrue(wasNotBusy);
        };
        provider.ObjectInstance = cust;
        cust.Name = "blah";
        provider.PropertyChanged += (o3, e3) =>
        {
          if (e3.PropertyName == "IsBusy" && provider.IsBusy)
            wasBusy = true;
          if (e3.PropertyName == "IsNotBusy" && provider.IsNotBusy && wasBusy)
            wasNotBusy = true;
        };
        provider.ObjectInstance = cust;
        provider.Cancel();
        context.Assert.Success();

      });
      var tmp = provider.Data;
      context.Complete();
    }
    public void Cancel_reverts_property_values_on_bound_BO_back_to_the_original_values()
    {
      var context = GetContext();

      var provider = new Csla.Xaml.CslaDataProvider();
      Customer.GetCustomer((o1, e1) =>
      {
        var cust = e1.Object;
        int custID = cust.Id;
        string custName = cust.Name;
        provider.ObjectInstance = cust;
        cust.Name = "new test name";
        provider.Cancel();
        context.Assert.AreEqual(custID, ((Customer)provider.Data).Id);
        context.Assert.AreEqual(custName, ((Customer)provider.Data).Name);
        context.Assert.Success();
      });
      var tmp = provider.Data;
      context.Complete();
    }
 public void TestCslaDataProviderSave()
 {
   using (var context = GetContext())
   {
     context.SetTimeout(TimeSpan.FromSeconds(30));
     var provider = new Csla.Xaml.CslaDataProvider();
     Customer.GetCustomer((o1, e1) =>
     {
       Csla.ApplicationContext.GlobalContext.Clear();
       var cust = e1.Object;
       int custID = cust.Id;
       string custName = cust.Name;
       provider.ObjectInstance = cust;
       cust.Name = "new test name";
       provider.PropertyChanged += (o2, e2) =>
       {
         if (e2.PropertyName == "Data")
         {
           context.Assert.AreEqual("Updating Customer new test name", ((Customer)provider.Data).Method);
           context.Assert.Success();
         }
         else if (e2.PropertyName == "Error")
         {
           context.Assert.Fail(provider.Error);
         }
       };
       provider.Save();
     });
     var tmp = provider.Data;
     context.Complete();
   }
 }