public async Task HandleAsync_CreatesUserWithStandardUserRole() { using (DatabaseWrapper database = new DatabaseWrapper()) { // Arrange ModelHelper helper = new ModelHelper(database.Model); DomainHelper domainHelper = new DomainHelper(database.WeeeContext); var user = helper.GetOrCreateUser("TestUser"); user.Email = "*****@*****.**"; database.Model.SaveChanges(); var handler = new AddCompetentAuthorityUserHandler(database.WeeeContext, A.Dummy<ITestUserEmailDomains>()); // Act var competentAuthorityUserId = await handler.HandleAsync(new AddCompetentAuthorityUser(user.Id)); var competentAuthorityUser = domainHelper.GetCompetentAuthorityUser(competentAuthorityUserId); // Assert Assert.Equal(user.Id, competentAuthorityUser.UserId); Assert.NotNull(competentAuthorityUser.Role); Assert.Equal("InternalUser", competentAuthorityUser.Role.Name); } }
public async Task MemberUploadSubmissionHandler_SubmitMemberUpload_NewRegisteredProducer_ContainsCorrectValueFor_CurrentSubmission() { using (var database = new DatabaseWrapper()) { var helper = new ModelHelper(database.Model); var scheme = helper.CreateScheme(); string registrationNumber = "AAAA"; int complianceYear = 2016; var registeredProducer = helper.GetOrCreateRegisteredProducer(scheme, complianceYear, registrationNumber); var memberUpload = helper.CreateMemberUpload(scheme); memberUpload.ComplianceYear = complianceYear; memberUpload.IsSubmitted = false; var producerSubmission = helper.CreateProducerAsCompany(memberUpload, registrationNumber); // At least one user is required in the database. helper.GetOrCreateUser("A user"); database.Model.SaveChanges(); User user = await database.WeeeContext.Users.FirstAsync(); IDomainUserContext domainUserContext = A.Fake<IDomainUserContext>(); A.CallTo(() => domainUserContext.GetCurrentUserAsync()).Returns(user); var handler = new MemberUploadSubmissionHandler(A.Dummy<IWeeeAuthorization>(), database.WeeeContext, domainUserContext); await handler.HandleAsync(new MemberUploadSubmission(scheme.OrganisationId, memberUpload.Id)); var registeredProducerDb = FindRegisteredProducer(database, registeredProducer.Id); Assert.Equal(registeredProducerDb.CurrentSubmission.Id, producerSubmission.Id); } }
public async Task GetComplianceYears_DoesNotReturnUnsubmittedUploads() { using (DatabaseWrapper database = new DatabaseWrapper()) { // Arrange ModelHelper helper = new ModelHelper(database.Model); var scheme = helper.CreateScheme(); var memberUpload = helper.CreateMemberUpload(scheme); memberUpload.ComplianceYear = 2016; memberUpload.IsSubmitted = false; var producer1 = helper.CreateProducerAsCompany(memberUpload, "AAA"); database.Model.SaveChanges(); var dataAccess = new GetProducerComplianceYearDataAccess(database.WeeeContext); // Act var result = await dataAccess.GetComplianceYears("AAA"); // Assert Assert.Empty(result); } }
public async Task Execute_HappyPath_ReturnsProducerEeeDataHistory() { using (DatabaseWrapper db = new DatabaseWrapper()) { //Arrange ModelHelper helper = new ModelHelper(db.Model); var scheme1 = helper.CreateScheme(); scheme1.ApprovalNumber = "WEE/TE0000ST/SCH"; var memberUpload1 = helper.CreateSubmittedMemberUpload(scheme1); memberUpload1.ComplianceYear = 2000; var producer1 = helper.CreateProducerAsCompany(memberUpload1, "PRN123"); producer1.ObligationType = "B2B"; var dataReturnVersion1 = helper.CreateDataReturnVersion(scheme1, 2000, 1); dataReturnVersion1.SubmittedDate = new DateTime(2015, 1, 6); var dataReturnVersion2 = helper.CreateDataReturnVersion(scheme1, 2000, 2); dataReturnVersion2.SubmittedDate = new DateTime(2015, 1, 8); helper.CreateEeeOutputAmount(dataReturnVersion1, producer1.RegisteredProducer, "B2B", 1, 100); helper.CreateEeeOutputAmount(dataReturnVersion2, producer1.RegisteredProducer, "B2B", 2, 200); var scheme2 = helper.CreateScheme(); scheme2.ApprovalNumber = "WEE/TE0000S1/SCH"; var memberUpload2 = helper.CreateSubmittedMemberUpload(scheme2); memberUpload2.ComplianceYear = 2000; var producer2 = helper.CreateProducerAsCompany(memberUpload2, "PRN123"); producer2.ObligationType = "B2C"; var dataReturnVersion3 = helper.CreateDataReturnVersion(scheme2, 2000, 1); dataReturnVersion1.SubmittedDate = new DateTime(2015, 1, 9); var dataReturnVersion4 = helper.CreateDataReturnVersion(scheme2, 2000, 2); dataReturnVersion4.SubmittedDate = new DateTime(2015, 1, 10); helper.CreateEeeOutputAmount(dataReturnVersion3, producer2.RegisteredProducer, "B2C", 1, 40); helper.CreateEeeOutputAmount(dataReturnVersion4, producer2.RegisteredProducer, "B2C", 2, 1000); db.Model.SaveChanges(); // Act var results = await db.StoredProcedures.SpgProducerEeeHistoryCsvData("PRN123"); //Assert Assert.NotNull(results); ProducerEeeHistoryCsvData.ProducerInReturnsResult b2cProducer = results.ProducerReturnsHistoryData.Find(x => (x.ApprovalNumber == "WEE/TE0000S1/SCH")); Assert.NotNull(b2cProducer); Assert.Equal(2000, b2cProducer.ComplianceYear); Assert.Equal(1000, b2cProducer.Cat2B2C); Assert.Equal("Yes", b2cProducer.LatestData); ProducerEeeHistoryCsvData.ProducerInReturnsResult b2bProducer = results.ProducerReturnsHistoryData.Find(x => (x.ApprovalNumber == "WEE/TE0000ST/SCH")); Assert.NotNull(b2bProducer); Assert.Equal(2000, b2bProducer.ComplianceYear); Assert.Equal(200, b2bProducer.Cat2B2B); Assert.Null(b2bProducer.Cat2B2C); Assert.Equal("Yes", b2bProducer.LatestData); Assert.Equal(4, results.ProducerReturnsHistoryData.Count); } }
public async Task Fetch_ReturnsDataForSpecifiedComplianceYearOnly() { using (DatabaseWrapper database = new DatabaseWrapper()) { // Arrange ModelHelper helper = new ModelHelper(database.Model); var scheme = helper.CreateScheme(); var memberUpload1 = helper.CreateSubmittedMemberUpload(scheme); memberUpload1.ComplianceYear = 2016; var producer1 = helper.CreateProducerAsCompany(memberUpload1, "AAA"); var memberUpload2 = helper.CreateSubmittedMemberUpload(scheme); memberUpload2.ComplianceYear = 2017; var producer2 = helper.CreateProducerAsCompany(memberUpload2, "AAA"); database.Model.SaveChanges(); var dataAccess = new GetProducerDetailsDataAccess(database.WeeeContext); // Act var result = await dataAccess.Fetch("AAA", 2016); // Assert Assert.Single(result); Assert.Equal(2016, result.Single().RegisteredProducer.ComplianceYear); } }
public async void GetOrganisationUsers_SameUserRejectedMultipleTimesForOneOrganisation_ButAlsoHasAnotherStatus_ReturnsTheOtherStatus(Core.Shared.UserStatus status) { using (var dbWrapper = new DatabaseWrapper()) { // Add AspNet user user var modelHelper = new ModelHelper(dbWrapper.Model); var aspNetUser = modelHelper.CreateUser("My username", IdType.Guid); dbWrapper.Model.SaveChanges(); // Add organisation var uniqueOrgName = "Test Org " + Guid.NewGuid(); var country = dbWrapper.WeeeContext.Countries.First(); var organisation = Domain.Organisation.Organisation.CreateSoleTrader(uniqueOrgName); organisation.AddOrUpdateMainContactPerson(new Domain.Organisation.Contact("First name", "Last name", "Developer")); organisation.AddOrUpdateAddress(AddressType.OrganisationAddress, new Domain.Organisation.Address( "Address line 1", string.Empty, "Town", string.Empty, string.Empty, country, "01234567890", "[email protected]")); organisation.CompleteRegistration(); dbWrapper.WeeeContext.Organisations.Add(organisation); dbWrapper.WeeeContext.SaveChanges(); // Add same organisation user multiple times, rejected var rejectedOrganisationUsers = new List<Domain.Organisation.OrganisationUser> { new Domain.Organisation.OrganisationUser(Guid.Parse(aspNetUser.Id), organisation.Id, UserStatus.Rejected), new Domain.Organisation.OrganisationUser(Guid.Parse(aspNetUser.Id), organisation.Id, UserStatus.Rejected), new Domain.Organisation.OrganisationUser(Guid.Parse(aspNetUser.Id), organisation.Id, UserStatus.Rejected) }; var otherOrganisationUser = new Domain.Organisation.OrganisationUser(Guid.Parse(aspNetUser.Id), organisation.Id, status.ToDomainEnumeration<UserStatus>()); dbWrapper.WeeeContext.OrganisationUsers.AddRange(rejectedOrganisationUsers); dbWrapper.WeeeContext.OrganisationUsers.Add(otherOrganisationUser); dbWrapper.WeeeContext.SaveChanges(); var dataAccess = new FindMatchingUsersDataAccess(dbWrapper.WeeeContext); var result = (await dataAccess.GetOrganisationUsers()) .Where(ou => ou.OrganisationName == uniqueOrgName); Assert.Single(result); var organisationUser = result.Single(); Assert.Equal(status, organisationUser.Status); } }
public async Task Execute_WithNonSubmittedMemberUpload_IgnoresProducer() { using (DatabaseWrapper db = new DatabaseWrapper()) { // Arrange ModelHelper helper = new ModelHelper(db.Model); Scheme scheme1 = helper.CreateScheme(); MemberUpload memberUpload1 = helper.CreateMemberUpload(scheme1); memberUpload1.ComplianceYear = 2016; memberUpload1.IsSubmitted = false; helper.CreateProducerAsCompany(memberUpload1, "WEE/11AAAA11"); db.Model.SaveChanges(); // Act List<MembersDetailsCsvData> results = await db.StoredProcedures.SpgCSVDataBySchemeComplianceYearAndAuthorisedAuthority(2016, false, false, scheme1.Id, null); // Assert Assert.NotNull(results); Assert.Equal(0, results.Count); } }
public async Task HandleAsync_XmlContainsSchemaError_StoresAvailableDataReturnData() { using (DatabaseWrapper database = new DatabaseWrapper()) { // Arrange ModelHelper helper = new ModelHelper(database.Model); DomainHelper domainHelper = new DomainHelper(database.WeeeContext); var organisation = helper.CreateOrganisation(); var scheme = helper.CreateScheme(organisation); database.Model.SaveChanges(); var builder = new ProcessDataReturnXmlFileHandlerBuilder(database.WeeeContext); var xmlGeneratorResult = new GenerateFromDataReturnXmlResult<SchemeReturn>( "Test XML string", A.Dummy<SchemeReturn>(), new List<XmlValidationError> { new XmlValidationError(ErrorLevel.Error, XmlErrorType.Schema, "Error text") }); A.CallTo(() => builder.XmlGenerator.GenerateDataReturns<SchemeReturn>(A<ProcessDataReturnXmlFile>._)) .Returns(xmlGeneratorResult); // Act var dataReturnUploadId = await builder.InvokeHandleAsync(organisation.Id, fileName: "XML file name"); // Assert var dataReturnUpload = domainHelper.GetDataReturnUpload(dataReturnUploadId); Assert.Equal(scheme.Id, dataReturnUpload.Scheme.Id); Assert.Equal("Test XML string", dataReturnUpload.RawData.Data); Assert.Equal("XML file name", dataReturnUpload.FileName); Assert.NotEqual(TimeSpan.Zero, dataReturnUpload.ProcessTime); } }
public async void GetComplianceYearsWithSubmittedMemberUploads_SchemeHasSubmittedMemberUpload_ReturnsCorrespondingComplianceYear() { const int complianceYear = 1923; using (var databaseWrapper = new DatabaseWrapper()) { // Arrange var modelHelper = new ModelHelper(databaseWrapper.Model); var scheme = modelHelper.CreateScheme(); var memberUpload = modelHelper.CreateMemberUpload(scheme); memberUpload.IsSubmitted = true; memberUpload.ComplianceYear = complianceYear; await databaseWrapper.Model.SaveChangesAsync(); // Act var dataAccess = new SchemeDataAccess(databaseWrapper.WeeeContext); var result = await dataAccess.GetComplianceYearsWithSubmittedMemberUploads(scheme.Id); // Assert Assert.Single(result); Assert.Equal(complianceYear, result.Single()); } }
public async Task Fetch_ReturnsDataForSubmittedProducerOnly() { using (DatabaseWrapper database = new DatabaseWrapper()) { // Arrange ModelHelper helper = new ModelHelper(database.Model); var scheme = helper.CreateScheme(); var memberUpload = helper.CreateMemberUpload(scheme); memberUpload.ComplianceYear = 2016; memberUpload.IsSubmitted = false; var producer = helper.CreateProducerAsCompany(memberUpload, "AAA"); database.Model.SaveChanges(); var dataAccess = new GetProducerDetailsDataAccess(database.WeeeContext); // Act var result = await dataAccess.Fetch("AAA", 2016); // Assert Assert.Empty(result); } }
public async void FetchSchemeInfo_WithValidOrganisationId_ReturnsScheme() { using (var database = new DatabaseWrapper()) { // Arrange Guid organisationId = Guid.NewGuid(); ModelHelper modelHelper = new ModelHelper(database.Model); var scheme = modelHelper.CreateScheme(); scheme.ApprovalNumber = "1234"; scheme.Organisation.Id = organisationId; scheme.Organisation.TradingName = "TradingName"; database.Model.SaveChanges(); ProducerListFactoryDataAccess dataAccess = new ProducerListFactoryDataAccess(database.WeeeContext); // Act var result = await dataAccess.FetchSchemeInfo(organisationId); // Assert Assert.Equal("1234", result.First().ApprovalNumber); Assert.Equal("TradingName", result.First().TradingName); } }
public async Task GetLatestProducerEeeData_ReturnsData_WhenDataAvailableForSpecifiedScheme() { using (DatabaseWrapper database = new DatabaseWrapper()) { // Arrange var helper = new ModelHelper(database.Model); var organisation = helper.CreateOrganisation(); var scheme = helper.CreateScheme(organisation); var memberUpload = helper.CreateSubmittedMemberUpload(scheme); memberUpload.ComplianceYear = 2016; var producer = helper.CreateProducerAsCompany(memberUpload, "WEE/MM0001AA"); var dataReturnVersion = helper.CreateDataReturnVersion(scheme, 2016, 1, isSubmitted: true); var producerEee = helper.CreateEeeOutputAmount(dataReturnVersion, producer.RegisteredProducer, "B2C", 1, 1000); database.Model.SaveChanges(); // Act var querySet = new SchemeEeeDataQuerySet(organisation.Id, "2016", database.WeeeContext); var result = await querySet.GetLatestProducerEeeData("WEE/MM0001AA"); // Assert Assert.NotNull(result); Assert.Single(result); } }
public async Task FetchDataReturnOrDefault_ReturnsDataReturnForSpecifiedYearOnly() { using (DatabaseWrapper database = new DatabaseWrapper()) { // Arrange ModelHelper helper = new ModelHelper(database.Model); DomainHelper domainHelper = new DomainHelper(database.WeeeContext); var scheme = helper.CreateScheme(); helper.CreateDataReturnVersion(scheme, 2016, 1, true); var dataReturnVersion = helper.CreateDataReturnVersion(scheme, 2017, 1, true); database.Model.SaveChanges(); var dataAccess = new DataReturnVersionBuilderDataAccess(domainHelper.GetScheme(scheme.Id), new Quarter(2017, QuarterType.Q1), database.WeeeContext); // Act var result = await dataAccess.FetchDataReturnOrDefault(); // Assert Assert.Equal(2017, result.Quarter.Year); Assert.Equal(dataReturnVersion.DataReturn.Id, result.Id); } }
public async Task Submit_SetsDataReturnVersionAsSubmitted() { using (DatabaseWrapper database = new DatabaseWrapper()) { // Arrange ModelHelper helper = new ModelHelper(database.Model); DomainHelper domainHelper = new DomainHelper(database.WeeeContext); var scheme = helper.CreateScheme(); var dataReturnVersion = helper.CreateDataReturnVersion(scheme, 2016, 1, false); database.Model.SaveChanges(); var dbDataReturnVersion = domainHelper.GetDataReturnVersion(dataReturnVersion.Id); var dataAccess = new SubmitReturnVersionDataAccess(database.WeeeContext); // Act await dataAccess.Submit(dbDataReturnVersion); // Assert Assert.Equal(dataReturnVersion.Id, dbDataReturnVersion.Id); Assert.True(dbDataReturnVersion.IsSubmitted); Assert.NotNull(dbDataReturnVersion.SubmittedDate); Assert.Equal(database.WeeeContext.GetCurrentUser(), dbDataReturnVersion.SubmittingUserId); Assert.Equal(dataReturnVersion.Id, dbDataReturnVersion.DataReturn.CurrentVersion.Id); } }
public async Task Execute_ReturnsProducers_WithNonZeroChargesOnly() { using (DatabaseWrapper db = new DatabaseWrapper()) { ModelHelper helper = new ModelHelper(db.Model); var scheme = helper.CreateScheme(); var invoiceRun = helper.CreateInvoiceRun(); var memberUpload = helper.CreateSubmittedMemberUpload(scheme, invoiceRun); memberUpload.ComplianceYear = 2016; var producer1 = helper.CreateProducerAsCompany(memberUpload, "PRN123"); producer1.ChargeThisUpdate = 0; producer1.Invoiced = true; var producer2 = helper.CreateProducerAsCompany(memberUpload, "PRN567"); producer2.ChargeThisUpdate = 10; producer2.Invoiced = true; db.Model.SaveChanges(); var result = await db.StoredProcedures.SpgInvoiceRunChargeBreakdown(invoiceRun.Id); Assert.Single(result); Assert.Equal("PRN567", result.Single().PRN); } }
public async void SpgSubmissionChangesCsvData_ReturnsProducerAsNew_ProducerRegisteredForDifferentSchemeWithinSameYear_ButFirstSubmissionForCurrentScheme() { using (var database = new DatabaseWrapper()) { // Arrange ModelHelper modelHelper = new ModelHelper(database.Model); var scheme = modelHelper.CreateScheme(); var memberUpload = modelHelper.CreateSubmittedMemberUpload(scheme); memberUpload.ComplianceYear = 2016; modelHelper.CreateProducerAsCompany(memberUpload, "1111", "B2B"); var scheme2 = modelHelper.CreateScheme(); var memberUpload2 = modelHelper.CreateSubmittedMemberUpload(scheme2); memberUpload2.ComplianceYear = 2016; modelHelper.CreateProducerAsCompany(memberUpload2, "1111", "B2C"); database.Model.SaveChanges(); StoredProcedures storedProcedures = new StoredProcedures(database.WeeeContext); // Act var result = await storedProcedures.SpgSubmissionChangesCsvData(memberUpload2.Id); // Assert Assert.Single(result); Assert.Equal("New", result[0].ChangeType); } }
public async Task GetComplianceYears_ReturnsComplianceYearForRegisteredProducer() { using (DatabaseWrapper database = new DatabaseWrapper()) { // Arrange ModelHelper helper = new ModelHelper(database.Model); var scheme = helper.CreateScheme(); var memberUpload = helper.CreateSubmittedMemberUpload(scheme); memberUpload.ComplianceYear = 2016; var producer1 = helper.CreateProducerAsCompany(memberUpload, "AAA"); database.Model.SaveChanges(); var dataAccess = new GetProducerComplianceYearDataAccess(database.WeeeContext); // Act var result = await dataAccess.GetComplianceYears("AAA"); // Assert Assert.Single(result); Assert.Contains(2016, result); } }
public async void SpgSubmissionChangesCsvData_ReturnsProducerAsNew_WhenExistingProducerUploadButNoSubmissionForSameYearAndScheme() { using (var database = new DatabaseWrapper()) { // Arrange ModelHelper modelHelper = new ModelHelper(database.Model); var scheme = modelHelper.CreateScheme(); var memberUpload1 = modelHelper.CreateSubmittedMemberUpload(scheme); memberUpload1.ComplianceYear = 2016; memberUpload1.IsSubmitted = false; modelHelper.CreateProducerAsCompany(memberUpload1, "1111"); var memberUpload2 = modelHelper.CreateSubmittedMemberUpload(scheme); memberUpload2.ComplianceYear = 2016; modelHelper.CreateProducerAsCompany(memberUpload2, "1111"); database.Model.SaveChanges(); StoredProcedures storedProcedures = new StoredProcedures(database.WeeeContext); // Act var result = await storedProcedures.SpgSubmissionChangesCsvData(memberUpload2.Id); // Assert Assert.Single(result); Assert.Equal("New", result[0].ChangeType); } }
public async Task GetPreviousSubmission_ReturnsPreviousSubmissionForSameSchemeOnly() { using (var database = new DatabaseWrapper()) { // Arrange DataReturnSubmissionsDataAccess dataAccess = new DataReturnSubmissionsDataAccess(database.WeeeContext); ModelHelper modelHelper = new ModelHelper(database.Model); DomainHelper domainHelper = new DomainHelper(database.WeeeContext); var scheme1 = modelHelper.CreateScheme(); var dataReturnVersion = modelHelper.CreateDataReturnVersion(scheme1, 2015, 1, true); dataReturnVersion.SubmittedDate = new DateTime(2015, 1, 1); var dataReturnVersion2 = modelHelper.CreateDataReturnVersion(scheme1, 2015, 1, true); dataReturnVersion2.SubmittedDate = new DateTime(2015, 3, 1); var scheme2 = modelHelper.CreateScheme(); var dataReturnVersion3 = modelHelper.CreateDataReturnVersion(scheme2, 2015, 1, true); dataReturnVersion3.SubmittedDate = new DateTime(2015, 2, 1); database.Model.SaveChanges(); var domainDataReturnVersion = domainHelper.GetDataReturnVersion(dataReturnVersion2.Id); // Act var result = await dataAccess.GetPreviousSubmission(domainDataReturnVersion); // Assert Assert.NotNull(result); Assert.Equal(dataReturnVersion.Id, result.Id); } }
public async Task GetPreviousSubmission_ReturnsNullIfPreviousUploadButNoSubmission() { using (var database = new DatabaseWrapper()) { // Arrange DataReturnSubmissionsDataAccess dataAccess = new DataReturnSubmissionsDataAccess(database.WeeeContext); ModelHelper modelHelper = new ModelHelper(database.Model); DomainHelper domainHelper = new DomainHelper(database.WeeeContext); var scheme = modelHelper.CreateScheme(); var dataReturnVersion = modelHelper.CreateDataReturnVersion(scheme, 2015, 1, false); var dataReturnVersion2 = modelHelper.CreateDataReturnVersion(scheme, 2015, 1, true); dataReturnVersion2.SubmittedDate = new DateTime(2015, 2, 1); database.Model.SaveChanges(); var domainDataReturnVersion = domainHelper.GetDataReturnVersion(dataReturnVersion2.Id); // Act var result = await dataAccess.GetPreviousSubmission(domainDataReturnVersion); // Assert Assert.Null(result); } }
public async Task Execute_HappyPath_ReturnsProducerWithSelectedSchemeandAA() { using (DatabaseWrapper db = new DatabaseWrapper()) { // Arrange ModelHelper helper = new ModelHelper(db.Model); Scheme scheme1 = helper.CreateScheme(); scheme1.CompetentAuthorityId = new Guid("4EEE5942-01B2-4A4D-855A-34DEE1BBBF26"); MemberUpload memberUpload1 = helper.CreateMemberUpload(scheme1); memberUpload1.ComplianceYear = 2016; memberUpload1.IsSubmitted = true; memberUpload1.SubmittedDate = new DateTime(2015, 1, 1); ProducerSubmission producer1 = helper.CreateProducerAsCompany(memberUpload1, "WEE/11AAAA11"); db.Model.SaveChanges(); // Act List<MembersDetailsCsvData> results = await db.StoredProcedures.SpgCSVDataBySchemeComplianceYearAndAuthorisedAuthority(2016, false, false, scheme1.Id, scheme1.CompetentAuthorityId); // Assert Assert.NotNull(results); Assert.Equal(1, results.Count); MembersDetailsCsvData result = results[0]; Assert.Equal("WEE/11AAAA11", result.PRN); } }
public async Task HandleAsync_XmlContainsSchemaError_CreatesDataReturnUpload_WithNullComplianceYearAndQuarter() { using (DatabaseWrapper database = new DatabaseWrapper()) { // Arrange ModelHelper helper = new ModelHelper(database.Model); DomainHelper domainHelper = new DomainHelper(database.WeeeContext); var organisation = helper.CreateOrganisation(); helper.CreateScheme(organisation); database.Model.SaveChanges(); var builder = new ProcessDataReturnXmlFileHandlerBuilder(database.WeeeContext); var xmlGeneratorResult = new GenerateFromDataReturnXmlResult<SchemeReturn>( "Test XML string", A.Dummy<SchemeReturn>(), new List<XmlValidationError> { new XmlValidationError(ErrorLevel.Error, XmlErrorType.Schema, "Error text") }); A.CallTo(() => builder.XmlGenerator.GenerateDataReturns<SchemeReturn>(A<ProcessDataReturnXmlFile>._)) .Returns(xmlGeneratorResult); // Act var dataReturnUploadId = await builder.InvokeHandleAsync(organisation.Id); // Assert var dataReturnUpload = domainHelper.GetDataReturnUpload(dataReturnUploadId); Assert.Null(dataReturnUpload.ComplianceYear); Assert.Null(dataReturnUpload.Quarter); } }
public async Task SpgProducerEeeDataHistoryCsvTests_ForEachQuarter_ReturnsProducerEeeDataHistoryLatestDataSetToYes() { using (DatabaseWrapper db = new DatabaseWrapper()) { //Arrange ModelHelper helper = new ModelHelper(db.Model); var scheme1 = helper.CreateScheme(); scheme1.ApprovalNumber = "WEE/TE1111ST/SCH"; var memberUpload1 = helper.CreateSubmittedMemberUpload(scheme1); memberUpload1.ComplianceYear = 2000; var producer1 = helper.CreateProducerAsCompany(memberUpload1, "PRN345"); producer1.ObligationType = "B2B"; var dataReturnVersion1 = helper.CreateDataReturnVersion(scheme1, 2000, 4); dataReturnVersion1.SubmittedDate = new DateTime(2015, 1, 8); var dataReturnVersion2 = helper.CreateDataReturnVersion(scheme1, 2000, 2); dataReturnVersion2.SubmittedDate = new DateTime(2015, 1, 6); var dataReturnVersion3 = helper.CreateDataReturnVersion(scheme1, 2000, 3); dataReturnVersion3.SubmittedDate = new DateTime(2015, 1, 3); var dataReturnVersion4 = helper.CreateDataReturnVersion(scheme1, 2000, 1); dataReturnVersion4.SubmittedDate = new DateTime(2015, 1, 1); //Latest for quarter 4 var dataReturnVersion5 = helper.CreateDataReturnVersion(scheme1, 2000, 4); dataReturnVersion5.SubmittedDate = new DateTime(2015, 1, 10); helper.CreateEeeOutputAmount(dataReturnVersion1, producer1.RegisteredProducer, "B2B", 10, 100); helper.CreateEeeOutputAmount(dataReturnVersion2, producer1.RegisteredProducer, "B2B", 11, 200); helper.CreateEeeOutputAmount(dataReturnVersion3, producer1.RegisteredProducer, "B2B", 12, 300); helper.CreateEeeOutputAmount(dataReturnVersion4, producer1.RegisteredProducer, "B2B", 13, 500); helper.CreateEeeOutputAmount(dataReturnVersion5, producer1.RegisteredProducer, "B2B", 13, 600); db.Model.SaveChanges(); // Act var results = await db.StoredProcedures.SpgProducerEeeHistoryCsvData("PRN345"); //Assert Assert.NotNull(results); Assert.Equal("Yes", results.ProducerReturnsHistoryData[4].LatestData); Assert.Equal(600, results.ProducerReturnsHistoryData[4].Cat13B2B); Assert.Equal("No", results.ProducerReturnsHistoryData[3].LatestData); Assert.Equal(100, results.ProducerReturnsHistoryData[3].Cat10B2B); Assert.Equal("Yes", results.ProducerReturnsHistoryData[2].LatestData); Assert.Equal(200, results.ProducerReturnsHistoryData[2].Cat11B2B); Assert.Equal("Yes", results.ProducerReturnsHistoryData[1].LatestData); Assert.Equal(300, results.ProducerReturnsHistoryData[1].Cat12B2B); Assert.Equal("Yes", results.ProducerReturnsHistoryData[0].LatestData); Assert.Equal(500, results.ProducerReturnsHistoryData[0].Cat13B2B); Assert.Equal(5, results.ProducerReturnsHistoryData.Count); } }
public async Task HappyPath_ManyUniquePrnsGeneratedAndSeedUpdatedToExpectedValue() { // arrange var validXmlLocation = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase), @"ExampleXML\v3-valid-many-insertions.xml"); var validXmlString = File.ReadAllText(new Uri(validXmlLocation).LocalPath); var validXmlBytes = File.ReadAllBytes(new Uri(validXmlLocation).LocalPath); using (var database = new DatabaseWrapper()) { var modelHelper = new ModelHelper(database.Model); var org = modelHelper.CreateOrganisation(); var scheme = modelHelper.CreateScheme(org); var memberUpload = modelHelper.CreateMemberUpload(scheme); var message = new ProcessXmlFile(org.Id, validXmlBytes, "File name"); var initialSeed = database.WeeeContext.SystemData.Select(sd => sd.LatestPrnSeed).First(); var expectedSeed = ExpectedSeedAfterThisXml(validXmlString, initialSeed); var whiteSpaceCollapser = A.Fake<IWhiteSpaceCollapser>(); var xmlConverter = new XmlConverter(whiteSpaceCollapser, new Deserializer()); var schemeType = xmlConverter.Deserialize<schemeType>(xmlConverter.Convert(message.Data)); var producerCharges = new Dictionary<string, ProducerCharge>(); var anyAmount = 30; var anyChargeBandAmount = A.Dummy<ChargeBandAmount>(); foreach (var producerData in schemeType.producerList) { var producerName = producerData.GetProducerName(); if (!producerCharges.ContainsKey(producerName)) { producerCharges.Add(producerName, new ProducerCharge { Amount = anyAmount, ChargeBandAmount = anyChargeBandAmount }); } } database.Model.SaveChanges(); var contextMemberUpload = database.WeeeContext.MemberUploads .Single(mu => mu.Id == memberUpload.Id); // act var producers = await new GenerateFromXml( xmlConverter, new GenerateFromXmlDataAccess(database.WeeeContext)).GenerateProducers(message, contextMemberUpload, producerCharges); // assert long newSeed = database.WeeeContext.SystemData.Select(sd => sd.LatestPrnSeed).First(); Assert.Equal(expectedSeed, newSeed); var prns = producers.Select(p => p.RegisteredProducer.ProducerRegistrationNumber); Assert.Equal(prns.Distinct(), prns); // all prns should be unique } }
public async Task FetchInvoiceRunsAsync_WithSpecifiedAuthority_OnlyReturnsInvoiceRunsForTheSpecifiedAuthority() { using (DatabaseWrapper wrapper = new DatabaseWrapper()) { // Arrange ModelHelper helper = new ModelHelper(wrapper.Model); AspNetUser user = helper.GetOrCreateUser("TestUser"); Weee.Tests.Core.Model.Country country = new Weee.Tests.Core.Model.Country(); country.Id = new Guid("FA20ED45-5488-491D-A117-DFC09C9C1BA2"); country.Name = "Test Country"; CompetentAuthority databaseAuthority1 = new CompetentAuthority(); databaseAuthority1.Id = new Guid("DDE398F6-809E-416D-B70D-B36606F221FC"); databaseAuthority1.Name = "Test Authority 1"; databaseAuthority1.Abbreviation = "T1"; databaseAuthority1.Country = country; databaseAuthority1.Email = "TestEmailAddress"; wrapper.Model.CompetentAuthorities.Add(databaseAuthority1); CompetentAuthority databaseAuthority2 = new CompetentAuthority(); databaseAuthority2.Id = new Guid("FBCEDC2F-0825-4066-B24E-86D3A2FD892B"); databaseAuthority2.Name = "Test Authority 2"; databaseAuthority2.Abbreviation = "T2"; databaseAuthority2.Country = country; databaseAuthority2.Email = "TestEmailAddress2"; wrapper.Model.CompetentAuthorities.Add(databaseAuthority2); InvoiceRun invoiceRunForAuthority1 = new InvoiceRun(); invoiceRunForAuthority1.Id = new Guid("CE7A2617-AE16-403E-A7BF-BF01AD223872"); invoiceRunForAuthority1.CompetentAuthority = databaseAuthority1; invoiceRunForAuthority1.IssuedByUserId = user.Id; invoiceRunForAuthority1.IssuedDate = new DateTime(2015, 1, 1); wrapper.Model.InvoiceRuns.Add(invoiceRunForAuthority1); InvoiceRun invoiceRunForAuthority2 = new InvoiceRun(); invoiceRunForAuthority2.Id = new Guid("728CDF55-1C3C-4BE0-80CB-0BC82CC9DFA3"); invoiceRunForAuthority2.CompetentAuthority = databaseAuthority2; invoiceRunForAuthority2.IssuedByUserId = user.Id; invoiceRunForAuthority2.IssuedDate = new DateTime(2015, 1, 1); wrapper.Model.InvoiceRuns.Add(invoiceRunForAuthority2); wrapper.Model.SaveChanges(); UKCompetentAuthority domainAuthority1 = wrapper.WeeeContext.UKCompetentAuthorities.Find(databaseAuthority1.Id); FetchInvoiceRunsDataAccess dataAccess = new FetchInvoiceRunsDataAccess(wrapper.WeeeContext); // Act IReadOnlyList<Domain.Charges.InvoiceRun> results = await dataAccess.FetchInvoiceRunsAsync(domainAuthority1); // Assert Assert.NotNull(results); Assert.Equal(1, results.Count); Assert.Equal(new Guid("CE7A2617-AE16-403E-A7BF-BF01AD223872"), results[0].Id); } }
public async void DataAccess_ReturnsOnlyB2CSchemeForProducer_WhenTheyAreRegisteredB2BandB2COverTwoSchemesInCurrentYear() { using (var db = new DatabaseWrapper()) { //Arrange ModelHelper helper = new ModelHelper(db.Model); var scheme1 = helper.CreateScheme(); scheme1.ApprovalNumber = "WEE/TE0001ST/SCH"; var scheme2 = helper.CreateScheme(); scheme2.ApprovalNumber = "WEE/TE0002ST/SCH"; //Previous Year Data //This test is registering the producer over two schemes in the previous year as well as the current //year to test the additional complexity var memberUpload2000s1 = helper.CreateSubmittedMemberUpload(scheme1); memberUpload2000s1.ComplianceYear = 2000; var prod1_2000s1 = helper.CreateProducerAsCompany(memberUpload2000s1, "PRN123", "B2B"); var dataReturnVersion1 = helper.CreateDataReturnVersion(scheme1, 2000, 1); helper.CreateEeeOutputAmount(dataReturnVersion1, prod1_2000s1.RegisteredProducer, "B2B", 1, 500); var memberUpload2000s2 = helper.CreateSubmittedMemberUpload(scheme2); memberUpload2000s2.ComplianceYear = 2000; var prod1_2000s2 = helper.CreateProducerAsCompany(memberUpload2000s2, "PRN123", "B2C"); var dataReturnVersion2 = helper.CreateDataReturnVersion(scheme2, 2000, 1); helper.CreateEeeOutputAmount(dataReturnVersion2, prod1_2000s2.RegisteredProducer, "B2C", 1, 70); //Current Year Data var memberUpload2001s1 = helper.CreateSubmittedMemberUpload(scheme1); memberUpload2001s1.ComplianceYear = 2001; var prod1_2001s1 = helper.CreateProducerAsCompany(memberUpload2001s1, "PRN123", "B2C"); var dataReturnVersion3 = helper.CreateDataReturnVersion(scheme1, 2001, 1); helper.CreateEeeOutputAmount(dataReturnVersion3, prod1_2001s1.RegisteredProducer, "B2C", 1, 5000); var memberUpload2001s2 = helper.CreateSubmittedMemberUpload(scheme2); memberUpload2001s2.ComplianceYear = 2001; helper.CreateProducerAsCompany(memberUpload2001s2, "PRN123", "B2B"); db.Model.SaveChanges(); // Act GetSchemeObligationCsvDataProcessor obligationDataAccess = new GetSchemeObligationCsvDataProcessor(db.WeeeContext); var results = await obligationDataAccess.FetchObligationsForComplianceYearAsync(2001); // Assert Assert.NotNull(results); Assert.Equal(1, results.Count); SchemeObligationCsvData result1 = results.Find(x => (x.ApprovalNumber == "WEE/TE0001ST/SCH")); Assert.Equal("PRN123", result1.PRN); Assert.Equal("B2C", result1.ObligationTypeForPreviousYear); Assert.Equal("B2C", result1.ObligationTypeForSelectedYear); Assert.Equal(70, result1.Cat1B2CTotal); } }
public async Task FetchSumissions_ForYearandScheme_ReturnsSubmittedSubmissions() { using (DatabaseWrapper database = new DatabaseWrapper()) { ModelHelper helper = new ModelHelper(database.Model); // Arrange Scheme scheme1 = helper.CreateScheme(); Scheme scheme2 = helper.CreateScheme(); var user1 = helper.CreateUser("*****@*****.**"); var user2 = helper.CreateUser("*****@*****.**"); MemberUpload memberUpload1 = helper.CreateMemberUpload(scheme1); memberUpload1.ComplianceYear = 2005; memberUpload1.IsSubmitted = true; memberUpload1.SubmittedDate = new DateTime(2015, 09, 22, 10, 45, 45); memberUpload1.SubmittedByUserId = user1.Id; MemberUpload memberUpload2 = helper.CreateMemberUpload(scheme1); memberUpload2.ComplianceYear = 2006; memberUpload2.IsSubmitted = true; memberUpload2.SubmittedDate = new DateTime(2015, 08, 10, 12, 25, 35); memberUpload2.SubmittedByUserId = user1.Id; MemberUpload memberUpload3 = helper.CreateMemberUpload(scheme1); memberUpload3.ComplianceYear = 2006; memberUpload3.IsSubmitted = false; memberUpload3.SubmittedDate = new DateTime(2015, 09, 10, 12, 25, 35); memberUpload3.SubmittedByUserId = user1.Id; MemberUpload memberUpload4 = helper.CreateMemberUpload(scheme2); memberUpload4.ComplianceYear = 2006; memberUpload4.IsSubmitted = true; memberUpload4.SubmittedDate = new DateTime(2015, 07, 22, 10, 45, 45); memberUpload4.SubmittedByUserId = user2.Id; database.Model.SaveChanges(); // Act GetSubmissionsHistoryResultsDataAccess dataAccess = new GetSubmissionsHistoryResultsDataAccess(database.WeeeContext); var results = await dataAccess.GetSubmissionsHistory(scheme1.Id, 2006); // Assert Assert.NotNull(results.Data); Assert.Equal(1, results.Data.Count); var result1 = results.Data.SingleOrDefault(r => r.Year == 2006); Assert.NotNull(result1); Assert.Equal("08/10/2015 12:25:35", result1.DateTime.ToString(CultureInfo.InvariantCulture)); Assert.Equal("Test LastName", result1.SubmittedBy); } }
public async Task FetchSumissions_ForYearandScheme_ReturnsSubmittedSubmissionsWithCorrectnumberOfWarnings() { using (DatabaseWrapper database = new DatabaseWrapper()) { ModelHelper helper = new ModelHelper(database.Model); // Arrange Scheme scheme1 = helper.CreateScheme(); Scheme scheme2 = helper.CreateScheme(); var user1 = helper.CreateUser("*****@*****.**"); var user2 = helper.CreateUser("*****@*****.**"); MemberUpload memberUpload1 = helper.CreateMemberUpload(scheme1); memberUpload1.ComplianceYear = 2006; memberUpload1.IsSubmitted = true; memberUpload1.SubmittedDate = new DateTime(2015, 09, 23, 10, 45, 45); memberUpload1.SubmittedByUserId = user1.Id; MemberUpload memberUpload2 = helper.CreateMemberUpload(scheme1); memberUpload2.ComplianceYear = 2006; memberUpload2.IsSubmitted = true; memberUpload2.SubmittedDate = new DateTime(2015, 08, 4, 12, 24, 35); memberUpload2.SubmittedByUserId = user1.Id; MemberUpload memberUpload3 = helper.CreateMemberUpload(scheme1); memberUpload3.ComplianceYear = 2006; memberUpload3.IsSubmitted = false; memberUpload3.SubmittedDate = new DateTime(2015, 08, 10, 12, 25, 32); memberUpload3.SubmittedByUserId = user1.Id; MemberUpload memberUpload4 = helper.CreateMemberUpload(scheme2); memberUpload4.ComplianceYear = 2006; memberUpload4.IsSubmitted = true; memberUpload4.SubmittedDate = new DateTime(2015, 07, 31, 10, 25, 45); memberUpload4.SubmittedByUserId = user2.Id; helper.CreateMemberUploadError(memberUpload2); helper.CreateMemberUploadError(memberUpload2); database.Model.SaveChanges(); // Act GetSubmissionsHistoryResultsDataAccess dataAccess = new GetSubmissionsHistoryResultsDataAccess(database.WeeeContext); var results = await dataAccess.GetSubmissionsHistory(scheme1.Id, 2006); // Assert Assert.NotNull(results.Data); Assert.Equal(2, results.Data.Count); Assert.Collection(results.Data, r1 => Assert.Equal(0, r1.NoOfWarnings), r2 => Assert.Equal(2, r2.NoOfWarnings)); } }
public async Task Execute_HappyPath_ReturnsProducerEeeForPreviousYear() { using (DatabaseWrapper db = new DatabaseWrapper()) { //Arrange ModelHelper helper = new ModelHelper(db.Model); var scheme = helper.CreateScheme(); scheme.ApprovalNumber = "WEE/TE0000ST/SCH"; //Previous Year Data var memberUpload2000 = helper.CreateSubmittedMemberUpload(scheme); memberUpload2000.ComplianceYear = 2000; var prod1_2000 = helper.CreateProducerAsCompany(memberUpload2000, "PRN123", "B2C"); var prod2_2000 = helper.CreateProducerAsCompany(memberUpload2000, "PRN456", "B2B"); var dataReturnVersion1 = helper.CreateDataReturnVersion(scheme, 2000, 1); var dataReturnVersion2 = helper.CreateDataReturnVersion(scheme, 2000, 2); helper.CreateEeeOutputAmount(dataReturnVersion1, prod1_2000.RegisteredProducer, "B2C", 1, 100); helper.CreateEeeOutputAmount(dataReturnVersion2, prod1_2000.RegisteredProducer, "B2C", 2, 1000); helper.CreateEeeOutputAmount(dataReturnVersion1, prod2_2000.RegisteredProducer, "B2B", 2, 400); //Current Year Data var memberUpload2001 = helper.CreateSubmittedMemberUpload(scheme); memberUpload2001.ComplianceYear = 2001; var prod1_2001 = helper.CreateProducerAsCompany(memberUpload2001, "PRN123", "B2C"); var prod2_2001 = helper.CreateProducerAsCompany(memberUpload2001, "PRN456", "B2B"); var dataReturnVersion3 = helper.CreateDataReturnVersion(scheme, 2001, 1); var dataReturnVersion4 = helper.CreateDataReturnVersion(scheme, 2001, 2); helper.CreateEeeOutputAmount(dataReturnVersion3, prod1_2001.RegisteredProducer, "B2C", 1, 3000); helper.CreateEeeOutputAmount(dataReturnVersion4, prod1_2001.RegisteredProducer, "B2C", 2, 600); helper.CreateEeeOutputAmount(dataReturnVersion3, prod2_2001.RegisteredProducer, "B2B", 2, 9000); db.Model.SaveChanges(); // Act var results = await db.StoredProcedures.SpgSchemeObligationDataCsv(2001); //Assert Assert.NotNull(results); //Producer with only B2B (both years) should not be in data SchemeObligationCsvData b2bProducer = results.Find(x => (x.PRN == "PRN456")); Assert.Null(b2bProducer); Assert.Equal(1, results.Count); SchemeObligationCsvData result = results[0]; Assert.Equal("test scheme name", result.SchemeName); Assert.Equal("WEE/TE0000ST/SCH", result.ApprovalNumber); Assert.Equal("PRN123", result.PRN); Assert.Equal(100, result.Cat1B2CTotal); Assert.Equal(1000, result.Cat2B2CTotal); Assert.Null(result.Cat3B2CTotal); } }
public async Task Execute_ReturnsCorrectTotalsForCategories_OfB2COnlyForPreviousYearOfCorrectProducer() { using (DatabaseWrapper db = new DatabaseWrapper()) { //Arrange ModelHelper helper = new ModelHelper(db.Model); var scheme = helper.CreateScheme(); scheme.ApprovalNumber = "WEE/TE0000ST/SCH"; //Previous Year Data var memberUpload2000 = helper.CreateSubmittedMemberUpload(scheme); memberUpload2000.ComplianceYear = 2000; var prod1_2000 = helper.CreateProducerAsCompany(memberUpload2000, "PRN123", "Both"); var prod2_2000 = helper.CreateProducerAsCompany(memberUpload2000, "PRN456", "B2C"); var dataReturnVersion1 = helper.CreateDataReturnVersion(scheme, 2000, 1); var dataReturnVersion2 = helper.CreateDataReturnVersion(scheme, 2000, 2); helper.CreateEeeOutputAmount(dataReturnVersion1, prod1_2000.RegisteredProducer, "B2C", 1, 100); // Prod1 Cat1 B2C Q1 helper.CreateEeeOutputAmount(dataReturnVersion1, prod1_2000.RegisteredProducer, "B2C", 2, 500); // Prod1 Cat2 B2C Q1 helper.CreateEeeOutputAmount(dataReturnVersion2, prod1_2000.RegisteredProducer, "B2C", 2, 1000); // Prod1 Cat2 B2C Q2 helper.CreateEeeOutputAmount(dataReturnVersion1, prod1_2000.RegisteredProducer, "B2B", 2, 50); // Prod1 Cat2 B2B Q1 helper.CreateEeeOutputAmount(dataReturnVersion1, prod2_2000.RegisteredProducer, "B2C", 2, 400); // Prod2 Cat2 B2C Q1 //Current Year Data var memberUpload2001 = helper.CreateSubmittedMemberUpload(scheme); memberUpload2001.ComplianceYear = 2001; var prod1_2001 = helper.CreateProducerAsCompany(memberUpload2001, "PRN123", "B2C"); var prod2_2001 = helper.CreateProducerAsCompany(memberUpload2001, "PRN456", "B2B"); var dataReturnVersion3 = helper.CreateDataReturnVersion(scheme, 2001, 1); var dataReturnVersion4 = helper.CreateDataReturnVersion(scheme, 2001, 2); helper.CreateEeeOutputAmount(dataReturnVersion3, prod1_2001.RegisteredProducer, "B2C", 1, 3000); helper.CreateEeeOutputAmount(dataReturnVersion4, prod1_2001.RegisteredProducer, "B2C", 2, 600); helper.CreateEeeOutputAmount(dataReturnVersion3, prod2_2001.RegisteredProducer, "B2B", 2, 9000); db.Model.SaveChanges(); // Act var results = await db.StoredProcedures.SpgSchemeObligationDataCsv(2001); //Assert Assert.NotNull(results); Assert.Equal(2, results.Count); SchemeObligationCsvData firstProducer = results.Find(x => (x.PRN == "PRN123")); Assert.Equal("PRN123", firstProducer.PRN); Assert.Equal(100, firstProducer.Cat1B2CTotal); Assert.Equal(1500, firstProducer.Cat2B2CTotal); Assert.Null(firstProducer.Cat3B2CTotal); } }