示例#1
0
        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);
            }
        }
示例#2
0
        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 }));
            }
        }
示例#3
0
        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);
        }
示例#4
0
        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();
        }