public void TestEditForTemplatePostWhenValid() { #region Arrange Controller.ControllerContext.HttpContext = new MockHttpContext(0, new[] {""}, "*****@*****.**"); AccessService.Expect(a => a.HasAccess(Arg<int?>.Is.Anything, Arg<int?>.Is.Anything, Arg<string>.Is.Anything)).Return(true); AccessService.Expect(a => a.HasSameId(Arg<Template>.Is.Anything, Arg<CallForProposal>.Is.Anything, Arg<int?>.Is.Anything, Arg<int?>.Is.Anything)).Return(true); var report = CreateValidEntities.Report(9); for (int i = 0; i < 3; i++) { report.ReportColumns.Add(CreateValidEntities.ReportColumn(i + 5)); } ReportService.Expect( a => a.CommonCreate( Arg<ModelStateDictionary>.Is.Anything, Arg<Report>.Is.Anything, Arg<int?>.Is.Anything, Arg<int?>.Is.Anything, Arg<CreateReportParameter[]>.Is.Anything, Arg<string>.Is.Anything)).Return(report); var reportToEdit = CreateValidEntities.Report(4); for (int i = 0; i < 9; i++) { reportToEdit.ReportColumns.Add(CreateValidEntities.ReportColumn(i + 20)); } var reportParms = new CreateReportParameter[2]; reportParms[0] = new CreateReportParameter(); reportParms[1] = new CreateReportParameter(); reportParms[0].QuestionId = 7; reportParms[1].QuestionId = 8; SetupData3(); #endregion Arrange #region Act Controller.EditForTemplate(2, reportToEdit, 2, 3, reportParms, "test") .AssertActionRedirect() .ToAction<ReportController>(a => a.TemplateIndex(2, 3)); #endregion Act #region Assert Assert.AreEqual("Report Edited Successfully", Controller.Message); ReportService.AssertWasCalled( a => a.CommonCreate( Arg<ModelStateDictionary>.Is.Anything, Arg<Report>.Is.Anything, Arg<int?>.Is.Anything, Arg<int?>.Is.Anything, Arg<CreateReportParameter[]>.Is.Anything, Arg<string>.Is.Anything)); ReportRepository.AssertWasCalled(a => a.EnsurePersistent(Arg<Report>.Is.Anything)); var args = (Report) ReportRepository.GetArgumentsForCallsMadeOn(a => a.EnsurePersistent(Arg<Report>.Is.Anything))[0][0]; Assert.IsNotNull(args); Assert.AreEqual(3, args.ReportColumns.Count); Assert.AreEqual("Name9", args.Name); #endregion Assert }
public void TestEditForTemplatePostWhenNotValid() { #region Arrange Controller.ControllerContext.HttpContext = new MockHttpContext(0, new[] { "" }, "*****@*****.**"); AccessService.Expect(a => a.HasAccess(Arg<int?>.Is.Anything, Arg<int?>.Is.Anything, Arg<string>.Is.Anything)).Return(true); AccessService.Expect(a => a.HasSameId(Arg<Template>.Is.Anything, Arg<CallForProposal>.Is.Anything, Arg<int?>.Is.Anything, Arg<int?>.Is.Anything)).Return(true); ReportService.Expect(a => a.CommonCreate( Arg<ModelStateDictionary>.Is.Anything, Arg<Report>.Is.Anything, Arg<int?>.Is.Anything, Arg<int?>.Is.Anything, Arg<CreateReportParameter[]>.Is.Anything, Arg<string>.Is.Anything)).Return(CreateValidEntities.Report(9)); Controller.ModelState.AddModelError("Fake", @"error message"); var reportToEdit = CreateValidEntities.Report(4); var reportParms = new CreateReportParameter[2]; reportParms[0] = new CreateReportParameter(); reportParms[1] = new CreateReportParameter(); reportParms[0].QuestionId = 7; reportParms[1].QuestionId = 8; SetupData3(); #endregion Arrange #region Act var result = Controller.EditForTemplate(2,reportToEdit, 2, 3, reportParms, "test") .AssertViewRendered() .WithViewData<ReportViewModel>(); #endregion Act #region Assert Controller.ModelState.AssertErrorsAre("error message"); Assert.AreEqual("Unable to edit report", Controller.Message); ReportService.AssertWasCalled(a => a.CommonCreate( Arg<ModelStateDictionary>.Is.Anything, Arg<Report>.Is.Anything, Arg<int?>.Is.Anything, Arg<int?>.Is.Anything, Arg<CreateReportParameter[]>.Is.Anything, Arg<string>.Is.Anything)); var args = ReportService.GetArgumentsForCallsMadeOn(a => a.CommonCreate( Arg<ModelStateDictionary>.Is.Anything, Arg<Report>.Is.Anything, Arg<int?>.Is.Anything, Arg<int?>.Is.Anything, Arg<CreateReportParameter[]>.Is.Anything, Arg<string>.Is.Anything))[0]; Assert.IsNotNull(args); ((ModelStateDictionary)args[0]).AssertErrorsAre("error message"); Assert.AreEqual("Name4", ((Report)args[1]).Name); Assert.AreEqual(2, args[2]); Assert.IsNull(args[3]); Assert.AreEqual(2, ((CreateReportParameter[])args[4]).Count()); Assert.AreEqual(7, ((CreateReportParameter[])args[4]).ElementAt(0).QuestionId); Assert.AreEqual(8, ((CreateReportParameter[])args[4]).ElementAt(1).QuestionId); Assert.AreEqual("test", args[5]); ReportRepository.AssertWasNotCalled(a => a.EnsurePersistent(Arg<Report>.Is.Anything)); Assert.IsNotNull(result); Assert.AreEqual("Name9", result.Report.Name); #endregion Assert }
public void TestCreateForTemplatePostWhenValid() { #region Arrange Controller.ControllerContext.HttpContext = new MockHttpContext(0, new[] { "" }, "*****@*****.**"); AccessService.Expect(a => a.HasAccess(Arg<int?>.Is.Anything, Arg<int?>.Is.Anything, Arg<string>.Is.Anything)).Return(true); var report = CreateValidEntities.Report(9); ReportService.Expect(a => a.CommonCreate( Arg<ModelStateDictionary>.Is.Anything, Arg<Report>.Is.Anything, Arg<int?>.Is.Anything, Arg<int?>.Is.Anything, Arg<CreateReportParameter[]>.Is.Anything, Arg<string>.Is.Anything)).Return(report); var reportToEdit = CreateValidEntities.Report(4); var reportParms = new CreateReportParameter[2]; reportParms[0] = new CreateReportParameter(); reportParms[1] = new CreateReportParameter(); reportParms[0].QuestionId = 7; reportParms[1].QuestionId = 8; SetupData3(); #endregion Arrange #region Act Controller.CreateForTemplate(reportToEdit, 2, 3, reportParms, "test") .AssertActionRedirect() .ToAction<ReportController>(a => a.TemplateIndex(2, 3)); #endregion Act #region Assert Assert.AreEqual("Report Created Successfully", Controller.Message); ReportService.AssertWasCalled(a => a.CommonCreate( Arg<ModelStateDictionary>.Is.Anything, Arg<Report>.Is.Anything, Arg<int?>.Is.Anything, Arg<int?>.Is.Anything, Arg<CreateReportParameter[]>.Is.Anything, Arg<string>.Is.Anything)); ReportRepository.AssertWasCalled(a => a.EnsurePersistent(report)); #endregion Assert }
public void TestEditForCallPostRedirectsWhenReportNotFound() { #region Arrange Controller.ControllerContext.HttpContext = new MockHttpContext(0, new[] { "" }, "*****@*****.**"); AccessService.Expect(a => a.HasAccess(Arg<int?>.Is.Anything, Arg<int?>.Is.Anything, Arg<string>.Is.Anything)).Return(true); SetupData3(); var reportToEdit = CreateValidEntities.Report(9); var reportParms = new CreateReportParameter[2]; reportParms[0] = new CreateReportParameter(); reportParms[1] = new CreateReportParameter(); reportParms[0].QuestionId = 7; reportParms[1].QuestionId = 8; #endregion Arrange #region Act var result = Controller.EditForCall(7,reportToEdit , null, 3, reportParms, "Show") .AssertActionRedirect() .ToAction<ReportController>(a => a.CallIndex(3)); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual(3, result.RouteValues["id"]); #endregion Assert }
public void TestEditForCallPostRedirectsWhenNotSameId2() { #region Arrange Controller.ControllerContext.HttpContext = new MockHttpContext(0, new[] { "" }, "*****@*****.**"); AccessService.Expect(a => a.HasAccess(Arg<int?>.Is.Anything, Arg<int?>.Is.Anything, Arg<string>.Is.Anything)).Return(true); AccessService.Expect(a => a.HasSameId(Arg<Template>.Is.Anything, Arg<CallForProposal>.Is.Anything, Arg<int?>.Is.Anything, Arg<int?>.Is.Anything)).Return(false); SetupData3(); var reportToEdit = CreateValidEntities.Report(9); var reportParms = new CreateReportParameter[2]; reportParms[0] = new CreateReportParameter(); reportParms[1] = new CreateReportParameter(); reportParms[0].QuestionId = 7; reportParms[1].QuestionId = 8; #endregion Arrange #region Act Controller.EditForCall(4,reportToEdit, 9, 2, reportParms, "Show") .AssertActionRedirect() .ToAction<HomeController>(a => a.Index()); #endregion Act #region Assert Assert.AreEqual("You do not have access to that.", Controller.Message); AccessService.AssertWasCalled(a => a.HasAccess(null, 2, "*****@*****.**")); AccessService.AssertWasCalled(a => a.HasSameId(null, CallForProposalRepository.GetNullableById(2), null, 2)); #endregion Assert }
public void TestEditForCallPostRedirectsWhenCallNotFound() { #region Arrange SetupData3(); var reportToEdit = CreateValidEntities.Report(9); var reportParms = new CreateReportParameter[2]; reportParms[0] = new CreateReportParameter(); reportParms[1] = new CreateReportParameter(); reportParms[0].QuestionId = 7; reportParms[1].QuestionId = 8; #endregion Arrange #region Act Controller.EditForCall(4,reportToEdit, null, 4, reportParms, "show") .AssertActionRedirect() .ToAction<CallForProposalController>(a => a.Index(null, null, null)); #endregion Act #region Assert #endregion Assert }