public void it_creates_and_updates_a_new_director_if_one_does_not_exist() { const int licenceId = 1; const int paId = 2; const int dopId = 3; const string expectedName = "Name"; var licence = new Licence { Id = licenceId, DirectorOrPartners = new List <DirectorOrPartner>() }; var model = new FullNameViewModel { FullName = expectedName }; licenceRepository.GetById(licenceId).Returns(licence); repository.GetById <PrincipalAuthority>(paId).Returns(new PrincipalAuthority { Id = paId }); repository.Create <DirectorOrPartner>().Returns(new DirectorOrPartner { Id = dopId }); repository.Upsert(Arg.Any <DirectorOrPartner>()).Returns(dopId); var pdh = new LicenceApplicationPostDataHandler(mapper, repository, licenceRepository, statusRepository, dateTimeProvider); var result = pdh.UpsertDirectorOrPartnerAndLinkToPrincipalAuthority(licenceId, paId, dopId, model); Assert.AreEqual(dopId, result); repository.Received(1).Upsert(Arg.Is <DirectorOrPartner>(p => p.FullName.Equals(expectedName) && p.PrincipalAuthority.Id == paId && p.Licence.Id == licenceId)); repository.Received(1).Create <DirectorOrPartner>(); repository.Received(1).GetById <PrincipalAuthority>(paId); }
public IActionResult SaveIsDirector(IsDirectorViewModel model) { Session.SetSubmittedPage(FormSection.PrincipalAuthority, 2); if (!ModelState.IsValid || !model.IsDirector.HasValue) { return(View(GetViewPath(FormSection.PrincipalAuthority, 2), model)); } var paId = LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), x => x.PrincipalAuthorities, model, Session.GetCurrentPaId()); Session.SetCurrentPaStatus(paId, model.IsDirector.Value); if (model.IsDirector.Value) { var licenceModel = LicenceApplicationViewModelBuilder.Build(Session.GetCurrentLicenceId()); var existingDirectorOrPartnerId = licenceModel.PrincipalAuthority.DirectorOrPartnerId ?? 0; var dopId = LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), l => l.DirectorOrPartners, model, existingDirectorOrPartnerId); Session.SetCurrentDopStatus(dopId, true); LicenceApplicationPostDataHandler.UpsertDirectorOrPartnerAndLinkToPrincipalAuthority( Session.GetCurrentLicenceId(), paId, dopId, model); return(RedirectToAction(FormSection.PrincipalAuthority, 4)); } LicenceApplicationPostDataHandler.UnlinkDirectorOrPartnerFromPrincipalAuthority(Session.GetCurrentPaId()); return(CheckParentValidityAndRedirect(FormSection.PrincipalAuthority, 2)); }