public void TestWorkgroupPermissionNewParentWorkgroupDoesNotSave()
        {
            var thisFar = false;

            try
            {
                #region Arrange
                var record = GetValid(9);
                record.ParentWorkgroup = new Workgroup();
                thisFar = true;
                #endregion Arrange

                #region Act
                WorkgroupPermissionRepository.DbContext.BeginTransaction();
                WorkgroupPermissionRepository.EnsurePersistent(record);
                WorkgroupPermissionRepository.DbContext.CommitTransaction();
                #endregion Act
            }
            catch (Exception ex)
            {
                Assert.IsTrue(thisFar);
                Assert.IsNotNull(ex);
                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.Workgroup, Entity: Purchasing.Core.Domain.Workgroup",
                    ex.Message);
                throw;
            }
        }
        public void TestWorkgroupPermissionsFieldRoleWithAValueOfNullDoesNotSave()
        {
            WorkgroupPermission record = null;

            try
            {
                #region Arrange
                record      = GetValid(9);
                record.Role = null;
                #endregion Arrange

                #region Act
                WorkgroupPermissionRepository.DbContext.BeginTransaction();
                WorkgroupPermissionRepository.EnsurePersistent(record);
                WorkgroupPermissionRepository.DbContext.CommitTransaction();
                #endregion Act
            }
            catch (Exception)
            {
                Assert.IsNotNull(record);
                Assert.AreEqual(record.Role, null);
                var results = record.ValidationResults().AsMessageList();
                results.AssertErrorsAre("The Role field is required.");
                Assert.IsTrue(record.IsTransient());
                Assert.IsFalse(record.IsValid());
                throw;
            }
        }
        public void TestDeletePeoplePostWhenMultipleRolesAvailable3()
        {
            #region Arrange
            SetupDataForPeopleList();
            var rolesToRemove = new string[1];
            rolesToRemove[0] = Role.Codes.Purchaser;
            #endregion Arrange

            #region Act
            var result = Controller.DeletePeople(3, 21, Role.Codes.Purchaser, new WorkgroupPermission(), rolesToRemove)
                         .AssertActionRedirect()
                         .ToAction <WorkgroupController>(a => a.People(3, Role.Codes.Purchaser));
            #endregion Act

            #region Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(3, result.RouteValues["id"]);
            Assert.AreEqual(Role.Codes.Purchaser, result.RouteValues["roleFilter"]);

            WorkgroupPermissionRepository.AssertWasCalled(a => a.Remove(Arg <WorkgroupPermission> .Is.Anything));
            var args = (WorkgroupPermission)WorkgroupPermissionRepository.GetArgumentsForCallsMadeOn(a => a.Remove(Arg <WorkgroupPermission> .Is.Anything))[0][0];
            Assert.IsNotNull(args);
            Assert.AreEqual(21, args.Id);
            Assert.AreEqual("1 role removed from FirstName3 LastName3", Controller.Message);

            WorkgroupService.AssertWasCalled(a => a.RemoveFromCache(WorkgroupPermissionRepository.Queryable.Single(b => b.Id == 21)));
            #endregion Assert
        }
        public void TestDeletePeoplePostWhenOnlyOneRoleAvailable2()
        {
            #region Arrange
            SetupDataForPeopleList();
            #endregion Arrange

            #region Act
            var result = Controller.DeletePeople(3, 18, Role.Codes.AccountManager, new WorkgroupPermission(), null)
                         .AssertActionRedirect()
                         .ToAction <WorkgroupController>(a => a.People(3, Role.Codes.AccountManager));
            #endregion Act

            #region Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(3, result.RouteValues["id"]);
            Assert.AreEqual(Role.Codes.AccountManager, result.RouteValues["roleFilter"]);

            Assert.AreEqual("Person successfully removed from role.", Controller.Message);

            WorkgroupPermissionRepository.AssertWasCalled(a => a.Remove(Arg <WorkgroupPermission> .Is.Anything));
            var args = (WorkgroupPermission)WorkgroupPermissionRepository.GetArgumentsForCallsMadeOn(a => a.Remove(Arg <WorkgroupPermission> .Is.Anything))[0][0];
            Assert.IsNotNull(args);
            Assert.AreEqual(18, args.Id);

            WorkgroupService.AssertWasCalled(a => a.RemoveFromCache(WorkgroupPermissionRepository.Queryable.Single(b => b.Id == 18)));
            #endregion Assert
        }
        public void TestIsDefaultForAccountIsTrueSaves()
        {
            #region Arrange
            var workgroupPermission = GetValid(9);
            workgroupPermission.IsDefaultForAccount = true;
            #endregion Arrange

            #region Act
            WorkgroupPermissionRepository.DbContext.BeginTransaction();
            WorkgroupPermissionRepository.EnsurePersistent(workgroupPermission);
            WorkgroupPermissionRepository.DbContext.CommitTransaction();
            #endregion Act

            #region Assert
            Assert.IsTrue(workgroupPermission.IsDefaultForAccount);
            Assert.IsFalse(workgroupPermission.IsTransient());
            Assert.IsTrue(workgroupPermission.IsValid());
            #endregion Assert
        }
        public void TestWorkgroupPermissionWithNullParentWorkgroupSaves()
        {
            #region Arrange
            var record = GetValid(9);
            record.ParentWorkgroup = null;
            #endregion Arrange

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

            #region Assert
            Assert.AreEqual(null, record.ParentWorkgroup);
            Assert.IsFalse(record.IsTransient());
            Assert.IsTrue(record.IsValid());
            #endregion Assert
        }
        public void TestWorkgroupPermissionWithExistingParentWorkgroupSaves()
        {
            #region Arrange
            var record = GetValid(9);
            record.ParentWorkgroup = WorkgroupRepository.Queryable.Single(a => a.Id == 3);
            #endregion Arrange

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

            #region Assert
            Assert.AreEqual(3, record.ParentWorkgroup.Id);
            Assert.IsFalse(record.IsTransient());
            Assert.IsTrue(record.IsValid());
            #endregion Assert
        }
        public void TestIsFullFeaturedIsFalseSaves()
        {
            #region Arrange
            WorkgroupPermission workgroupPermission = GetValid(9);
            workgroupPermission.IsFullFeatured = false;
            #endregion Arrange

            #region Act
            WorkgroupPermissionRepository.DbContext.BeginTransaction();
            WorkgroupPermissionRepository.EnsurePersistent(workgroupPermission);
            WorkgroupPermissionRepository.DbContext.CommitTransaction();
            #endregion Act

            #region Assert
            Assert.IsFalse(workgroupPermission.IsFullFeatured);
            Assert.IsFalse(workgroupPermission.IsTransient());
            Assert.IsTrue(workgroupPermission.IsValid());
            #endregion Assert
        }