Exemplo n.º 1
0
 public void SubTransactionCanContinueToBeUsedAfterRollback()
 {
     _subTransaction.Rollback();
     Assert.That(_subTransaction.IsDiscarded, Is.False);
     using (_subTransaction.EnterDiscardingScope())
     {
         Order order = Order.NewObject();
         Assert.That(order, Is.Not.Null);
     }
 }
Exemplo n.º 2
0
        public void GetObjects_UnloadedObjects_Events()
        {
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                var listenerMock = MockRepository.GenerateMock <IClientTransactionListener> ();
                PrivateInvoke.InvokeNonPublicMethod(subTransaction, "AddListener", listenerMock);

                var            eventReceiver = new ClientTransactionEventReceiver(subTransaction);
                DomainObject[] objects       = LifetimeService.GetObjects <DomainObject> (
                    subTransaction,
                    DomainObjectIDs.Order1,
                    DomainObjectIDs.Order3,
                    DomainObjectIDs.OrderItem1);

                Assert.That(eventReceiver.LoadedDomainObjectLists.Count, Is.EqualTo(1));
                Assert.That(eventReceiver.LoadedDomainObjectLists[0], Is.EqualTo(objects));

                listenerMock.AssertWasCalled(mock => mock.ObjectsLoading(
                                                 Arg.Is(subTransaction),
                                                 Arg <ReadOnlyCollection <ObjectID> > .List.Equal(new[] { DomainObjectIDs.Order1, DomainObjectIDs.Order3, DomainObjectIDs.OrderItem1 })));

                listenerMock.AssertWasCalled(mock => mock.ObjectsLoaded(
                                                 Arg.Is(subTransaction),
                                                 Arg <ReadOnlyCollection <DomainObject> > .List.Equal(objects)));
            }
        }
Exemplo n.º 3
0
        public void SubTransaction_CanBeUsedToCreateAndLoadNewObjects()
        {
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                Assert.That(ClientTransactionScope.CurrentTransaction, Is.SameAs(subTransaction));
                Order order = Order.NewObject();
                Assert.That(subTransaction.IsEnlisted(order), Is.True);
                Assert.That(TestableClientTransaction.IsEnlisted(order), Is.True);

                order.OrderNumber = 4711;
                Assert.That(order.OrderNumber, Is.EqualTo(4711));

                OrderItem item = OrderItem.NewObject();
                order.OrderItems.Add(item);
                Assert.That(order.OrderItems.Contains(item.ID), Is.True);

                Ceo ceo = DomainObjectIDs.Ceo1.GetObject <Ceo> ();
                Assert.That(ceo, Is.Not.Null);
                Assert.That(subTransaction.IsEnlisted(ceo), Is.True);
                Assert.That(TestableClientTransaction.IsEnlisted(ceo), Is.True);

                Assert.That(DomainObjectIDs.Company1.GetObject <Company> (), Is.SameAs(ceo.Company));
            }
        }
Exemplo n.º 4
0
        protected void ReInitializeTransaction()
        {
            DisposeTransaction();

            _testableClientTransaction = ClientTransaction.CreateRootTransaction();
            _testableClientTransaction.EnterDiscardingScope();
        }
        public void ConcurrentDeleteWithoutForeignKey()
        {
            ClientTransaction clientTransaction1 = ClientTransaction.CreateRootTransaction();
            ClientTransaction clientTransaction2 = ClientTransaction.CreateRootTransaction();

            DataContainer         changedDataContainer;
            ClassWithAllDataTypes changedObject;

            using (clientTransaction1.EnterDiscardingScope())
            {
                changedObject                = DomainObjectIDs.ClassWithAllDataTypes1.GetObject <ClassWithAllDataTypes> ();
                changedDataContainer         = changedObject.InternalDataContainer;
                changedObject.StringProperty = "New text";
            }

            DataContainer         deletedDataContainer;
            ClassWithAllDataTypes deletedObject;

            using (clientTransaction2.EnterDiscardingScope())
            {
                deletedObject        = DomainObjectIDs.ClassWithAllDataTypes1.GetObject <ClassWithAllDataTypes> ();
                deletedDataContainer = deletedObject.InternalDataContainer;
                deletedObject.Delete();
            }

            Provider.Connect();
            Provider.Save(new[] { changedDataContainer });
            Provider.Save(new[] { deletedDataContainer });
        }
Exemplo n.º 6
0
        public void GetObjects_LoadedObjects_Events()
        {
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                var eventReceiver = new ClientTransactionEventReceiver(subTransaction);
                DomainObjectIDs.Order1.GetObject <Order> ();
                DomainObjectIDs.Order3.GetObject <Order> ();
                DomainObjectIDs.OrderItem1.GetObject <OrderItem>();

                eventReceiver.Clear();

                var listenerMock = MockRepository.GenerateMock <IClientTransactionListener> ();
                PrivateInvoke.InvokeNonPublicMethod(subTransaction, "AddListener", listenerMock);

                LifetimeService.GetObjects <DomainObject> (subTransaction, DomainObjectIDs.Order1, DomainObjectIDs.Order3, DomainObjectIDs.OrderItem1);
                Assert.That(eventReceiver.LoadedDomainObjectLists, Is.Empty);

                listenerMock.AssertWasNotCalled(mock => mock.ObjectsLoading(
                                                    Arg <ClientTransaction> .Is.Anything,
                                                    Arg <ReadOnlyCollection <ObjectID> > .Is.Anything));
                listenerMock.AssertWasNotCalled(mock => mock.ObjectsLoaded(
                                                    Arg <ClientTransaction> .Is.Anything,
                                                    Arg <ReadOnlyCollection <DomainObject> > .Is.Anything));
            }
        }
        public void ConcurrentDeleteWithForeignKey()
        {
            ClientTransaction clientTransaction1 = ClientTransaction.CreateRootTransaction();
            ClientTransaction clientTransaction2 = ClientTransaction.CreateRootTransaction();

            OrderTicket   changedOrderTicket;
            DataContainer changedDataContainer;

            using (clientTransaction1.EnterDiscardingScope())
            {
                changedOrderTicket          = DomainObjectIDs.OrderTicket1.GetObject <OrderTicket> ();
                changedOrderTicket.FileName = @"C:\NewFile.jpg";
                changedDataContainer        = changedOrderTicket.InternalDataContainer;
            }

            OrderTicket   deletedOrderTicket;
            DataContainer deletedDataContainer;

            using (clientTransaction2.EnterDiscardingScope())
            {
                deletedOrderTicket = DomainObjectIDs.OrderTicket1.GetObject <OrderTicket> ();
                deletedOrderTicket.Delete();
                deletedDataContainer = deletedOrderTicket.InternalDataContainer;
            }

            Provider.Connect();
            Provider.Save(new[] { changedDataContainer });
            Provider.Save(new[] { deletedDataContainer });
        }
        public override void SetUp()
        {
            base.SetUp();

            _subTransaction = TestableClientTransaction.CreateSubTransaction();
            _subTransaction.EnterDiscardingScope();
        }
        private int GetInt32Property(ClientTransaction clientTransaction)
        {
            using (clientTransaction.EnterDiscardingScope())
            {
                SampleObject objectWithAllDataTypes = DomainObjectIDs.ClassWithAllDataTypes1.GetObject <SampleObject> ();

                return(objectWithAllDataTypes.Int32Property);
            }
        }
Exemplo n.º 10
0
        public void GetObjects_InvalidType()
        {
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                LifetimeService.GetObjects <OrderItem> (subTransaction, DomainObjectIDs.Order1);
            }
        }
Exemplo n.º 11
0
        public void GetObjects_NotFound()
        {
            var guid = new Guid("33333333333333333333333333333333");
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                LifetimeService.GetObjects <DomainObject> (subTransaction, new ObjectID(typeof(Order), guid));
            }
        }
Exemplo n.º 12
0
        public override void SetUp()
        {
            base.SetUp();

            _rootTransaction = ClientTransaction.CreateRootTransaction();
            _subTransaction  = _rootTransaction.CreateSubTransaction();
            _subTransaction.EnterDiscardingScope();

            _orderReference = DomainObjectIDs.Order1.GetObjectReference <Order> (_rootTransaction);
        }
Exemplo n.º 13
0
        public void Parent_CannotAccessObject_CreatedInSubTransaction()
        {
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();
            Order             order;

            using (subTransaction.EnterDiscardingScope())
            {
                order = Order.NewObject();
            }
            Dev.Null = order.OrderNumber;
        }
Exemplo n.º 14
0
        public void SubTransaction_CanAccessObject_CreatedInParent()
        {
            Order             order          = Order.NewObject();
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                order.OrderNumber = 5;
                order.OrderTicket = OrderTicket.NewObject();
            }
        }
Exemplo n.º 15
0
        public void Parent_CanReloadObject_LoadedInSubTransaction_AndGetTheSameReference()
        {
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();
            Order             order;

            using (subTransaction.EnterDiscardingScope())
            {
                order = DomainObjectIDs.Order1.GetObject <Order> ();
            }
            Assert.That(DomainObjectIDs.Order1.GetObject <Order> (), Is.SameAs(order));
        }
Exemplo n.º 16
0
        public void Parent_CanAccessObject_LoadedInSubTransaction()
        {
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();
            Order             order;

            using (subTransaction.EnterDiscardingScope())
            {
                order = DomainObjectIDs.Order1.GetObject <Order> ();
            }
            Assert.That(order.OrderNumber, Is.EqualTo(1));
        }
        private void SetInt32Property(int value, ClientTransaction clientTransaction)
        {
            using (clientTransaction.EnterDiscardingScope())
            {
                SampleObject objectWithAllDataTypes = DomainObjectIDs.ClassWithAllDataTypes1.GetObject <SampleObject> ();

                objectWithAllDataTypes.Int32Property = value;

                clientTransaction.Commit();
            }
        }
Exemplo n.º 18
0
        public void DomainObjects_CreatedInSubTransaction_InvalidInParent()
        {
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                Order order = Order.NewObject();
                Assert.That(order.TransactionContext[subTransaction].State, Is.EqualTo(StateType.New));
                Assert.That(order.TransactionContext[TestableClientTransaction].State, Is.EqualTo(StateType.Invalid));
            }
        }
Exemplo n.º 19
0
        public void GetObjects_Invalid_Throws()
        {
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                DomainObjectIDs.ClassWithAllDataTypes1.GetObject <ClassWithAllDataTypes> ().Delete();
                subTransaction.Commit();
                LifetimeService.GetObjects <ClassWithAllDataTypes> (subTransaction, DomainObjectIDs.ClassWithAllDataTypes1);
            }
        }
Exemplo n.º 20
0
        public void DomainObjects_CreatedInSubTransaction_CanBeUsedInParent()
        {
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                Order order = Order.NewObject();
                Assert.That(subTransaction.IsEnlisted(order), Is.True);
                Assert.That(TestableClientTransaction.IsEnlisted(order), Is.True);
            }
        }
Exemplo n.º 21
0
        public void GetObjects_NewObjects()
        {
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                var            expectedObjects = new DomainObject[] { Order.NewObject(), OrderItem.NewObject() };
                DomainObject[] objects         = LifetimeService.GetObjects <DomainObject> (subTransaction, expectedObjects[0].ID, expectedObjects[1].ID);
                Assert.That(objects, Is.EqualTo(expectedObjects));
            }
        }
        public void GetObjectByNewIndependentTransaction()
        {
            ClientTransaction clientTransaction = ClientTransaction.CreateRootTransaction();

            using (clientTransaction.EnterDiscardingScope())
            {
                Order order = DomainObjectIDs.Order1.GetObject <Order> ();

                Assert.That(order.InternalDataContainer.ClientTransaction, Is.SameAs(clientTransaction));
                Assert.That(clientTransaction.IsEnlisted(order), Is.True);
            }
        }
        public void DefaultEnterScope()
        {
            ClientTransactionScope outerScope     = ClientTransactionScope.ActiveScope;
            ClientTransaction      newTransaction = ClientTransaction.CreateRootTransaction();

            using (newTransaction.EnterDiscardingScope())
            {
                Assert.That(ClientTransactionScope.ActiveScope, Is.Not.SameAs(outerScope));
                Assert.That(ClientTransactionScope.CurrentTransaction, Is.SameAs(newTransaction));
                Assert.That(ClientTransactionScope.ActiveScope.AutoRollbackBehavior, Is.EqualTo(AutoRollbackBehavior.Discard));
            }
        }
Exemplo n.º 24
0
        public void SubTransaction_CanAccessObject_LoadedInParent()
        {
            Order             order          = DomainObjectIDs.Order1.GetObject <Order> ();
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                ++order.OrderNumber;
                Dev.Null          = order.OrderTicket;
                order.OrderTicket = OrderTicket.NewObject();
            }
        }
Exemplo n.º 25
0
        public override void SetUp()
        {
            base.SetUp();

            _customer1 = DomainObjectIDs.Customer1.GetObject <Customer> ();

            _secondClientTransaction = ClientTransaction.CreateRootTransaction();
            _secondCollection        = new DomainObjectCollection();
            using (_secondClientTransaction.EnterDiscardingScope())
            {
                _secondCustomer1 = DomainObjectIDs.Customer1.GetObject <Customer> ();
            }
        }
Exemplo n.º 26
0
        public void DomainObjects_CreatedInSubTransaction_CommitMakesValidInParent()
        {
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                var instance = ClassWithAllDataTypes.NewObject();
                Assert.That(instance.TransactionContext[subTransaction].State, Is.EqualTo(StateType.New));
                Assert.That(instance.TransactionContext[TestableClientTransaction].State, Is.EqualTo(StateType.Invalid));
                subTransaction.Commit();
                Assert.That(instance.TransactionContext[TestableClientTransaction].State, Is.EqualTo(StateType.New));
            }
        }
Exemplo n.º 27
0
        public void GetObjects_Deleted()
        {
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                var order = DomainObjectIDs.Order1.GetObject <Order> ();
                order.Delete();

                var result = LifetimeService.GetObjects <Order> (subTransaction, DomainObjectIDs.Order1);

                Assert.That(result[0], Is.SameAs(order));
            }
        }
Exemplo n.º 28
0
        public void GetObjectReference_DeletedInParentTransaction()
        {
            var order1 = DomainObjectIDs.Order1.GetObject <Order> ();

            order1.Delete();

            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                var objectReference = LifetimeService.GetObjectReference(subTransaction, order1.ID);
                Assert.That(objectReference, Is.SameAs(order1));
                Assert.That(objectReference.State, Is.EqualTo(StateType.Invalid));
            }
        }
Exemplo n.º 29
0
        protected override void OnLoad(EventArgs e)
        {
            _clientTransaction = ClientTransaction.CreateRootTransaction();
            _clientTransaction.EnterDiscardingScope();
            if (!IsPostBack)
            {
                using (SecurityFreeSection.Activate())
                {
                    var users = (from u in QueryFactory.CreateLinqQuery <SecurityManagerUser>() orderby u.UserName select u).ToArray();
                    var user  = SecurityManagerPrincipal.Current.User;

                    UsersField.SetBusinessObjectList(users);
                    UsersField.LoadUnboundValue(user, false);
                }
            }
        }
Exemplo n.º 30
0
        public void GetObject_DeletedInParentTransaction_IncludeDeletedTrue()
        {
            var order1 = DomainObjectIDs.Order1.GetObject <Order> ();

            order1.Delete();

            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                Assert.That(
                    () => order1.ID.GetObject <Order> (includeDeleted: true),
                    Throws.TypeOf <ObjectInvalidException> ().With.Message.EqualTo(
                        "Object 'Order|5682f032-2f0b-494b-a31c-c97f02b89c36|System.Guid' is invalid in this transaction."));
            }
        }