public void TestDeletePostRedirectsWhenNoAccess2() { #region Arrange Controller.ControllerContext.HttpContext = new MockHttpContext(0, new[] { "" }, "2"); SetupDateForIndex1(); var conditionalApprovalViewModel = new ConditionalApprovalViewModel(); conditionalApprovalViewModel.Id = 7; string message = "Fake Message"; SecurityService.Expect(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(message).Dummy)).Return(false); #endregion Arrange #region Act Controller.Delete(conditionalApprovalViewModel) .AssertActionRedirect() .ToAction <ErrorController>(a => a.NotAuthorized()); #endregion Act #region Assert ConditionalApprovalRepository.AssertWasNotCalled(a => a.Remove(Arg <ConditionalApproval> .Is.Anything)); Assert.AreEqual("Fake Message", Controller.Message); SecurityService.AssertWasCalled(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(message).Dummy)); var args = SecurityService.GetArgumentsForCallsMadeOn(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(message).Dummy))[0]; Assert.IsNotNull(args); Assert.IsNull(args[0]); Assert.AreEqual("OName1", ((Organization)args[1]).Name); #endregion Assert }
public void TestDeletePostWhenValid2() { #region Arrange Controller.ControllerContext.HttpContext = new MockHttpContext(0, new[] { "" }, "1"); SetupDateForIndex1(); var conditionalApprovalViewModel = new ConditionalApprovalViewModel(); conditionalApprovalViewModel.Id = 7; const string message = "Fake Message"; SecurityService.Expect(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(message).Dummy)).Return(true); #endregion Arrange #region Act var result = Controller.Delete(conditionalApprovalViewModel) .AssertActionRedirect() .ToAction <ConditionalApprovalController>(a => a.ByOrg("1")); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual("1", result.RouteValues["id"]); Assert.AreEqual("Conditional Approval removed successfully", Controller.Message); ConditionalApprovalRepository.AssertWasCalled(a => a.Remove(Arg <ConditionalApproval> .Is.Anything)); var args1 = (ConditionalApproval)ConditionalApprovalRepository.GetArgumentsForCallsMadeOn(a => a.Remove(Arg <ConditionalApproval> .Is.Anything))[0][0]; Assert.IsNotNull(args1); Assert.AreEqual(7, args1.Id); SecurityService.AssertWasCalled(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(message).Dummy)); var args = SecurityService.GetArgumentsForCallsMadeOn(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(message).Dummy))[0]; Assert.IsNotNull(args); Assert.IsNull(args[0]); Assert.AreEqual("OName1", ((Organization)args[1]).Name); #endregion Assert }
public void TestWorkgroupWithExistingValueSaves() { #region Arrange var workgroupRepository = new Repository <Workgroup>(); workgroupRepository.DbContext.BeginTransaction(); LoadOrganizations(3); LoadWorkgroups(3); workgroupRepository.DbContext.CommitTransaction(); var record = GetValid(9); record.Workgroup = workgroupRepository.Queryable.Single(a => a.Id == 2); #endregion Arrange #region Act ConditionalApprovalRepository.DbContext.BeginTransaction(); ConditionalApprovalRepository.EnsurePersistent(record); ConditionalApprovalRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.AreEqual(2, record.Workgroup.Id); Assert.IsFalse(record.IsTransient()); Assert.IsTrue(record.IsValid()); #endregion Assert }
public void TestDeleteGetReturnsView2() { #region Arrange Controller.ControllerContext.HttpContext = new MockHttpContext(0, new[] { "" }, "1"); SetupDateForIndex1(); const string message = "Fake Message"; SecurityService.Expect(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(message).Dummy)).Return(true); #endregion Arrange #region Act var result = Controller.Delete(7) .AssertViewRendered() .WithViewData <ConditionalApprovalViewModel>(); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual(7, result.Id); Assert.AreEqual("Question7", result.Question); Assert.AreEqual("OName1", result.OrgOrWorkgroupName); Assert.AreEqual("FirstName99 LastName99 (99)", result.PrimaryUserName); Assert.AreEqual("FirstName88 LastName88 (88)", result.SecondaryUserName); ConditionalApprovalRepository.AssertWasNotCalled(a => a.Remove(Arg <ConditionalApproval> .Is.Anything)); SecurityService.AssertWasCalled(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(message).Dummy)); var args = SecurityService.GetArgumentsForCallsMadeOn(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(message).Dummy))[0]; Assert.IsNotNull(args); Assert.IsNull(args[0]); Assert.AreEqual("OName1", ((Organization)args[1]).Name); #endregion Assert }
public void TestOrganizationWithNewValueDoesNotSave() { var thisFar = false; try { #region Arrange var record = GetValid(9); record.Organization = CreateValidEntities.Organization(99); thisFar = true; #endregion Arrange #region Act ConditionalApprovalRepository.DbContext.BeginTransaction(); ConditionalApprovalRepository.EnsurePersistent(record); ConditionalApprovalRepository.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.Organization, Entity: Purchasing.Core.Domain.Organization", ex.Message); throw; } }
public void TestPrimaryApproverWithAValueOfNullDoesNotSave() { ConditionalApproval record = null; try { #region Arrange record = GetValid(9); record.PrimaryApprover = null; #endregion Arrange #region Act ConditionalApprovalRepository.DbContext.BeginTransaction(); ConditionalApprovalRepository.EnsurePersistent(record); ConditionalApprovalRepository.DbContext.CommitTransaction(); #endregion Act } catch (Exception) { Assert.IsNotNull(record); Assert.AreEqual(record.PrimaryApprover, null); var results = record.ValidationResults().AsMessageList(); results.AssertErrorsAre("The PrimaryApprover field is required."); Assert.IsTrue(record.IsTransient()); Assert.IsFalse(record.IsValid()); throw; } }
public void TestQuestionWithSpacesOnlyDoesNotSave() { ConditionalApproval conditionalApproval = null; try { #region Arrange conditionalApproval = GetValid(9); conditionalApproval.Question = " "; #endregion Arrange #region Act ConditionalApprovalRepository.DbContext.BeginTransaction(); ConditionalApprovalRepository.EnsurePersistent(conditionalApproval); ConditionalApprovalRepository.DbContext.CommitTransaction(); #endregion Act } catch (Exception) { Assert.IsNotNull(conditionalApproval); var results = conditionalApproval.ValidationResults().AsMessageList(); results.AssertErrorsAre(string.Format("The {0} field is required.", "Question")); Assert.IsTrue(conditionalApproval.IsTransient()); Assert.IsFalse(conditionalApproval.IsValid()); throw; } }
public void TestQuestionWithOneCharacterSaves() { #region Arrange var conditionalApproval = GetValid(9); conditionalApproval.Question = "x"; #endregion Arrange #region Act ConditionalApprovalRepository.DbContext.BeginTransaction(); ConditionalApprovalRepository.EnsurePersistent(conditionalApproval); ConditionalApprovalRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.IsFalse(conditionalApproval.IsTransient()); Assert.IsTrue(conditionalApproval.IsValid()); #endregion Assert }
public void TestEditPostRedirectsAndSaves1() { #region Arrange Controller.ControllerContext.HttpContext = new MockHttpContext(0, new[] { "" }, "2"); SetupDateForIndex1(); const string message = "Fake Message"; SecurityService.Expect(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(message).Dummy)).Return(true); var conditionalApprovalViewModel = new ConditionalApprovalViewModel(); conditionalApprovalViewModel.Id = 1; conditionalApprovalViewModel.OrgOrWorkgroupName = "Test"; conditionalApprovalViewModel.PrimaryUserName = "******"; conditionalApprovalViewModel.Question = "Que?"; conditionalApprovalViewModel.SecondaryUserName = "******"; #endregion Arrange #region Act var result = Controller.Edit(conditionalApprovalViewModel) .AssertActionRedirect() .ToAction <ConditionalApprovalController>(a => a.ByWorkgroup(1)); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual(1, result.RouteValues["id"]); Assert.AreEqual("Conditional Approval edited successfully", Controller.Message); ConditionalApprovalRepository.AssertWasCalled(a => a.EnsurePersistent(Arg <ConditionalApproval> .Is.Anything)); var conditionalApprovalArgs = (ConditionalApproval)ConditionalApprovalRepository.GetArgumentsForCallsMadeOn(a => a.EnsurePersistent(Arg <ConditionalApproval> .Is.Anything))[0][0]; Assert.IsNotNull(conditionalApprovalArgs); Assert.AreEqual(1, conditionalApprovalArgs.Id); Assert.AreEqual("Que?", conditionalApprovalArgs.Question); Assert.AreEqual("WName1", conditionalApprovalArgs.Workgroup.Name); Assert.AreEqual("FirstName99 LastName99 (99)", conditionalApprovalArgs.PrimaryApprover.FullNameAndId); Assert.IsNull(conditionalApprovalArgs.SecondaryApprover); Assert.IsNull(conditionalApprovalArgs.Organization); SecurityService.AssertWasCalled(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(message).Dummy)); var args = SecurityService.GetArgumentsForCallsMadeOn(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(message).Dummy))[0]; Assert.IsNotNull(args); Assert.IsNull(args[0]); Assert.AreEqual("Name1", ((Organization)args[1]).Name); #endregion Assert }
public void TestOrganizationWithNullValueSaves() { #region Arrange var record = GetValid(9); record.Organization = null; #endregion Arrange #region Act ConditionalApprovalRepository.DbContext.BeginTransaction(); ConditionalApprovalRepository.EnsurePersistent(record); ConditionalApprovalRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.AreEqual(null, record.Organization); Assert.IsFalse(record.IsTransient()); Assert.IsTrue(record.IsValid()); #endregion Assert }
public void TestSecondaryApproverWithExistingUserSaves() { #region Arrange var record = GetValid(9); record.SecondaryApprover = UserRepository.Queryable.Single(a => a.Id == "1"); #endregion Arrange #region Act ConditionalApprovalRepository.DbContext.BeginTransaction(); ConditionalApprovalRepository.EnsurePersistent(record); ConditionalApprovalRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.AreEqual("1", record.SecondaryApprover.Id); Assert.IsFalse(record.IsTransient()); Assert.IsTrue(record.IsValid()); #endregion Assert }
public void TestQuestionWithLongValueSaves() { #region Arrange var conditionalApproval = GetValid(9); conditionalApproval.Question = "x".RepeatTimes(999); #endregion Arrange #region Act ConditionalApprovalRepository.DbContext.BeginTransaction(); ConditionalApprovalRepository.EnsurePersistent(conditionalApproval); ConditionalApprovalRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.AreEqual(999, conditionalApproval.Question.Length); Assert.IsFalse(conditionalApproval.IsTransient()); Assert.IsTrue(conditionalApproval.IsValid()); #endregion Assert }
public void TestDeleteGetRedirectsWhenConditionalApprovalNotFound() { #region Arrange Controller.ControllerContext.HttpContext = new MockHttpContext(0, new[] { "" }, "2"); SetupDateForIndex1(); SecurityService.Expect(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(null).Dummy)).Return(false); #endregion Arrange #region Act Controller.Delete(19) .AssertActionRedirect() .ToAction <ErrorController>(a => a.Index()); #endregion Act #region Assert ConditionalApprovalRepository.AssertWasNotCalled(a => a.Remove(Arg <ConditionalApproval> .Is.Anything)); Assert.AreEqual("Conditional Approval not found", Controller.ErrorMessage); SecurityService.AssertWasNotCalled(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(null).Dummy)); #endregion Assert }
public void TestOrganizationWithExistingValueSaves() { #region Arrange var organizationRepository = new RepositoryWithTypedId <Organization, string>(); organizationRepository.DbContext.BeginTransaction(); LoadOrganizations(3); organizationRepository.DbContext.CommitTransaction(); var record = GetValid(9); record.Organization = organizationRepository.Queryable.Single(a => a.Id == "2"); #endregion Arrange #region Act ConditionalApprovalRepository.DbContext.BeginTransaction(); ConditionalApprovalRepository.EnsurePersistent(record); ConditionalApprovalRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.AreEqual("2", record.Organization.Id); Assert.IsFalse(record.IsTransient()); Assert.IsTrue(record.IsValid()); #endregion Assert }
public void TestWithNewSecondaryApproverUserDoesNotCascadeSave() { var thisFar = false; try { #region Arrange var record = GetValid(9); record.SecondaryApprover = new User("NoOne"); #endregion Arrange #region Act ConditionalApprovalRepository.DbContext.BeginTransaction(); thisFar = true; ConditionalApprovalRepository.EnsurePersistent(record); ConditionalApprovalRepository.DbContext.CommitTransaction(); #endregion Act } catch (Exception) { Assert.IsTrue(thisFar); throw; } }