private async Task CreateReturnToCopy(DateTime?approvalDate = null) { organisation = Organisation.CreateSoleTrader("Test Organisation"); var quarter = new Quarter(2019, QuarterType.Q1); @return = new Domain.AatfReturn.Return(organisation, quarter, database.Model.AspNetUsers.First().Id, FacilityType.Aatf) { ReturnStatus = ReturnStatus.Submitted }; database.WeeeContext.Returns.Add(@return); await database.WeeeContext.SaveChangesAsync(); await AddReturnReportsOn(); await AddReturnScheme(); await AddNonObligated(); await AddWeeeReceived(approvalDate); await AddWeeSentOn(approvalDate); await AddWeeeReused(approvalDate); }
public async Task GetManyByExpression_GivenGetManyByExpressionSpecification_AatfsShouldBeReturned() { using (var database = new DatabaseWrapper()) { var dataAccess = new GenericDataAccess(database.WeeeContext); var organisation = Organisation.CreateSoleTrader("Test Organisation"); var aatf1 = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation); var aatf2 = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation); var organisation2 = Organisation.CreateSoleTrader("Test Organisation 2"); var aatf3 = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation2); database.WeeeContext.Aatfs.Add(aatf1); database.WeeeContext.Aatfs.Add(aatf2); await database.WeeeContext.SaveChangesAsync(); var aatfInfo = await dataAccess.GetManyByExpression(new AatfsByOrganisationSpecification(organisation.Id)); aatfInfo.Count.Should().Be(2); aatfInfo.Where(a => Equals(aatf1)).Should().NotBeNull(); aatfInfo.Where(a => Equals(aatf2)).Should().NotBeNull(); aatfInfo.Where(a => Equals(aatf3)).Should().BeEmpty(); } }
public async Task CreateRegisteredProducer_ProducerIsNotRemoved() { using (DatabaseWrapper database = new DatabaseWrapper()) { var context = database.WeeeContext; var organisation = Organisation.CreateSoleTrader("My trading name"); context.Organisations.Add(organisation); await context.SaveChangesAsync(); var scheme = new Scheme(organisation.Id); context.Schemes.Add(scheme); await context.SaveChangesAsync(); var producer = new RegisteredProducer("ABC12345", 2017, scheme); context.AllRegisteredProducers.Add(producer); await context.SaveChangesAsync(); producer = context.RegisteredProducers .SingleOrDefault(p => p.Id == producer.Id); Assert.NotNull(producer); Assert.False(producer.Removed); Assert.Null(producer.RemovedDate); } }
public async Task RemoveRegisteredProducer_ProducerIsMarkedAsRemovedAndRemovedDateIsSet() { using (DatabaseWrapper database = new DatabaseWrapper()) { var context = database.WeeeContext; var organisation = Organisation.CreateSoleTrader("My trading name"); context.Organisations.Add(organisation); await context.SaveChangesAsync(); var scheme = new Scheme(organisation.Id); context.Schemes.Add(scheme); await context.SaveChangesAsync(); var producer = new RegisteredProducer("ABC12345", 2017, scheme); context.AllRegisteredProducers.Add(producer); SystemTime.Freeze(new DateTime(2016, 10, 1)); producer.Remove(); SystemTime.Unfreeze(); await context.SaveChangesAsync(); producer = context.AllRegisteredProducers .SingleOrDefault(p => p.Id == producer.Id); Assert.NotNull(producer); Assert.True(producer.Removed); Assert.NotNull(producer.RemovedDate); Assert.Equal(new DateTime(2016, 10, 1), producer.RemovedDate); } }
public async Task FetchResultsAsync_WithUnsubmittedReturnData_ReturnsEmptyList() { using (Weee.Tests.Core.Model.DatabaseWrapper wrapper = new Weee.Tests.Core.Model.DatabaseWrapper()) { Organisation organisation = Organisation.CreateSoleTrader("Test Organisation"); Scheme scheme = new Scheme(organisation); Quarter quarter = new Quarter(2099, QuarterType.Q1); DataReturn dataReturn = new DataReturn(scheme, quarter); DataReturnVersion version = new DataReturnVersion(dataReturn); WeeeCollectedAmount amount1 = new WeeeCollectedAmount( WeeeCollectedAmountSourceType.Dcf, ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m); version.WeeeCollectedReturnVersion.AddWeeeCollectedAmount(amount1); wrapper.WeeeContext.DataReturns.Add(dataReturn); await wrapper.WeeeContext.SaveChangesAsync(); // Act FetchSummaryCsvDataAccess dataAccess = new FetchSummaryCsvDataAccess(wrapper.WeeeContext); List <DataReturnSummaryCsvData> results = await dataAccess.FetchResultsAsync(scheme.Id, 2099); // Assert Assert.NotNull(results); Assert.Empty(results); } }
private Return CreateReturn(DatabaseWrapper database) { var organisation = Organisation.CreateSoleTrader("Test Organisation"); var quarter = new Quarter(2019, QuarterType.Q1); return(new Domain.AatfReturn.Return(organisation, quarter, database.Model.AspNetUsers.First().Id, FacilityType.Aatf)); }
private Organisation GetOrganisationWithId(Guid id) { var organisation = Organisation.CreateSoleTrader("Some trading name"); dbHelper.SetId(organisation, id); return(organisation); }
public async Task Execute_GivenWeeeReceivedData_ReturnsPcsAatfDiscrepancyDataShouldBeCorrect() { using (DatabaseWrapper db = new DatabaseWrapper()) { // Arrange Organisation organisation = Organisation.CreateSoleTrader("Test Organisation"); Domain.UKCompetentAuthority authority = db.WeeeContext.UKCompetentAuthorities.Single(c => c.Abbreviation == UKCompetentAuthorityAbbreviationType.EA); var year = 2019; Quarter quarter = new Quarter(year, QuarterType.Q1); Scheme scheme1 = new Scheme(organisation); scheme1.UpdateScheme("Test Scheme 1", "WEE/AH7453NF/SCH", "WEE9462846", Domain.Obligation.ObligationType.B2B, authority); scheme1.SetStatus(Domain.Scheme.SchemeStatus.Approved); Domain.DataReturns.DataReturn dataReturn1 = new Domain.DataReturns.DataReturn(scheme1, quarter); Domain.DataReturns.DataReturnVersion version1 = new Domain.DataReturns.DataReturnVersion(dataReturn1); Domain.DataReturns.WeeeDeliveredAmount amount1 = new Domain.DataReturns.WeeeDeliveredAmount( Domain.Obligation.ObligationType.B2B, WeeeCategory.LargeHouseholdAppliances, 123.456m, new AatfDeliveryLocation("WEE/AA1111AA/ATF", string.Empty)); db.WeeeContext.DataReturns.Add(dataReturn1); db.WeeeContext.DataReturnVersions.Add(version1); version1.WeeeDeliveredReturnVersion.AddWeeeDeliveredAmount(amount1); await db.WeeeContext.SaveChangesAsync(); dataReturn1.SetCurrentVersion(version1); await db.WeeeContext.SaveChangesAsync(); var @return = CreateSubmittedReturn(db, organisation); var aatf = new Aatf("aatfName", db.WeeeContext.UKCompetentAuthorities.First(), "WEE/AA1111AA/ATF", AatfStatus.Approved, organisation, AddressHelper.GetAatfAddress(db), AatfSize.Large, DateTime.Now, ObligatedWeeeIntegrationCommon.CreateDefaultContact(db.WeeeContext.Countries.First()), FacilityType.Aatf, (short)year, null, null); var weeeReceived = new EA.Weee.Domain.AatfReturn.WeeeReceived(scheme1, aatf, @return); var weeeReceivedAmounts = new List <WeeeReceivedAmount>() { new Domain.AatfReturn.WeeeReceivedAmount(weeeReceived, 1, 2, 10) }; db.WeeeContext.Returns.Add(@return); db.WeeeContext.ReturnAatfs.Add(new ReturnAatf(aatf, @return)); db.WeeeContext.WeeeReceived.Add(weeeReceived); db.WeeeContext.WeeeReceivedAmount.AddRange(weeeReceivedAmounts); await db.WeeeContext.SaveChangesAsync(); // Act var results = await db.StoredProcedures.GetPcsAatfComparisonDataCsvData(year, null, string.Empty); var record = results.First(x => x.AatfApprovalNumber == "WEE/AA1111AA/ATF" && x.ObligationType == "B2B"); //Assert Assert.NotNull(record); Assert.Equal("WEE/AA1111AA/ATF", record.AatfApprovalNumber); Assert.Equal(123.456m, record.PcsTonnage); Assert.Equal(10, record.AatfTonnage); Assert.Equal(113.456m, record.DifferenceTonnage); } }
public async Task FetchResultsAsync_WithReturnDataForTowQuarters_ReturnsOneResultForEachQuarter() { using (Weee.Tests.Core.Model.DatabaseWrapper wrapper = new Weee.Tests.Core.Model.DatabaseWrapper()) { // Arrange Organisation organisation = Organisation.CreateSoleTrader("Test Organisation"); Scheme scheme = new Scheme(organisation); Quarter quarter1 = new Quarter(2099, QuarterType.Q1); DataReturn dataReturnQ1 = new DataReturn(scheme, quarter1); DataReturnVersion versionQ1 = new DataReturnVersion(dataReturnQ1); WeeeCollectedAmount amountQ1 = new WeeeCollectedAmount( WeeeCollectedAmountSourceType.Dcf, ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m); versionQ1.WeeeCollectedReturnVersion.AddWeeeCollectedAmount(amountQ1); wrapper.WeeeContext.DataReturns.Add(dataReturnQ1); await wrapper.WeeeContext.SaveChangesAsync(); dataReturnQ1.SetCurrentVersion(versionQ1); await wrapper.WeeeContext.SaveChangesAsync(); Quarter quarter2 = new Quarter(2099, QuarterType.Q2); DataReturn dataReturnQ2 = new DataReturn(scheme, quarter2); DataReturnVersion versionQ2 = new DataReturnVersion(dataReturnQ2); WeeeCollectedAmount amountQ2 = new WeeeCollectedAmount( WeeeCollectedAmountSourceType.Dcf, ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m); versionQ2.WeeeCollectedReturnVersion.AddWeeeCollectedAmount(amountQ2); wrapper.WeeeContext.DataReturns.Add(dataReturnQ2); await wrapper.WeeeContext.SaveChangesAsync(); dataReturnQ2.SetCurrentVersion(versionQ2); await wrapper.WeeeContext.SaveChangesAsync(); // Act FetchSummaryCsvDataAccess dataAccess = new FetchSummaryCsvDataAccess(wrapper.WeeeContext); List <DataReturnSummaryCsvData> results = await dataAccess.FetchResultsAsync(scheme.Id, 2099); // Assert Assert.NotNull(results); Assert.Equal(2, results.Count); Assert.Collection(results, r => Assert.Equal(1, r.Quarter), r => Assert.Equal(2, r.Quarter)); } }
public static Return CreateReturn(Organisation organisation, string createdById, FacilityType facilityType, int year, QuarterType quarter) { if (organisation == null) { organisation = Organisation.CreateSoleTrader("Test Organisation"); } return(new Return(organisation, new Quarter(year, quarter), createdById, facilityType)); }
public async Task CreateTransactionFile_ProducerSubmissionMarkedAsNotInvoiced_NotIncludedInTransactionFile() { // Arrange UKCompetentAuthority authority = A.Dummy <UKCompetentAuthority>(); Organisation organisation = Organisation.CreateSoleTrader("Test organisation"); Scheme scheme = new Scheme(organisation); scheme.UpdateScheme( "Test scheme", "WEE/AA1111AA/SCH", "WEE00000001", A.Dummy <ObligationType>(), authority); int complianceYear = A.Dummy <int>(); MemberUpload memberUpload = new MemberUpload( A.Dummy <Guid>(), A.Dummy <string>(), A.Dummy <List <MemberUploadError> >(), A.Dummy <decimal>(), complianceYear, scheme, A.Dummy <string>()); var producerSubmission = A.Fake <ProducerSubmission>(); A.CallTo(() => producerSubmission.ChargeThisUpdate) .Returns(123.45m); A.CallTo(() => producerSubmission.Invoiced) .Returns(false); memberUpload.ProducerSubmissions.Add(producerSubmission); memberUpload.Submit(A.Dummy <User>()); List <MemberUpload> memberUploads = new List <MemberUpload>(); memberUploads.Add(memberUpload); InvoiceRun invoiceRun = new InvoiceRun(authority, memberUploads, A.Dummy <User>()); ByChargeValueTransactionFileGenerator generator = new ByChargeValueTransactionFileGenerator( A.Dummy <ITransactionReferenceGenerator>()); // Act var result = await generator.CreateAsync(0, invoiceRun); TransactionFile transactionFile = result.IbisFile; // Assert Assert.NotNull(transactionFile); Assert.Equal(0, transactionFile.Invoices.Count); }
public async void GetOrganisationUsers_WithStatusFilter_ReturnsFilteredResults(Core.Shared.UserStatus status) { using (var dbWrapper = new DatabaseWrapper()) { // Add AspNet users var modelHelper = new ModelHelper(dbWrapper.Model); var activeUser = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, fixture.Create <string>().Substring(0, 10), fixture.Create <string>().Substring(0, 10)); var inactiveUser = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, fixture.Create <string>().Substring(0, 10), fixture.Create <string>().Substring(0, 10)); var pendingUser = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, fixture.Create <string>().Substring(0, 10), fixture.Create <string>().Substring(0, 10)); var rejectedUser = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, fixture.Create <string>().Substring(0, 10), fixture.Create <string>().Substring(0, 10)); dbWrapper.Model.SaveChanges(); // Add organisation var organisationName = fixture.Create <string>(); var organisation = Organisation.CreateSoleTrader(organisationName); organisation.CompleteRegistration(); dbWrapper.WeeeContext.Organisations.Add(organisation); dbWrapper.WeeeContext.SaveChanges(); // Add organisation users var organisationUsers = new List <Domain.Organisation.OrganisationUser> { new Domain.Organisation.OrganisationUser(Guid.Parse(activeUser.Id), organisation.Id, UserStatus.Active), new Domain.Organisation.OrganisationUser(Guid.Parse(inactiveUser.Id), organisation.Id, UserStatus.Inactive), new Domain.Organisation.OrganisationUser(Guid.Parse(pendingUser.Id), organisation.Id, UserStatus.Pending), new Domain.Organisation.OrganisationUser(Guid.Parse(rejectedUser.Id), organisation.Id, UserStatus.Rejected) }; dbWrapper.WeeeContext.OrganisationUsers.AddRange(organisationUsers); dbWrapper.WeeeContext.SaveChanges(); var dataAccess = new FindMatchingUsersDataAccess(dbWrapper.WeeeContext); var filter = new UserFilter { Status = status, OrganisationName = organisationName }; var result = await dataAccess.GetOrganisationUsers(filter); UserSearchData organisationUser; if (status == Core.Shared.UserStatus.Active) { Assert.Single(result.Where(r => r.FirstName == activeUser.FirstName)); organisationUser = result.Single(r => r.FirstName == activeUser.FirstName); } else { Assert.Single(result); organisationUser = result.Single(); } Assert.Equal(status, organisationUser.Status); } }
public async Task FetchResultsAsync_WithLargeHouseHoldAppliancesAmount_ReturnsNullForAllOtherCategories() { using (Weee.Tests.Core.Model.DatabaseWrapper wrapper = new Weee.Tests.Core.Model.DatabaseWrapper()) { // Arrange Organisation organisation = Organisation.CreateSoleTrader("Test Organisation"); Scheme scheme = new Scheme(organisation); Quarter quarter = new Quarter(2099, QuarterType.Q1); DataReturn dataReturn = new DataReturn(scheme, quarter); DataReturnVersion version = new DataReturnVersion(dataReturn); WeeeCollectedAmount amount1 = new WeeeCollectedAmount( WeeeCollectedAmountSourceType.Dcf, ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m); version.WeeeCollectedReturnVersion.AddWeeeCollectedAmount(amount1); wrapper.WeeeContext.DataReturns.Add(dataReturn); await wrapper.WeeeContext.SaveChangesAsync(); dataReturn.SetCurrentVersion(version); await wrapper.WeeeContext.SaveChangesAsync(); // Act FetchSummaryCsvDataAccess dataAccess = new FetchSummaryCsvDataAccess(wrapper.WeeeContext); List <DataReturnSummaryCsvData> results = await dataAccess.FetchResultsAsync(scheme.Id, 2099); // Assert Assert.NotNull(results); Assert.Equal(1, results.Count); DataReturnSummaryCsvData result = results[0]; Assert.NotNull(result); Assert.NotNull(result.Category1); Assert.Null(result.Category2); Assert.Null(result.Category3); Assert.Null(result.Category4); Assert.Null(result.Category5); Assert.Null(result.Category6); Assert.Null(result.Category7); Assert.Null(result.Category8); Assert.Null(result.Category9); Assert.Null(result.Category10); Assert.Null(result.Category11); Assert.Null(result.Category12); Assert.Null(result.Category13); Assert.Null(result.Category14); } }
public static Return CreateReturn(Organisation organisation, string createdById, FacilityType facilityType = null) { if (organisation == null) { organisation = Organisation.CreateSoleTrader("Test Organisation"); } if (facilityType == null) { facilityType = FacilityType.Aatf; } return(new Return(organisation, new Quarter(2019, QuarterType.Q1), createdById, facilityType)); }
public async Task CreateTransactionFile_WithFileID_CreatesFileWithCorrectFileID() { // Arrange UKCompetentAuthority authority = A.Dummy <UKCompetentAuthority>(); Organisation organisation = Organisation.CreateSoleTrader("Test organisation"); Scheme scheme = new Scheme(organisation); scheme.UpdateScheme( "Test scheme", "WEE/AA1111AA/SCH", "WEE00000001", A.Dummy <ObligationType>(), authority); int complianceYear = A.Dummy <int>(); MemberUpload memberUpload = new MemberUpload( A.Dummy <Guid>(), A.Dummy <string>(), A.Dummy <List <MemberUploadError> >(), 123.45m, complianceYear, scheme, A.Dummy <string>()); memberUpload.Submit(A.Dummy <User>()); List <MemberUpload> memberUploads = new List <MemberUpload>(); memberUploads.Add(memberUpload); InvoiceRun invoiceRun = new InvoiceRun(authority, memberUploads, A.Dummy <User>()); ITransactionReferenceGenerator transactionReferenceGenerator = A.Fake <ITransactionReferenceGenerator>(); A.CallTo(() => transactionReferenceGenerator.GetNextTransactionReferenceAsync()).Returns("WEE800001H"); ByChargeValueTransactionFileGenerator generator = new ByChargeValueTransactionFileGenerator(transactionReferenceGenerator); ulong id = 12345; // Act var result = await generator.CreateAsync(id, invoiceRun); TransactionFile transactionFile = result.IbisFile; // Assert Assert.Equal((ulong)12345, transactionFile.FileID); }
public async Task FetchResultsAsync_WithSeveralOutputAmounts_ReturnsSumOfAmounts() { using (Weee.Tests.Core.Model.DatabaseWrapper wrapper = new Weee.Tests.Core.Model.DatabaseWrapper()) { // Arrange Organisation organisation = Organisation.CreateSoleTrader("Test Organisation"); Scheme scheme = new Scheme(organisation); RegisteredProducer registeredProducer1 = new RegisteredProducer("WEE/AA1111AA", 2099, scheme); RegisteredProducer registeredProducer2 = new RegisteredProducer("WEE/BB2222BB", 2099, scheme); Quarter quarter = new Quarter(2099, QuarterType.Q1); DataReturn dataReturn = new DataReturn(scheme, quarter); DataReturnVersion version = new DataReturnVersion(dataReturn); EeeOutputAmount amount1 = new EeeOutputAmount( ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 100, registeredProducer1); version.EeeOutputReturnVersion.AddEeeOutputAmount(amount1); EeeOutputAmount amount2 = new EeeOutputAmount( ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 200, registeredProducer2); version.EeeOutputReturnVersion.AddEeeOutputAmount(amount2); wrapper.WeeeContext.DataReturns.Add(dataReturn); await wrapper.WeeeContext.SaveChangesAsync(); dataReturn.SetCurrentVersion(version); await wrapper.WeeeContext.SaveChangesAsync(); // Act FetchSummaryCsvDataAccess dataAccess = new FetchSummaryCsvDataAccess(wrapper.WeeeContext); List <DataReturnSummaryCsvData> results = await dataAccess.FetchResultsAsync(scheme.Id, 2099); // Assert Assert.NotNull(results); Assert.Equal(1, results.Count); DataReturnSummaryCsvData result = results[0]; Assert.NotNull(result); Assert.Equal(300, result.Category1); } }
public async Task CreateTransactionFile_WithExceptionThrown_ReturnsError_AndNoTransactionFile() { // Arrange UKCompetentAuthority authority = A.Dummy <UKCompetentAuthority>(); Organisation organisation = Organisation.CreateSoleTrader("Test organisation"); Scheme scheme = new Scheme(organisation); scheme.UpdateScheme( "Test scheme", "WEE/AA1111AA/SCH", "WEE00000001", A.Dummy <ObligationType>(), authority); int complianceYear = A.Dummy <int>(); MemberUpload memberUpload = new MemberUpload( A.Dummy <Guid>(), A.Dummy <string>(), A.Dummy <List <MemberUploadError> >(), 123.45m, complianceYear, scheme, A.Dummy <string>(), A.Dummy <string>(), false); memberUpload.Submit(A.Dummy <User>()); List <MemberUpload> memberUploads = new List <MemberUpload>(); memberUploads.Add(memberUpload); ITransactionReferenceGenerator transactionReferenceGenerator = A.Fake <ITransactionReferenceGenerator>(); A.CallTo(() => transactionReferenceGenerator.GetNextTransactionReferenceAsync()).Returns((string)null); // A null value will cause the Ibis object to throw an exception. BySubmissionTransactionFileGenerator generator = new BySubmissionTransactionFileGenerator(transactionReferenceGenerator); InvoiceRun invoiceRun = new InvoiceRun(authority, memberUploads, A.Dummy <User>()); // Act var result = await generator.CreateAsync(0, invoiceRun); // Assert Assert.Null(result.IbisFile); Assert.NotEmpty(result.Errors); }
public async void GetOrganisationUsers_SameUserRejectedMultipleTimesForOneOrganisation_ButAlsoHasAnotherStatus_ReturnsTheOtherStatus(Core.Shared.UserStatus status) { using (var dbWrapper = new DatabaseWrapper()) { // Add AspNet 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 organisation = Organisation.CreateSoleTrader(uniqueOrgName); 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(new UserFilter())) .Where(ou => ou.OrganisationName == uniqueOrgName); Assert.Single(result); var organisationUser = result.Single(); Assert.Equal(status, organisationUser.Status); } }
public async void GetOrganisationUsers_WithOrganisationNameFilter_ReturnsMultipleFilteredResults() { using (var dbWrapper = new DatabaseWrapper()) { // Add AspNet user var modelHelper = new ModelHelper(dbWrapper.Model); var user = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, fixture.Create <string>().Substring(0, 10), fixture.Create <string>().Substring(0, 10)); dbWrapper.Model.SaveChanges(); // Add organisations var organisationOneName = "Waste"; var organisationTwoName = "Trash"; var organisationThreeName = "Recycling"; var organisationOne = Organisation.CreateSoleTrader(organisationOneName); var organisationTwo = Organisation.CreatePartnership(organisationTwoName); var organisationThree = Organisation.CreateRegisteredCompany(organisationThreeName, fixture.Create <string>().Substring(0, 15)); organisationOne.CompleteRegistration(); organisationTwo.CompleteRegistration(); organisationThree.CompleteRegistration(); dbWrapper.WeeeContext.Organisations.Add(organisationOne); dbWrapper.WeeeContext.Organisations.Add(organisationTwo); dbWrapper.WeeeContext.Organisations.Add(organisationThree); dbWrapper.WeeeContext.SaveChanges(); // Add organisation users var organisationUsers = new List <Domain.Organisation.OrganisationUser> { new Domain.Organisation.OrganisationUser(Guid.Parse(user.Id), organisationOne.Id, UserStatus.Active), new Domain.Organisation.OrganisationUser(Guid.Parse(user.Id), organisationTwo.Id, UserStatus.Active), new Domain.Organisation.OrganisationUser(Guid.Parse(user.Id), organisationThree.Id, UserStatus.Active) }; dbWrapper.WeeeContext.OrganisationUsers.AddRange(organisationUsers); dbWrapper.WeeeContext.SaveChanges(); var dataAccess = new FindMatchingUsersDataAccess(dbWrapper.WeeeContext); var filter = new UserFilter { OrganisationName = "as" }; var result = await dataAccess.GetOrganisationUsers(filter); Assert.Equal(2, result.Count()); Assert.Single(result.Where(r => r.OrganisationName == organisationOneName)); Assert.Single(result.Where(r => r.OrganisationName == organisationTwoName)); } }
public async Task GetByComplianceYearAndYear_ReturnsWithMatchingQuarterAndFacilityType_ReturnsShouldBeReturned() { using (var database = new DatabaseWrapper()) { var modelHelper = new ModelHelper(database.Model); var organisation = Organisation.CreateSoleTrader("Test Organisation"); var organisation2 = Organisation.CreateSoleTrader("Test Organisation"); var @return1 = CreateReturn(database, organisation); var @return2 = CreateReturn(database, organisation); var @return3 = CreateReturn(database, organisation, new Quarter(2019, QuarterType.Q2), FacilityType.Aatf); var @return4 = CreateReturn(database, organisation, new Quarter(2019, QuarterType.Q3), FacilityType.Aatf); var @return5 = CreateReturn(database, organisation, new Quarter(2019, QuarterType.Q4), FacilityType.Aatf); var @return6 = CreateReturn(database, organisation, new Quarter(2018, QuarterType.Q1), FacilityType.Aatf); var @return7 = CreateReturn(database, organisation2); var @return8 = CreateReturn(database, organisation, new Quarter(2019, QuarterType.Q1), FacilityType.Ae); var dataAccess = new ReturnDataAccess(database.WeeeContext); await dataAccess.Submit(@return1); await dataAccess.Submit(@return2); await dataAccess.Submit(@return3); await dataAccess.Submit(@return4); await dataAccess.Submit(@return5); await dataAccess.Submit(@return6); await dataAccess.Submit(@return7); await dataAccess.Submit(@return8); var results = await dataAccess.GetByComplianceYearAndQuarter(@return1); results.Count.Should().Be(2); results.Count(r => r.Quarter.Year != 2019).Should().Be(0); results.Count(r => r.Id != @return1.Id && r.Id != @return2.Id).Should().Be(0); results.Count(r => r.Organisation.Id != @return1.Organisation.Id).Should().Be(0); results.Count(r => r.FacilityType != @return1.FacilityType).Should().Be(0); } }
public async Task Remove_GivenNullEntity_EntityStateShouldNotBeUpdated() { using (var database = new DatabaseWrapper()) { var dataAccess = new GenericDataAccess(database.WeeeContext); var competentAuthorityDataAccess = new CommonDataAccess(database.WeeeContext); var organisation = Organisation.CreateSoleTrader("Test Organisation"); var aatf = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation); database.WeeeContext.Aatfs.Add(ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation)); await database.WeeeContext.SaveChangesAsync(); dataAccess.Remove <Aatf>(null); database.WeeeContext.ChangeTracker.Entries().Count(e => e.State == EntityState.Deleted).Should().Be(0); } }
public async Task FetchResultsAsync_WithQ1ReturnDataWithDeliveredToAeB2CAmount_ReturnsOneResultForQ1Type1Source1B2C() { using (Weee.Tests.Core.Model.DatabaseWrapper wrapper = new Weee.Tests.Core.Model.DatabaseWrapper()) { // Arrange Organisation organisation = Organisation.CreateSoleTrader("Test Organisation"); Scheme scheme = new Scheme(organisation); Quarter quarter = new Quarter(2099, QuarterType.Q1); DataReturn dataReturn = new DataReturn(scheme, quarter); DataReturnVersion version = new DataReturnVersion(dataReturn); WeeeDeliveredAmount amount1 = new WeeeDeliveredAmount( ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m, new AeDeliveryLocation("WEE/AA1111AA/AE", string.Empty)); version.WeeeDeliveredReturnVersion.AddWeeeDeliveredAmount(amount1); wrapper.WeeeContext.DataReturns.Add(dataReturn); await wrapper.WeeeContext.SaveChangesAsync(); dataReturn.SetCurrentVersion(version); await wrapper.WeeeContext.SaveChangesAsync(); // Act FetchSummaryCsvDataAccess dataAccess = new FetchSummaryCsvDataAccess(wrapper.WeeeContext); List <DataReturnSummaryCsvData> results = await dataAccess.FetchResultsAsync(scheme.Id, 2099); // Assert Assert.NotNull(results); Assert.Equal(1, results.Count); DataReturnSummaryCsvData result = results[0]; Assert.NotNull(result); Assert.Equal(1, result.Quarter); Assert.Equal(1, result.Type); Assert.Equal(1, result.Source); Assert.Equal("B2C", result.ObligationType); } }
public async void GetOrganisationUsers_WithFullNameFilter_ReturnsFilteredResults() { using (var dbWrapper = new DatabaseWrapper()) { // Add AspNet users var modelHelper = new ModelHelper(dbWrapper.Model); var userOne = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, "Marshall", "Eriksen"); var userTwo = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, "Lily", "Aldrin"); var userThree = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, "Barney", "Stinson"); dbWrapper.Model.SaveChanges(); // Add organisation var organisationName = fixture.Create <string>(); var organisation = Organisation.CreateSoleTrader(organisationName); organisation.CompleteRegistration(); dbWrapper.WeeeContext.Organisations.Add(organisation); dbWrapper.WeeeContext.SaveChanges(); // Add organisation users var organisationUsers = new List <Domain.Organisation.OrganisationUser> { new Domain.Organisation.OrganisationUser(Guid.Parse(userOne.Id), organisation.Id, UserStatus.Active), new Domain.Organisation.OrganisationUser(Guid.Parse(userTwo.Id), organisation.Id, UserStatus.Active), new Domain.Organisation.OrganisationUser(Guid.Parse(userThree.Id), organisation.Id, UserStatus.Active) }; dbWrapper.WeeeContext.OrganisationUsers.AddRange(organisationUsers); dbWrapper.WeeeContext.SaveChanges(); var dataAccess = new FindMatchingUsersDataAccess(dbWrapper.WeeeContext); var filter = new UserFilter { Name = "y s" }; var result = await dataAccess.GetOrganisationUsers(filter); Assert.Single(result); var organisationUser = result.Single(); Assert.Equal(userThree.FirstName, organisationUser.FirstName); Assert.Equal(userThree.Surname, organisationUser.LastName); } }
public async Task GetAll_AllEntitiesShouldBeReturned() { using (var database = new DatabaseWrapper()) { var dataAccess = new GenericDataAccess(database.WeeeContext); var organisation = Organisation.CreateSoleTrader("Test Organisation"); var aatf1 = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation); var aatf2 = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation); await dataAccess.AddMany <Aatf>(new List <Aatf>() { aatf1, aatf2 }); await database.WeeeContext.SaveChangesAsync(); var count = database.WeeeContext.Aatfs.Count(); var aatfInfo = await dataAccess.GetAll <Aatf>(); aatfInfo.ToList().Count.Should().Be(count); } }
public async Task AddMany_EntityShouldBeAdded() { using (var database = new DatabaseWrapper()) { var originalAatfCount = database.WeeeContext.Aatfs.Count(); var dataAccess = new GenericDataAccess(database.WeeeContext); var organisation = Organisation.CreateSoleTrader("Test Organisation"); var aatf1 = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation); var aatf2 = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation); await dataAccess.AddMany <Aatf>(new List <Aatf>() { aatf1, aatf2 }); var dbNewAatfs = database.WeeeContext.Aatfs.Count() - originalAatfCount; database.WeeeContext.Aatfs.Where(a => Equals(aatf1)).Should().NotBeNull(); database.WeeeContext.Aatfs.Where(a => Equals(aatf2)).Should().NotBeNull(); dbNewAatfs.Should().Be(2); } }
public async Task GetByOrganisationId_GivenOrganisationIdReturnsAreReturned() { using (var database = new DatabaseWrapper()) { var modelHelper = new ModelHelper(database.Model); var organisation = Organisation.CreateSoleTrader("Test Organisation"); var @return1 = CreateReturn(database, organisation); var @return2 = CreateReturn(database, organisation); var dataAccess = new ReturnDataAccess(database.WeeeContext); await dataAccess.Submit(@return1); await dataAccess.Submit(@return2); var result = await dataAccess.GetByOrganisationId(organisation.Id); result.Should().NotBeNull(); result.Count().Should().Be(2); } }
private async Task CreateScheme(DatabaseWrapper db) { const Domain.Obligation.ObligationType obligationType = Domain.Obligation.ObligationType.B2B; var contact = new Domain.Organisation.Contact("firstName", "LastName", "Position"); Organisation organisation = Organisation.CreateSoleTrader("Test Organisation"); var address = new Address("address1", "address2", "town", "county", "postcode", db.WeeeContext.Countries.First(), "telephone", "email"); organisation.AddOrUpdateAddress(Domain.AddressType.RegisteredOrPPBAddress, address); Domain.UKCompetentAuthority authority = db.WeeeContext.UKCompetentAuthorities.Single(c => c.Abbreviation == UKCompetentAuthorityAbbreviationType.EA); Scheme scheme1 = new Scheme(organisation); scheme1.UpdateScheme("BBB", "TT", "Test", obligationType, authority); scheme1.AddOrUpdateMainContactPerson(contact); scheme1.AddOrUpdateAddress(address); db.WeeeContext.Organisations.Add(organisation); db.WeeeContext.Schemes.Add(scheme1); await db.WeeeContext.SaveChangesAsync(); }
public void ContactAddedToExistingScheme_SchemeUpdateIsAudited_ContactCreateIsAudited() { using (DatabaseWrapper database = new DatabaseWrapper()) { var context = database.WeeeContext; var organisation = Organisation.CreateSoleTrader("test name"); var scheme = new Scheme(organisation); organisation = context.Organisations.Add(organisation); scheme = context.Schemes.Add(scheme); context.SaveChanges(); // This will reset the change tracker scheme.AddOrUpdateMainContactPerson(new Contact("first", "last", "position")); var schemeChanges = context.ChangeTracker.Entries <Scheme>(); var contactChanges = context.ChangeTracker.Entries <Contact>(); Assert.Equal(EntityState.Added, contactChanges.Single().State); Assert.Equal(EntityState.Modified, schemeChanges.Single().State); } }
public void AddressAddedToExistingScheme_SchemeUpdateIsAudited_AddressCreateIsAudited() { using (DatabaseWrapper database = new DatabaseWrapper()) { var context = database.WeeeContext; var organisation = Organisation.CreateSoleTrader("test name"); var scheme = new Scheme(organisation); organisation = context.Organisations.Add(organisation); scheme = context.Schemes.Add(scheme); context.SaveChanges(); // This will reset the change tracker scheme.AddOrUpdateAddress(ValidAddress()); var schemeChanges = context.ChangeTracker.Entries <Scheme>(); var addressChanges = context.ChangeTracker.Entries <Address>(); Assert.Equal(EntityState.Added, addressChanges.Single().State); Assert.Equal(EntityState.Modified, schemeChanges.Single().State); } }
public async void GetOrganisationUsers_WithOrganisationNameFilterAndMatchingTradingName_DoesNotReturnWhenOrganisationNameDoesNotMatch() { using (var dbWrapper = new DatabaseWrapper()) { // Add AspNet user var modelHelper = new ModelHelper(dbWrapper.Model); var user = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, fixture.Create <string>().Substring(0, 10), fixture.Create <string>().Substring(0, 10)); dbWrapper.Model.SaveChanges(); // Add organisation var organisationName = "Waste"; var organisationTradingName = "Trash"; var organisation = Organisation.CreateSoleTrader(organisationName, organisationTradingName); organisation.CompleteRegistration(); dbWrapper.WeeeContext.Organisations.Add(organisation); dbWrapper.WeeeContext.SaveChanges(); // Add organisation users var organisationUsers = new List <Domain.Organisation.OrganisationUser> { new Domain.Organisation.OrganisationUser(Guid.Parse(user.Id), organisation.Id, UserStatus.Active) }; dbWrapper.WeeeContext.OrganisationUsers.AddRange(organisationUsers); dbWrapper.WeeeContext.SaveChanges(); var dataAccess = new FindMatchingUsersDataAccess(dbWrapper.WeeeContext); var filter = new UserFilter { OrganisationName = "Trash" }; var result = await dataAccess.GetOrganisationUsers(filter); Assert.Equal(0, result.Count()); } }