예제 #1
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);
        }
예제 #2
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();
        }
예제 #3
0
 public AatfsByOrganisationAndFacilityTypeSpecification(Guid organisationId, FacilityType facilityType)
 {
     OrganisationId = organisationId;
     FacilityType   = facilityType;
 }
예제 #4
0
        public async Task FetchAatfByApprovalNumber_GivenApprovalNumber_ReturnedShouldBeAatf(Core.AatfReturn.FacilityType type)
        {
            FacilityType facilityType;

            if (type == Core.AatfReturn.FacilityType.Aatf)
            {
                facilityType = FacilityType.Aatf;
            }
            else
            {
                facilityType = FacilityType.Ae;
            }

            using (var database = new DatabaseWrapper())
            {
                ModelHelper         helper            = new ModelHelper(database.Model);
                DomainHelper        domainHelper      = new DomainHelper(database.WeeeContext);
                FetchAatfDataAccess dataAccess        = new FetchAatfDataAccess(database.WeeeContext, quarterWindowFactory);
                GenericDataAccess   genericDataAccess = new GenericDataAccess(database.WeeeContext);

                string approvalNumber = "test";

                Aatf aatf = await CreateAatf(database, facilityType, DateTime.Now, 2019, approvalNumber);

                await genericDataAccess.Add(aatf);

                Aatf result = await dataAccess.FetchByApprovalNumber(approvalNumber);

                Assert.NotNull(result);
                Assert.Equal(approvalNumber, result.ApprovalNumber);
                Assert.Equal(facilityType, result.FacilityType);
            }
        }
예제 #5
0
        public async Task HandleAsync_GivenGetAatfRequestWithSpecifiedFacilityType_CorrectFacilityReturned(FacilityType facilityType)
        {
            var aatfs = CreateAatfAeList();

            A.CallTo(() => dataAccess.GetLatestAatfs()).Returns(aatfs);

            var request        = new GetAatfs(facilityType);
            var returnDataList = new AatfDataList(A.Dummy <Guid>(), A.Dummy <string>(), A.Dummy <UKCompetentAuthorityData>(), A.Dummy <string>(), A.Dummy <Core.AatfReturn.AatfStatus>(), A.Dummy <OrganisationData>(), facilityType, (Int16)2019, Guid.NewGuid(), null);

            A.CallTo(() => fakeMapper.Map(A <Aatf> ._)).Returns(returnDataList);

            var result = await handler.HandleAsync(request);

            result.Count.Should().Be(1);
            result[0].FacilityType.Should().Be(facilityType);
        }
예제 #6
0
 private List <AatfDataList> SortAatfs(List <Aatf> aatfs, FacilityType facilityType)
 {
     return(aatfs.OrderBy(a => a.Name).Where(w => w.FacilityType.Value == (int)facilityType).Select(s => aatfmap.Map(s)).ToList());
 }
예제 #7
0
        public async Task HandleAsync_GivenAddReturnRequest_DataAccessSubmitsIsCalled(QuarterType quarterType, FacilityType facility)
        {
            var request = new AddReturn {
                OrganisationId = Guid.NewGuid(), Quarter = quarterType, Year = year, FacilityType = Core.AatfReturn.FacilityType.Aatf
            };

            var @return      = A.Dummy <Return>();
            var organisation = new Organisation();
            var userId       = Guid.NewGuid();

            A.CallTo(() => userContext.UserId).Returns(userId);
            A.CallTo(() => genericDataAccess.GetById <Organisation>(request.OrganisationId)).Returns(organisation);
            A.CallTo(() => returnFactory.GetReturnQuarter(A <Guid> ._, A <FacilityType> ._)).Returns(new Quarter(year, quarterType));

            await handler.HandleAsync(request);

            A.CallTo(() => returnDataAccess.Submit(A <Return> .That.Matches(c => c.Quarter.Year == request.Year && (int)c.Quarter.Q == (int)quarterType && c.Organisation.Equals(organisation) && c.CreatedById.Equals(userId.ToString())))).MustHaveHappened(Repeated.Exactly.Once);
        }