public void TestAccountWithANewValueDoesNotSave()
        {
            AutoApproval autoApproval = null;

            try
            {
                #region Arrange
                autoApproval            = GetValid(9);
                autoApproval.TargetUser = null;
                autoApproval.Account    = new Account();
                #endregion Arrange

                #region Act
                AutoApprovalRepository.DbContext.BeginTransaction();
                AutoApprovalRepository.EnsurePersistent(autoApproval);
                AutoApprovalRepository.DbContext.CommitTransaction();
                #endregion Act
            }
            catch (Exception ex)
            {
                Assert.IsNotNull(autoApproval);
                Assert.AreEqual("object references an unsaved transient instance - save the transient instance before flushing or set cascade action for the property to something that would make it autosave. Type: Purchasing.Core.Domain.Account, Entity: Purchasing.Core.Domain.Account", ex.Message);
                throw;
            }
        }
        public void TestUserWithAValueOfNullDoesNotSave()
        {
            AutoApproval autoApproval = null;

            try
            {
                #region Arrange
                autoApproval      = GetValid(9);
                autoApproval.User = null;
                #endregion Arrange

                #region Act
                AutoApprovalRepository.DbContext.BeginTransaction();
                AutoApprovalRepository.EnsurePersistent(autoApproval);
                AutoApprovalRepository.DbContext.CommitTransaction();
                #endregion Act
            }
            catch (Exception)
            {
                Assert.IsNotNull(autoApproval);
                Assert.AreEqual(null, autoApproval.User);
                var results = autoApproval.ValidationResults().AsMessageList();
                results.AssertErrorsAre("The User field is required.");
                Assert.IsTrue(autoApproval.IsTransient());
                Assert.IsFalse(autoApproval.IsValid());
                throw;
            }
        }
        public void TestTargetUserWithAExistingValueDoesNotSaveIfAccountIsPopulated()
        {
            AutoApproval autoApproval = null;

            try
            {
                #region Arrange
                autoApproval            = GetValid(9);
                autoApproval.TargetUser = UserRepository.Queryable.Single(a => a.Id == "2");
                autoApproval.Account    = AccountRepository.Queryable.Single(a => a.Id == "3");
                #endregion Arrange

                #region Act
                AutoApprovalRepository.DbContext.BeginTransaction();
                AutoApprovalRepository.EnsurePersistent(autoApproval);
                AutoApprovalRepository.DbContext.CommitTransaction();
                #endregion Act
            }
            catch (Exception)
            {
                Assert.IsNotNull(autoApproval);
                Assert.IsNotNull(autoApproval.User);
                Assert.IsNotNull(autoApproval.Account);
                var results = autoApproval.ValidationResults().AsMessageList();
                results.AssertErrorsAre("An account OR user must be selected, not both.");
                Assert.IsTrue(autoApproval.IsTransient());
                Assert.IsFalse(autoApproval.IsValid());
                throw;
            }
        }
        public void TestTargetUserWithAValueOfNullDoesNotSaveIfAccountIsNull()
        {
            AutoApproval autoApproval = null;

            try
            {
                #region Arrange
                autoApproval            = GetValid(9);
                autoApproval.TargetUser = null;
                autoApproval.Account    = null;
                #endregion Arrange

                #region Act
                AutoApprovalRepository.DbContext.BeginTransaction();
                AutoApprovalRepository.EnsurePersistent(autoApproval);
                AutoApprovalRepository.DbContext.CommitTransaction();
                #endregion Act
            }
            catch (Exception)
            {
                Assert.IsNotNull(autoApproval);
                Assert.AreEqual(autoApproval.TargetUser, null);
                Assert.AreEqual(autoApproval.Account, null);
                var results = autoApproval.ValidationResults().AsMessageList();
                results.AssertErrorsAre("An account OR user must be selected, not both.");
                Assert.IsTrue(autoApproval.IsTransient());
                Assert.IsFalse(autoApproval.IsValid());
                throw;
            }
        }
        public void TestExpirationWithNullValueWillSave()
        {
            #region Arrange
            var record = GetValid(99);
            record.Expiration = null;
            #endregion Arrange

            #region Act
            AutoApprovalRepository.DbContext.BeginTransaction();
            AutoApprovalRepository.EnsurePersistent(record);
            AutoApprovalRepository.DbContext.CommitChanges();
            #endregion Act

            #region Assert
            Assert.IsFalse(record.IsTransient());
            Assert.IsTrue(record.IsValid());
            Assert.AreEqual(null, record.Expiration);
            #endregion Assert
        }
        public void TestUserWithAPopulatedValueSaves()
        {
            #region Arrange
            AutoApproval autoApproval = GetValid(9);
            autoApproval.User = UserRepository.Queryable.Single(a => a.Id == "3");
            #endregion Arrange

            #region Act
            AutoApprovalRepository.DbContext.BeginTransaction();
            AutoApprovalRepository.EnsurePersistent(autoApproval);
            AutoApprovalRepository.DbContext.CommitTransaction();
            #endregion Act

            #region Assert
            Assert.AreEqual("3", autoApproval.User.Id);
            Assert.IsFalse(autoApproval.IsTransient());
            Assert.IsTrue(autoApproval.IsValid());
            #endregion Assert
        }
        public void TestIsActiveIsTrueSaves()
        {
            #region Arrange
            var autoApproval = GetValid(9);
            autoApproval.IsActive = true;
            #endregion Arrange

            #region Act
            AutoApprovalRepository.DbContext.BeginTransaction();
            AutoApprovalRepository.EnsurePersistent(autoApproval);
            AutoApprovalRepository.DbContext.CommitTransaction();
            #endregion Act

            #region Assert
            Assert.IsTrue(autoApproval.IsActive);
            Assert.IsFalse(autoApproval.IsTransient());
            Assert.IsTrue(autoApproval.IsValid());
            #endregion Assert
        }
        public void TestLessThanIsFalseSaves()
        {
            #region Arrange
            AutoApproval autoApproval = GetValid(9);
            autoApproval.LessThan = false;
            #endregion Arrange

            #region Act
            AutoApprovalRepository.DbContext.BeginTransaction();
            AutoApprovalRepository.EnsurePersistent(autoApproval);
            AutoApprovalRepository.DbContext.CommitTransaction();
            #endregion Act

            #region Assert
            Assert.IsFalse(autoApproval.LessThan);
            Assert.IsFalse(autoApproval.IsTransient());
            Assert.IsTrue(autoApproval.IsValid());
            #endregion Assert
        }
        public void TestMaxAmount3()
        {
            #region Arrange
            var record = CreateValidEntities.AutoApproval(99);
            record.MaxAmount = 99999999.99m;
            #endregion Arrange

            #region Act
            AutoApprovalRepository.DbContext.BeginTransaction();
            AutoApprovalRepository.EnsurePersistent(record);
            AutoApprovalRepository.DbContext.CommitTransaction();
            #endregion Act

            #region Assert
            Assert.AreEqual(99999999.99m, record.MaxAmount);
            Assert.IsFalse(record.IsTransient());
            Assert.IsTrue(record.IsValid());
            #endregion Assert
        }
        public void TestExpirationWithFutureDateDateWillSave()
        {
            #region Arrange
            var compareDate = DateTime.UtcNow.ToPacificTime().AddDays(15);
            var record      = GetValid(99);
            record.Expiration = compareDate;
            #endregion Arrange

            #region Act
            AutoApprovalRepository.DbContext.BeginTransaction();
            AutoApprovalRepository.EnsurePersistent(record);
            AutoApprovalRepository.DbContext.CommitChanges();
            #endregion Act

            #region Assert
            Assert.IsFalse(record.IsTransient());
            Assert.IsTrue(record.IsValid());
            Assert.AreEqual(compareDate, record.Expiration);
            #endregion Assert
        }
        public void TestAutoApprovalAccountIfPopulatedSaves()
        {
            #region Arrange
            var record = CreateValidEntities.AutoApproval(99);
            record.TargetUser = null;
            record.Account    = AccountRepository.Queryable.Single(a => a.Id == "3");
            #endregion Arrange

            #region Act
            AutoApprovalRepository.DbContext.BeginTransaction();
            AutoApprovalRepository.EnsurePersistent(record);
            AutoApprovalRepository.DbContext.CommitTransaction();
            #endregion Act

            #region Assert
            Assert.AreEqual("3", record.Account.Id);
            Assert.IsFalse(record.IsTransient());
            Assert.IsTrue(record.IsValid());
            #endregion Assert
        }