public async Task HandleAsync_GivenAatfCanBeCopied_OriginalAatfShouldNotBeChanged() { using (var databaseWrapper = new DatabaseWrapper()) { var organisation = EA.Weee.Domain.Organisation.Organisation.CreatePartnership("trading"); var aatf = ObligatedWeeeIntegrationCommon.CreateAatf(databaseWrapper, organisation); var competentAuthority = new Core.Shared.UKCompetentAuthorityData() { Id = databaseWrapper.WeeeContext.UKCompetentAuthorities.First().Id, Abbreviation = databaseWrapper.WeeeContext.UKCompetentAuthorities.First().Abbreviation }; var country = await databaseWrapper.WeeeContext.Countries.SingleAsync(c => c.Name == "France"); var newContact = A.Dummy <AatfContactData>(); var contact = new AatfContact("FirstName1", "LastName1", "Position1", "Address11", "Address21", "Town1", "County1", "PO12ST341", country, "Telephone1", "Email1"); var siteAddress = A.Dummy <AatfAddressData>(); var aatfAddress = new AatfAddress("Site name", "Site address 1", "Site address 2", "Site town", "Site county", "GU22 7UY", country); var aatfdata = new AatfData(Guid.NewGuid(), aatf.Name, aatf.ApprovalNumber, 2020, competentAuthority, Core.AatfReturn.AatfStatus.Approved, siteAddress, Core.AatfReturn.AatfSize.Large, DateTime.Parse("01/01/2020"), null, null) { FacilityType = Core.AatfReturn.FacilityType.Aatf }; databaseWrapper.WeeeContext.Aatfs.Add(aatf); await databaseWrapper.WeeeContext.SaveChangesAsync(); A.CallTo(() => addressMapper.Map(siteAddress)).Returns(aatfAddress); A.CallTo(() => contactMapper.Map(newContact)).Returns(contact); var message = new AddAatf() { Aatf = aatfdata, OrganisationId = organisation.Id, AatfId = aatf.AatfId, AatfContact = newContact }; await Handler(databaseWrapper).HandleAsync(message); databaseWrapper.WeeeContext.Aatfs.Where(a => a.Id == aatf.Id).Should().NotBeEmpty(); databaseWrapper.WeeeContext.Aatfs.Where(a => a.AatfId == aatf.AatfId).Count().Should().Be(2); databaseWrapper.WeeeContext.Aatfs.Where(a => a.Id == aatf.Id && a.ComplianceYear == 2019).Should().NotBeEmpty(); databaseWrapper.WeeeContext.Aatfs.Where(a => a.AatfId == aatf.AatfId && a.ComplianceYear == 2020).Count().Should().Be(1); } }
private async Task <ActionResult> AddFacility(AddFacilityViewModelBase viewModel) { PreventSiteAddressNameValidationErrors(); SetBreadcrumb(viewModel.FacilityType); viewModel = await PopulateViewModelLists(viewModel); if (!ModelState.IsValid) { if (!viewModel.ModelValidated) { ModelState.RunCustomValidation(viewModel); } ModelState.ApplyCustomValidationSummaryOrdering(AddFacilityViewModelBase.ValidationMessageDisplayOrder); return(View(nameof(Add), viewModel)); } using (var client = apiClient()) { var result = await validationWrapper.Validate(User.GetAccessToken(), viewModel); if (!result.IsValid) { ModelState.AddModelError("ApprovalNumber", Constants.ApprovalNumberExistsError); return(View(nameof(Add), viewModel)); } var request = new AddAatf() { Aatf = AatfHelper.CreateFacilityData(viewModel), AatfContact = viewModel.ContactData, OrganisationId = viewModel.OrganisationId, }; await client.SendAsync(User.GetAccessToken(), request); await cache.InvalidateAatfCache(request.OrganisationId); await client.SendAsync(User.GetAccessToken(), new CompleteOrganisationAdmin() { OrganisationId = viewModel.OrganisationId }); await cache.InvalidateOrganisationSearch(); return(RedirectToAction("ManageAatfs", "Aatf", new { viewModel.FacilityType })); } }
public async Task HandleAsync_CopyAatf_ValidInput_AddsAatf(Core.AatfReturn.FacilityType facilityType) { var competentAuthority = A.Fake <UKCompetentAuthority>(); var localarea = A.Fake <LocalArea>(); var panarea = A.Fake <PanArea>(); var aatf = new AatfData(Guid.NewGuid(), "name", "approval number", 2019, A.Dummy <Core.Shared.UKCompetentAuthorityData>(), Core.AatfReturn.AatfStatus.Approved, A.Dummy <AatfAddressData>(), Core.AatfReturn.AatfSize.Large, DateTime.Now, A.Dummy <Core.Shared.PanAreaData>(), A.Dummy <Core.Admin.LocalAreaData>()) { FacilityType = facilityType }; var aatfId = Guid.NewGuid(); var request = new AddAatf() { Aatf = aatf, AatfContact = A.Dummy <AatfContactData>(), OrganisationId = Guid.NewGuid(), AatfId = aatfId }; var expectedFacilityType = facilityType.ToDomainEnumeration <Domain.AatfReturn.FacilityType>(); A.CallTo(() => commonDataAccess.FetchCompetentAuthority(aatf.CompetentAuthority.Abbreviation)).Returns(competentAuthority); A.CallTo(() => commonDataAccess.FetchLookup <LocalArea>(aatf.LocalAreaData.Id)).Returns(localarea); A.CallTo(() => commonDataAccess.FetchLookup <PanArea>(aatf.PanAreaData.Id)).Returns(panarea); var result = await handler.HandleAsync(request); A.CallTo(() => dataAccess.Add <Domain.AatfReturn.Aatf>(A <Domain.AatfReturn.Aatf> .That.Matches( c => c.Name == aatf.Name && c.ApprovalNumber == aatf.ApprovalNumber && c.CompetentAuthority.Equals(competentAuthority) && c.LocalArea.Equals(localarea) && c.PanArea.Equals(panarea) && c.Name == aatf.Name && c.SiteAddress.Id == aatf.SiteAddress.Id && Enumeration.FromValue <Domain.AatfReturn.AatfSize>(c.Size.Value) == Enumeration.FromValue <Domain.AatfReturn.AatfSize>(aatf.Size.Value) && Enumeration.FromValue <Domain.AatfReturn.AatfStatus>(c.AatfStatus.Value) == Enumeration.FromValue <Domain.AatfReturn.AatfStatus>(aatf.AatfStatus.Value) && c.ApprovalDate == aatf.ApprovalDate && c.ComplianceYear == aatf.ComplianceYear && c.FacilityType == expectedFacilityType && c.AatfId == aatfId))).MustHaveHappened(Repeated.Exactly.Once); result.Should().Be(true); }
public async Task HandleAsync_WithNoLocalArea_LocalAreaIsNull(Core.AatfReturn.FacilityType facilityType) { var aatf = new AatfData(Guid.NewGuid(), "name", "approval number", 2019, A.Dummy <Core.Shared.UKCompetentAuthorityData>(), Core.AatfReturn.AatfStatus.Approved, A.Dummy <AatfAddressData>(), Core.AatfReturn.AatfSize.Large, DateTime.Now, A.Dummy <Core.Shared.PanAreaData>(), null) { FacilityType = facilityType }; var aatfId = Guid.NewGuid(); var request = new AddAatf() { Aatf = aatf, AatfContact = A.Dummy <AatfContactData>(), OrganisationId = Guid.NewGuid() }; var result = await handler.HandleAsync(request); A.CallTo(() => commonDataAccess.FetchLookup <LocalArea>(A <Guid> ._)).MustNotHaveHappened(); }