예제 #1
0
        public async Task HandleAsync_GivenStoredProcedureReturnItems_MatchingFileContent()
        {
            int complianceYear = fixture.Create <int>();
            ReportFacilityType facilityType = fixture.Create <ReportFacilityType>();
            Guid authority = fixture.Create <Guid>();
            Guid area      = fixture.Create <Guid>();
            Guid pat       = fixture.Create <Guid>();

            AatfAeDetailsData csvData1 = CreateCsvData();

            AatfAeDetailsData csvData2 = CreateCsvData();

            AatfAeDetailsData csvData3 = CreateCsvData();

            A.CallTo(() => storedProcedures.GetAatfAeDetailsCsvData(complianceYear, (int)facilityType, authority, area, pat))
            .Returns(new List <AatfAeDetailsData> {
                csvData1, csvData2, csvData3
            });

            GetAatfAeDetailsCsv request = new GetAatfAeDetailsCsv(complianceYear, facilityType, authority, pat, area, false);

            CSVFileData data = await handler.HandleAsync(request);

            string facilityTypeString = facilityType.ToString().ToUpper();

            data.FileContent.Should().Contain($"Compliance year,Appropriate authority,WROS Pan Area Team,EA Area,\"AATF, AE or PCS?\",Name,Approval number,Status,AATF / AE address1,AATF / AE address2,AATF / AE town or city,AATF / AE county or region,AATF / AE postcode,AATF / AE country,PCS billing reference,PCS obligation type,AATF / AE date of approval,AATF / AE size,Contact first name,Contact last name,Contact position,Contact address1,Contact address2,Contact town or city,Contact county or region,Contact postcode,Contact country,Contact phone number,Contact email,Organisation type,Organisation name,Organisation business trading name,Organisation company registration number,Organisation address1,Organisation address2,Organisation town or city,Organisation county or region,Organisation postcode,Organisation country,Organisation telephone,Organisation email");
            data.FileContent.Should().Contain($"{csvData1.ComplianceYear},{csvData1.AppropriateAuthorityAbbr},{csvData1.PanAreaTeam},{csvData1.EaArea},{csvData1.RecordType},{csvData1.Name},{csvData1.ApprovalNumber},{csvData1.Status},{csvData1.Address1},{csvData1.Address2},{csvData1.TownCity},{csvData1.CountyRegion},{csvData1.PostCode},{csvData1.Country},{csvData1.IbisCustomerReference},{csvData1.ObligationType},{csvData1.ApprovalDateString},{csvData1.Size},{csvData1.FirstName},{csvData1.LastName},{csvData1.ContactPosition},{csvData1.ContactAddress1},{csvData1.ContactAddress2},{csvData1.ContactTownCity},{csvData1.ContactCountyRegion},{csvData1.ContactPostcode},{csvData1.ContactCountry},{csvData1.ContactPhone},{csvData1.ContactEmail},{csvData1.OrganisationTypeString},{csvData1.OperatorName},{csvData1.OperatorTradingName},{csvData1.CompanyRegistrationNumber},{csvData1.OrganisationAddress1},{csvData1.OrganisationAddress2},{csvData1.OrganisationTownCity},{csvData1.OrganisationCountyRegion},{csvData1.OrganisationPostcode},{csvData1.OrganisationCountry},{csvData1.OrganisationTelephone},{csvData1.OrganisationEmail}");
            data.FileContent.Should().Contain($"{csvData2.ComplianceYear},{csvData2.AppropriateAuthorityAbbr},{csvData2.PanAreaTeam},{csvData2.EaArea},{csvData2.RecordType},{csvData2.Name},{csvData2.ApprovalNumber},{csvData2.Status},{csvData2.Address1},{csvData2.Address2},{csvData2.TownCity},{csvData2.CountyRegion},{csvData2.PostCode},{csvData2.Country},{csvData2.IbisCustomerReference},{csvData2.ObligationType},{csvData2.ApprovalDateString},{csvData2.Size},{csvData2.FirstName},{csvData2.LastName},{csvData2.ContactPosition},{csvData2.ContactAddress1},{csvData2.ContactAddress2},{csvData2.ContactTownCity},{csvData2.ContactCountyRegion},{csvData2.ContactPostcode},{csvData2.ContactCountry},{csvData2.ContactPhone},{csvData2.ContactEmail},{csvData2.OrganisationTypeString},{csvData2.OperatorName},{csvData2.OperatorTradingName},{csvData2.CompanyRegistrationNumber},{csvData2.OrganisationAddress1},{csvData2.OrganisationAddress2},{csvData2.OrganisationTownCity},{csvData2.OrganisationCountyRegion},{csvData2.OrganisationPostcode},{csvData2.OrganisationCountry},{csvData2.OrganisationTelephone},{csvData2.OrganisationEmail}");
            data.FileContent.Should().Contain($"{csvData3.ComplianceYear},{csvData3.AppropriateAuthorityAbbr},{csvData3.PanAreaTeam},{csvData3.EaArea},{csvData3.RecordType},{csvData3.Name},{csvData3.ApprovalNumber},{csvData3.Status},{csvData3.Address1},{csvData3.Address2},{csvData3.TownCity},{csvData3.CountyRegion},{csvData3.PostCode},{csvData3.Country},{csvData3.IbisCustomerReference},{csvData3.ObligationType},{csvData3.ApprovalDateString},{csvData3.Size},{csvData3.FirstName},{csvData3.LastName},{csvData3.ContactPosition},{csvData3.ContactAddress1},{csvData3.ContactAddress2},{csvData3.ContactTownCity},{csvData3.ContactCountyRegion},{csvData3.ContactPostcode},{csvData3.ContactCountry},{csvData3.ContactPhone},{csvData3.ContactEmail},{csvData3.OrganisationTypeString},{csvData3.OperatorName},{csvData3.OperatorTradingName},{csvData3.CompanyRegistrationNumber},{csvData3.OrganisationAddress1},{csvData3.OrganisationAddress2},{csvData3.OrganisationTownCity},{csvData3.OrganisationCountyRegion},{csvData3.OrganisationPostcode},{csvData3.OrganisationCountry},{csvData3.OrganisationTelephone},{csvData3.OrganisationEmail}");
        }
예제 #2
0
        public async Task HandleAsyncForPublicRegister_GivenStoredProcedureReturnItems_MatchingFileContent()
        {
            int complianceYear = fixture.Create <int>();
            ReportFacilityType facilityType = fixture.Create <ReportFacilityType>();
            Guid authority = fixture.Create <Guid>();

            AatfAeDetailsData csvData1 = CreateCsvData();

            AatfAeDetailsData csvData2 = CreateCsvData();

            AatfAeDetailsData csvData3 = CreateCsvData();

            A.CallTo(() => storedProcedures.GetAatfAeDetailsCsvData(complianceYear, (int)facilityType, authority, null, null))
            .Returns(new List <AatfAeDetailsData> {
                csvData1, csvData2, csvData3
            });

            GetAatfAeDetailsCsv request = new GetAatfAeDetailsCsv(complianceYear, facilityType, authority, null, null, true);

            CSVFileData data = await handler.HandleAsync(request);

            string facilityTypeString = facilityType.ToString().ToUpper();

            data.FileContent.Should().Contain($"Compliance year,Appropriate authority,Name of {facilityTypeString},{facilityTypeString} address,{facilityTypeString} postcode,{facilityTypeString} country,EA Area for the {facilityTypeString},{facilityTypeString} approval number,Date of approval,{facilityTypeString} size,{facilityTypeString} status,Name of operator,Business trading name of operator,Operator address,Operator postcode,Operator country");
            data.FileContent.Should().Contain($"{csvData1.ComplianceYear},{csvData1.AppropriateAuthorityAbbr},{csvData1.Name},{csvData1.AatfAddress},{csvData1.PostCode},{csvData1.Country},{csvData1.EaArea},{csvData1.ApprovalNumber},{csvData1.ApprovalDateString},{csvData1.Size},{csvData1.Status},{csvData1.OperatorName},{csvData1.OperatorTradingName},{csvData1.OperatorAddress},{csvData1.OrganisationPostcode},{csvData1.OrganisationCountry}");
            data.FileContent.Should().Contain($"{csvData2.ComplianceYear},{csvData2.AppropriateAuthorityAbbr},{csvData2.Name},{csvData2.AatfAddress},{csvData2.PostCode},{csvData2.Country},{csvData2.EaArea},{csvData2.ApprovalNumber},{csvData2.ApprovalDateString},{csvData2.Size},{csvData2.Status},{csvData2.OperatorName},{csvData2.OperatorTradingName},{csvData2.OperatorAddress},{csvData2.OrganisationPostcode},{csvData2.OrganisationCountry}");
            data.FileContent.Should().Contain($"{csvData3.ComplianceYear},{csvData3.AppropriateAuthorityAbbr},{csvData3.Name},{csvData3.AatfAddress},{csvData3.PostCode},{csvData3.Country},{csvData3.EaArea},{csvData3.ApprovalNumber},{csvData3.ApprovalDateString},{csvData3.Size},{csvData3.Status},{csvData3.OperatorName},{csvData3.OperatorTradingName},{csvData3.OperatorAddress},{csvData3.OrganisationPostcode},{csvData3.OrganisationCountry}");
        }
예제 #3
0
        public async Task HandleAsync_VariousParameters_ReturnsFileContent()
        {
            GetAatfAeDetailsCsv request = new GetAatfAeDetailsCsv(fixture.Create <int>(), fixture.Create <ReportFacilityType>(), fixture.Create <Guid>(), fixture.Create <Guid>(), fixture.Create <Guid>(), fixture.Create <bool>());

            CSVFileData data = await handler.HandleAsync(request);

            data.FileContent.Should().NotBeEmpty();
        }
예제 #4
0
        public async Task HandleAsync_NoComplianceYear_ThrowsArgumentException()
        {
            const int complianceYear = 0;

            GetAatfAeDetailsCsv request = new GetAatfAeDetailsCsv(complianceYear, fixture.Create <ReportFacilityType>(), fixture.Create <Guid>(), fixture.Create <Guid>(), fixture.Create <Guid>(), fixture.Create <bool>());

            Func <Task> action = async() => await handler.HandleAsync(request);

            await Assert.ThrowsAsync <ArgumentException>(action);
        }
예제 #5
0
        public async Task HandleAsync_NotInternalUser_ThrowsSecurityException()
        {
            IWeeeAuthorization authorization = new AuthorizationBuilder().DenyInternalAreaAccess().Build();

            GetAatfAeDetailsCsvHandler handler = new GetAatfAeDetailsCsvHandler(authorization, context, csvWriterFactory, commonDataAccess);
            GetAatfAeDetailsCsv        request = new GetAatfAeDetailsCsv(fixture.Create <int>(), fixture.Create <ReportFacilityType>(), fixture.Create <Guid>(), fixture.Create <Guid>(), fixture.Create <Guid>(), fixture.Create <bool>());

            Func <Task> action = async() => await handler.HandleAsync(request);

            await Assert.ThrowsAsync <SecurityException>(action);
        }
예제 #6
0
        public async Task HandleAsync_GivenMandatoryParameters_FileNameShouldBeCorrect()
        {
            GetAatfAeDetailsCsv request = new GetAatfAeDetailsCsv(fixture.Create <int>(), fixture.Create <ReportFacilityType>(), null, null, null, false);

            DateTime date = new DateTime(2019, 05, 18, 11, 12, 0);

            SystemTime.Freeze(date);

            CSVFileData data = await handler.HandleAsync(request);

            data.FileName.Should().Be($"{request.ComplianceYear}_{request.FacilityType.ToString().ToUpper()}_AATF-AE-PCS-organisation details_{date:ddMMyyyy_HHmm}.csv");

            SystemTime.Unfreeze();
        }
예제 #7
0
        public async Task <ActionResult> DownloadAatfAeDetailsCsv(int complianceYear,
                                                                  ReportFacilityType?facilityType, Guid?authorityId, Guid?panAreaId, Guid?localAreaId)
        {
            CSVFileData fileData;

            var request = new GetAatfAeDetailsCsv(complianceYear, facilityType, authorityId, panAreaId, localAreaId, false);

            using (var client = apiClient())
            {
                fileData = await client.SendAsync(User.GetAccessToken(), request);
            }

            var data = new UTF8Encoding().GetBytes(fileData.FileContent);

            return(File(data, "text/csv", CsvFilenameFormat.FormatFileName(fileData.FileName)));
        }
예제 #8
0
        public async Task HandleAsync_GivenMandatoryParametersPublicRegister_FileNameShouldBeCorrect()
        {
            UKCompetentAuthority ca = fixture.Create <UKCompetentAuthority>();

            GetAatfAeDetailsCsv request = new GetAatfAeDetailsCsv(fixture.Create <int>(), fixture.Create <ReportFacilityType>(), ca.Id, null, null, true);

            A.CallTo(() => commonDataAccess.FetchCompetentAuthorityById(request.AuthorityId.Value)).Returns(ca);

            DateTime date = new DateTime(2019, 05, 18, 11, 12, 0);

            SystemTime.Freeze(date);

            CSVFileData data = await handler.HandleAsync(request);

            data.FileName.Should().Be($"{request.ComplianceYear}_{ca.Abbreviation}_{request.FacilityType.ToString().ToUpper()} public register_{date:ddMMyyyy_HHmm}.csv");

            SystemTime.Unfreeze();
        }
예제 #9
0
        public async Task HandleAsync_GivenMandatoryParametersAndLocalArea_FileNameShouldNotContainLocalArea()
        {
            GetAatfAeDetailsCsv request = new GetAatfAeDetailsCsv(fixture.Create <int>(), fixture.Create <ReportFacilityType>(), null, null, fixture.Create <Guid>(), false);

            LocalArea localArea = fixture.Create <LocalArea>();

            A.CallTo(() => commonDataAccess.FetchLookup <LocalArea>(request.LocalArea.Value)).Returns(localArea);

            DateTime date = new DateTime(2019, 05, 18, 11, 12, 0);

            SystemTime.Freeze(date);

            CSVFileData data = await handler.HandleAsync(request);

            data.FileName.Should().Be($"{request.ComplianceYear}_{request.FacilityType.ToString().ToUpper()}_AATF-AE-PCS-organisation details_{date:ddMMyyyy_HHmm}.csv");

            SystemTime.Unfreeze();
        }
예제 #10
0
        public async Task HandleAsync_GivenMandatoryParametersAndAllOptionalParameters_FileNameShouldBeCorrect()
        {
            UKCompetentAuthority ca        = fixture.Create <UKCompetentAuthority>();
            LocalArea            localArea = fixture.Create <LocalArea>();
            PanArea panArea = fixture.Create <PanArea>();

            GetAatfAeDetailsCsv request = new GetAatfAeDetailsCsv(fixture.Create <int>(), fixture.Create <ReportFacilityType>(), ca.Id, panArea.Id, localArea.Id, false);

            A.CallTo(() => commonDataAccess.FetchCompetentAuthorityById(request.AuthorityId.Value)).Returns(ca);

            A.CallTo(() => commonDataAccess.FetchLookup <LocalArea>(request.LocalArea.Value)).Returns(localArea);

            A.CallTo(() => commonDataAccess.FetchLookup <PanArea>(request.PanArea.Value)).Returns(panArea);

            DateTime date = new DateTime(2019, 05, 18, 11, 12, 0);

            SystemTime.Freeze(date);

            CSVFileData data = await handler.HandleAsync(request);

            data.FileName.Should().Be($"{request.ComplianceYear}_{ca.Abbreviation}_{panArea.Name}_{request.FacilityType.ToString().ToUpper()}_AATF-AE-PCS-organisation details_{date:ddMMyyyy_HHmm}.csv");

            SystemTime.Unfreeze();
        }