public ISiteStructureViewModelFactory WithSiteDetailsViewModel(SiteDetailsViewModel siteDetailsViewModel) { _siteDetailsViewModel = siteDetailsViewModel; //var linkToSiteGroupId = siteDetailsViewModel.LinkToGroupId == siteDetailsViewModel.OriginalLinkId ? siteDetailsViewModel.LinkToGroupId : 0; _siteDetailsViewModel.ExistingGroups = GetExistingSiteGroups(); //var linkToSiteId = siteDetailsViewModel.LinkToSiteId == siteDetailsViewModel.OriginalLinkId ? siteDetailsViewModel.LinkToSiteId : 0; _siteDetailsViewModel.ExistingSites = GetExistingSites(); return this; }
public void Given_site_details_view_model_not_got_list_of_sites_When_get_view_model_Then_should_call_appropiate_methods() { // Arrange var viewModelFactory = CreateSiteStructureViewModelFactory(); var siteDetailsViewModel = new SiteDetailsViewModel {SiteId = 1}; // Act viewModelFactory.WithSiteDetailsViewModel(siteDetailsViewModel); // Assert _siteRequestStructureService.Verify(x => x.GetByCompanyIdNotIncluding(_clientId, siteDetailsViewModel.SiteId), Times.Once()); }
public SiteStructureViewModel(long clientId, MvcHtmlString siteChartsHtml, MvcHtmlString unlinkedSitesHtml, SiteDetailsViewModel siteDetailsViewModel, SiteGroupDetailsViewModel siteSiteGroupViewModel, bool showSiteDetailsSection, bool showGroupDetailsSection, bool validationError, bool showClosedSites) { ValidationError = validationError; SiteChartsHtml = siteChartsHtml; UnlinkedSitesHtml = unlinkedSitesHtml; SiteDetailsViewModel = siteDetailsViewModel; ClientId = clientId; SiteSiteGroupsViewModel = siteSiteGroupViewModel; DisplaySiteDetails = showSiteDetailsSection; DisplaySiteGroups = showGroupDetailsSection; ShowClosedSites = showClosedSites; }
public bool SendEmailIfRequired(SiteDetailsViewModel viewModel) { var existingSiteFromClientService = _clientService.GetSite(viewModel.ClientId, viewModel.SiteId); var clientCAN = _clientService.GetCompanyDetails(viewModel.ClientId).CAN; if (viewModel.SiteId != default(long)) { if (existingSiteFromClientService != null && ((viewModel.AddressLine1 != existingSiteFromClientService.AddressLine1 || !viewModel.AddressLine2.IsEqualWithNullOrWhiteSpace(existingSiteFromClientService.AddressLine2) || !viewModel.AddressLine3.IsEqualWithNullOrWhiteSpace( existingSiteFromClientService.AddressLine3) || !viewModel.AddressLine4.IsEqualWithNullOrWhiteSpace(existingSiteFromClientService.AddressLine4) || !viewModel.AddressLine5.IsEqualWithNullOrWhiteSpace(existingSiteFromClientService.AddressLine5) || !viewModel.County.IsEqualWithNullOrWhiteSpace(existingSiteFromClientService.County) || !viewModel.Telephone.IsEqualWithNullOrWhiteSpace(existingSiteFromClientService.Telephone) || !viewModel.Postcode.IsEqualWithNullOrWhiteSpace(existingSiteFromClientService.Postcode)) || viewModel.SiteStatusUpdated != SiteStatus.NoChange)) { _bus.Send(new SendSiteDetailsUpdatedEmail() { ActioningUserName = viewModel.ActioningUserName, CompanyId = viewModel.ClientId, CAN = clientCAN, SiteContactUpdated = viewModel.SiteContact, NameUpdated = viewModel.Name, AddressLine1Updated = viewModel.AddressLine1, AddressLine2Updated = viewModel.AddressLine2, AddressLine3Updated = viewModel.AddressLine3, AddressLine4Updated = viewModel.AddressLine4, AddressLine5Updated = viewModel.AddressLine5, CountyUpdated = viewModel.County, PostcodeUpdated = viewModel.Postcode, TelephoneUpdated = viewModel.Telephone, SiteContactCurrent = existingSiteFromClientService.SiteContact, NameCurrent = viewModel.NameBeforeUpdate, AddressLine1Current = existingSiteFromClientService.AddressLine1, AddressLine2Current = existingSiteFromClientService.AddressLine2, AddressLine3Current = existingSiteFromClientService.AddressLine3, AddressLine4Current = existingSiteFromClientService.AddressLine4, AddressLine5Current = existingSiteFromClientService.AddressLine5, CountyCurrent = existingSiteFromClientService.County, PostcodeCurrent = existingSiteFromClientService.Postcode, TelephoneCurrent = existingSiteFromClientService.Telephone, SiteStatusCurrent = EnumHelper.GetEnumDescription(viewModel.SiteStatusCurrent), SiteStatusUpdated = EnumHelper.GetEnumDescription(viewModel.SiteStatusUpdated) }); return true; } } return false; }
public void Given_a_invalid_model_When_update_site_Then_should_return_to_view_with_same_viewmodel() { //Given _siteDetailsViewModel = SiteDetailsViewModelBuilder .Create() .WithName(string.Empty) .Build(); _siteStructureViewModelFactory .Setup(x => x.WithSiteDetailsViewModel(_siteDetailsViewModel)) .Returns(_siteStructureViewModelFactory.Object); _siteStructureViewModelFactory .Setup(x => x.WithClientId(TestControllerHelpers.CompanyIdAssigned)) .Returns(_siteStructureViewModelFactory.Object); _siteStructureViewModelFactory .Setup(x => x.DisplaySiteDetails()) .Returns(_siteStructureViewModelFactory.Object); _siteStructureViewModelFactory .Setup(x => x.GetViewModel()) .Returns(new SiteStructureViewModel(_clientId, MvcHtmlString.Empty, MvcHtmlString.Empty, _siteDetailsViewModel, null, false, false, false, true)); _siteStructureViewModelFactory.Setup(ss => ss.WithValidationError(true)).Returns(_siteStructureViewModelFactory.Object); var target = GetTarget(); target.ModelState.AddModelError("Name", "Is required"); //When var result = target.UpdateSite(_siteDetailsViewModel) as ViewResult; //Then Assert.That(result.ViewName, Is.EqualTo("Index")); var model = result.Model as SiteStructureViewModel; Assert.That(model.SiteDetailsViewModel, Is.EqualTo(_siteDetailsViewModel)); }
public void Given_view_model_with_site_structure_id_and_client_id_When_UpdateSite_Then_calls_site_service_GetByIdAndCompanyId() { // Given _siteDetailsViewModel = SiteDetailsViewModelBuilder .Create() .WithSiteStructureId(_siteStructureId) .WithClientId(_clientId) .Build(); var target = GetTarget(); // When target.UpdateSite(_siteDetailsViewModel); // Then _siteService.Verify(x => x.GetByIdAndCompanyId(_siteStructureId, _clientId)); }
public void Given_view_model_with_site_id_and_client_id_When_UpdateSite_Then_calls_site_service_GetByIdAndCompanyId() { // Given _siteService .Setup(x => x.GetByIdAndCompanyId(_siteStructureId, _clientId)) .Returns(new SiteDto { Name = "site" }); _siteDetailsViewModel = SiteDetailsViewModelBuilder .Create() .WithSiteStructureId(_siteStructureId) .WithClientId(_clientId) .Build(); //_siteService // .Setup(x => x.GetByIdAndCompanyId(_siteStructureId, _clientId)) // .Throws<Exception>(); var target = GetTarget(); // When var result = target.UpdateSite(_siteDetailsViewModel); // Then _siteUpdateCompositionGateway .Verify(x => x.SendEmailIfRequired(It.Is<SiteDetailsViewModel> (y => y.NameBeforeUpdate.Equals("site")))); }
public void Given_a_valid_model_for_editing_site_When_update_site_Then_should_set_correct_success_message() { //Given _siteService .Setup(x => x.GetByIdAndCompanyId(10, It.IsAny<long>())) .Returns(new SiteDto{ Name = "site"}); const string expectedMessage = "A member of Client Services has been notified and will be in contact in due course"; _siteDetailsViewModel = SiteDetailsViewModelBuilder .Create() .WithSiteStructureId(10) .WithSiteId(100) .Build(); var target = GetTarget(); _siteUpdateCompositionGateway.Setup(x => x.SendEmailIfRequired(_siteDetailsViewModel)).Returns(true); //When var result = target.UpdateSite(_siteDetailsViewModel) as RedirectToRouteResult; //Then Assert.That(result, Is.Not.Null); Assert.That((target.TempData[SitesController.MessageKey] as string), Is.EqualTo(expectedMessage)); }
public void Given_that_address_info_change_is_true_Then_correct_message_is_returned() { //Given _siteService .Setup(x => x.GetByIdAndCompanyId(10, It.IsAny<long>())) .Returns(new SiteDto { Name = "site" }); _siteDetailsViewModel = SiteDetailsViewModelBuilder .Create().WithSiteStructureId(10) .WithName(string.Empty) .Build(); const string expectedMessage = "Your changes have been successfully saved"; var target = GetTarget(); _siteService.Setup(ss => ss.CreateUpdate(It.IsAny<CreateUpdateSiteRequest>())).Returns(10); //When target.UpdateSite(_siteDetailsViewModel); //Then Assert.That((target.TempData[SitesController.MessageKey] as string), Is.EqualTo(expectedMessage)); }
private ActionResult SaveSite(SiteDetailsViewModel viewModel) { if (!ModelState.IsValid) { var structureViewModel = GetSiteStructureViewModel(viewModel); return View("Index", structureViewModel); } var request = new SiteAddressRequestMapper().Map(viewModel, CurrentUser.UserId); try { if (viewModel.SiteStructureId != default(long)) { var siteBeforeUpdate = _siteService.GetByIdAndCompanyId(viewModel.SiteStructureId, viewModel.ClientId); viewModel.NameBeforeUpdate = siteBeforeUpdate.Name; } var validationMessages = _siteService.ValidateSiteCloseRequest(request); if (!validationMessages.Any()) { bool isSiteOpenRequest , isSiteClosedRequest; //Site can be opened, closed or remains with no change _siteService.GetSiteOpenClosedRequest(request, out isSiteOpenRequest, out isSiteClosedRequest); request.IsSiteOpenRequest = isSiteOpenRequest; request.IsSiteClosedRequest = isSiteClosedRequest; if (isSiteOpenRequest) { viewModel.SiteStatusUpdated = SiteStatus.Open; } else if(isSiteClosedRequest) { viewModel.SiteStatusUpdated = SiteStatus.Close; } else { viewModel.SiteStatusUpdated = SiteStatus.NoChange; } _siteService.CreateUpdate(request); TempData[UpdateSiteIdKey] = viewModel.SiteId; viewModel.ActioningUserName = CurrentUser.FullName; var addressInformationChange = _siteUpdateCompositionGateway.SendEmailIfRequired(viewModel); SetSavedSiteSuccessMessage(viewModel, addressInformationChange); } else { var faultMessages = new List<ValidationFailure>(); foreach (var validationMessage in validationMessages) { faultMessages.Add(new ValidationFailure("SiteClosed", validationMessage)); } throw new ValidationException(faultMessages); } } catch (ValidationException e) { ModelState.Update(e); var structureViewModel = GetSiteStructureViewModel(viewModel); return View("Index", structureViewModel); } return RedirectToAction("Index", "SitesStructure"); }
public void Given_a_valid_model_for_new_site_When_update_site_Then_should_set_correct_success_message() { //Given string expectedMessage = "Your new Site has been successfully created"; _siteDetailsViewModel = SiteDetailsViewModelBuilder .Create() .WithSiteStructureId(0) .WithSiteId(100) .Build(); var target = GetTarget(); _siteUpdateCompositionGateway.Setup(x => x.SendEmailIfRequired(_siteDetailsViewModel)).Returns(false); //When var result = target.UpdateSite(_siteDetailsViewModel) as RedirectToRouteResult; //Then Assert.That(result, Is.Not.Null); Assert.That((target.TempData[SitesController.MessageKey] as string), Is.EqualTo(expectedMessage)); }
private SiteStructureViewModel GetSiteStructureViewModel(SiteDetailsViewModel siteDetailsViewModel) { var viewModel = _siteStructureViewModelFactory .WithClientId(CurrentUser.CompanyId) .WithSiteDetailsViewModel(siteDetailsViewModel) .WithValidationError(true) .DisplaySiteDetails() .GetViewModel(); return viewModel; }
public void Given_a_valid_model_When_update_site_Then_viewModel_should_have_currentUsers_full_name_as_actioning_user() { //Given _siteDetailsViewModel = SiteDetailsViewModelBuilder .Create() .Build(); var target = GetTarget(); //When var result = target.UpdateSite(_siteDetailsViewModel) as ViewResult; //Then _siteUpdateCompositionGateway.Verify(x => x.SendEmailIfRequired(It.Is<SiteDetailsViewModel>(y => y.ActioningUserName == TestControllerHelpers.UserFullNameAssigned))); }
public SiteDetailsViewModel GetViewModel() { SiteDto localSiteDto = null; SiteAddressDto peninsulaSiteDto = null; if (_id != default(long)) { localSiteDto = _siteService.GetByIdAndCompanyId(_id, _clientId); peninsulaSiteDto = _clientService.GetSite(_clientId, localSiteDto.SiteId.Value); } else if (_siteId != default(long)) { localSiteDto = new SiteDto(); peninsulaSiteDto = _clientService.GetSite(_clientId, _siteId); } var siteDetailsViewModel = new SiteDetailsViewModel { SiteStructureId = localSiteDto.Id, ClientId = _clientId, Name = localSiteDto.Name, Reference = peninsulaSiteDto.Reference, LinkToSiteId = localSiteDto.Parent != null && (localSiteDto.Parent as SiteDto != null) //todo: replace with when proxy issue fixed //localSiteDto.Parent.SiteStructureElementType == "Site" ? (long?)localSiteDto.Parent.Id : null, LinkToGroupId = localSiteDto.Parent != null && (localSiteDto.Parent as SiteGroupDto != null) //todo: replace with when proxy issue fixed //localSiteDto.Parent.SiteStructureElementType == "SiteGroup" ? (long?)localSiteDto.Parent.Id : null, OriginalLinkId = localSiteDto.Parent != null ? (long?)localSiteDto.Parent.Id : null, AddressLine1 = peninsulaSiteDto.AddressLine1, AddressLine2 = peninsulaSiteDto.AddressLine2, AddressLine3 = peninsulaSiteDto.AddressLine3, AddressLine4 = peninsulaSiteDto.AddressLine4, AddressLine5 = peninsulaSiteDto.AddressLine5, County = peninsulaSiteDto.County, Postcode = peninsulaSiteDto.Postcode, Telephone = peninsulaSiteDto.Telephone, SiteContact = localSiteDto.SiteContact, SiteClosed = localSiteDto.SiteClosed, SiteStatusCurrent = localSiteDto.SiteClosed ? SiteStatus.Close : SiteStatus.Open }; if (_id != default(long)) { siteDetailsViewModel.SiteId = localSiteDto.SiteId.HasValue ? localSiteDto.SiteId.Value : 0; siteDetailsViewModel.IsMainSite = localSiteDto.Parent == null; } else if (_siteId != default(long)) { siteDetailsViewModel.SiteId = _siteId; siteDetailsViewModel.IsMainSite = false; } if (localSiteDto.Id == 0 || localSiteDto.Parent != null) { long siteId = _siteId != default(long) ? _siteId : localSiteDto.SiteId.Value; var sites = _siteService .GetByCompanyIdNotIncluding(_clientId, siteId) .OrderBy(x => x.Name); siteDetailsViewModel.ExistingSites = sites .Where(x => localSiteDto.ChildIdsThatCannotBecomeParent.Contains(x.Id) == false) .Select(AutoCompleteViewModel.ForSite) .AddDefaultOption(); var siteGroups = _siteGroupService .GetByCompanyIdExcludingSiteGroup(_clientId, siteId) .OrderBy(x => x.Name); siteDetailsViewModel.ExistingGroups = siteGroups .Where(x => localSiteDto.ChildIdsThatCannotBecomeParent.Contains(x.Id) == false) .Select(AutoCompleteViewModel.ForSiteGroup) .AddDefaultOption(); } else { siteDetailsViewModel.ExistingSites = new List<AutoCompleteViewModel>() { new AutoCompleteViewModel("--Select Option--","") }; siteDetailsViewModel.ExistingGroups = new List<AutoCompleteViewModel>() { new AutoCompleteViewModel("--Select Option--","") }; } return siteDetailsViewModel; }
public void Setup() { _bus = new Mock<IBus>(); _clientService = new Mock<IClientService>(); _emailTemplateService = new Mock<IEmailTemplateService>(); _templateEngine = new Mock<ITemplateEngine>(); _emailSenderService = new Mock<IEmail>(); _companyId = 735L; _peninsulaSiteId = 763476L; _siteStructureId = 111L; _siteAddressDto = new SiteAddressDto { AddressLine1 = "Add1", AddressLine2 = "Add2", AddressLine3 = "Add3", AddressLine4 = "Add4", Postcode = "PC", Telephone = "01234 567890", SiteId = _peninsulaSiteId }; _can = "my can"; var _companyDetails = new CompanyDetailsDto(123, "companyName", _can, "address_line1", "address_line2", "address_line3", "address_line4", 123456L, "postcode", "telephone", "website", "main contact" ); _bus.Setup(x => x.Send(It.IsAny<SendSiteDetailsUpdatedEmail>())); _clientService .Setup(x => x.GetSite(_companyId, _peninsulaSiteId)) .Returns(_siteAddressDto); _clientService .Setup(x => x.GetCompanyDetails(_companyId)) .Returns(_companyDetails); _emailTemplateDto = new EmailTemplateDto { Subject = "TEST SUBJECT" }; _emailTemplateService .Setup(x => x.GetByEmailTemplateName(EmailTemplateName.SiteAddressChangeNotification)) .Returns(_emailTemplateDto); _emailBody = "TEST EMAIL BODY"; _templateEngine .Setup(x => x.Render(It.IsAny<CompanyDetails>(), It.IsAny<string>())) .Returns(_emailBody); _viewModel = new SiteDetailsViewModel { AddressLine1 = "Add1", AddressLine2 = "Add2", AddressLine3 = "Add3", AddressLine4 = "Add4", Postcode = "PC", Telephone = "01234 567890", SiteId = _peninsulaSiteId, SiteStructureId = _siteStructureId, ClientId = _companyId, SiteStatusUpdated = SiteStatus.NoChange }; _emailSenderService.SetupSet(x => x.Body = It.IsAny<string>()).Verifiable(); _emailSenderService.SetupSet(x => x.Subject = It.IsAny<string>()).Verifiable(); _emailSenderService.SetupSet(x => x.From = It.IsAny<string>()).Verifiable(); }
public static long? GetParentId(SiteDetailsViewModel siteDetailsViewModel) { return new ParentIdFinder(siteDetailsViewModel.LinkToSiteId, siteDetailsViewModel.LinkToGroupId).GetLinkId(); }
public CreateUpdateSiteRequest Map(SiteDetailsViewModel siteDetailsViewModel, Guid currentUserId) { var request = Mapper.Map<SiteDetailsViewModel, CreateUpdateSiteRequest>(siteDetailsViewModel); request.CurrentUserId = currentUserId; return request; }
private void SetSavedSiteSuccessMessage(SiteDetailsViewModel siteDetailsViewModel, bool onlyAddressDetailInformationIsChanged) { const string ifOnlyDetailInfoChangedMessage = "A member of Client Services has been notified and will be in contact in due course"; const string ifAddressDetailInfoChangedMessage = "Your changes have been successfully saved"; TempData[MessageKey] = siteDetailsViewModel.SiteStructureId == 0 ? "Your new Site has been successfully created" : (onlyAddressDetailInformationIsChanged ? ifOnlyDetailInfoChangedMessage : ifAddressDetailInfoChangedMessage); }
public void Given_a_valid_model_When_update_site_Then_should_call_appropiate_methods() { //Given _siteDetailsViewModel = SiteDetailsViewModelBuilder .Create() .Build(); var target = GetTarget(); //When var result = target.UpdateSite(_siteDetailsViewModel) as ViewResult; //Then _siteService.Setup(x => x.CreateUpdate(It.IsAny<CreateUpdateSiteRequest>())); }
public void Given_a_valid_model_When_update_site_Then_should_set_correct_route_values() { //Given _siteDetailsViewModel = SiteDetailsViewModelBuilder .Create() .WithSiteId(100) .Build(); var target = GetTarget(); //When var result = target.UpdateSite(_siteDetailsViewModel) as RedirectToRouteResult; //Then Assert.That(result, Is.Not.Null); Assert.That(result.RouteValues["action"], Is.EqualTo("Index")); Assert.That(result.RouteValues["controller"], Is.EqualTo("SitesStructure")); Assert.That(result.RouteValues.Values.Where(x => x.ToString() == "id"), Is.Not.Null); Assert.That(target.TempData[SitesController.UpdateSiteIdKey], Is.EqualTo(_siteDetailsViewModel.SiteId)); }
public static SiteDetailsViewModelBuilder Create() { _siteDetailsViewModel = new SiteDetailsViewModel(); return new SiteDetailsViewModelBuilder(); }
public ActionResult UpdateSite(SiteDetailsViewModel siteDetailsViewModel) { return SaveSite(siteDetailsViewModel); }