public async Task CanCreateNonObligatedWeeeEntry(bool dcf) { using (DatabaseWrapper database = new DatabaseWrapper()) { var context = database.WeeeContext; var name = "Test Name" + Guid.NewGuid(); var tradingName = "Test Trading Name" + Guid.NewGuid(); const string crn = "ABC12345"; var organisation = Organisation.CreateRegisteredCompany(name, crn, tradingName); context.Organisations.Add(organisation); await context.SaveChangesAsync(); var quarter = new Quarter(2019, QuarterType.Q1); var aatfReturn = new Return(organisation, quarter, database.Model.AspNetUsers.First().Id, FacilityType.Aatf); var categoryValues = new List <NonObligatedValue>(); foreach (var category in Enum.GetValues(typeof(WeeeCategory)).Cast <WeeeCategory>()) { categoryValues.Add(new NonObligatedValue((int)category, (int)category, dcf, Guid.NewGuid())); } var nonObligatedRequest = new AddNonObligated { ReturnId = aatfReturn.Id, OrganisationId = organisation.Id, CategoryValues = categoryValues }; var nonObligatedWee = new List <NonObligatedWeee>(); foreach (var categoryValue in nonObligatedRequest.CategoryValues) { nonObligatedWee.Add(new NonObligatedWeee(aatfReturn, categoryValue.CategoryId, categoryValue.Dcf, categoryValue.Tonnage)); } var dataAccess = new NonObligatedDataAccess(database.WeeeContext); await dataAccess.Submit(nonObligatedWee); var thisTestNonObligatedWeeeArray = context.NonObligatedWeee.Where(o => o.ReturnId == aatfReturn.Id).ToArray(); Assert.NotNull(thisTestNonObligatedWeeeArray); Assert.NotEmpty(thisTestNonObligatedWeeeArray); foreach (var category in Enum.GetValues(typeof(WeeeCategory)).Cast <WeeeCategory>()) { var foundCategory = thisTestNonObligatedWeeeArray.FirstOrDefault(o => o.CategoryId == (int)category); foundCategory.Should().NotBeNull(); var indexNum = (int)category - 1; Assert.Equal(foundCategory.Dcf, nonObligatedWee[indexNum].Dcf); Assert.Equal(foundCategory.Tonnage, nonObligatedWee[indexNum].Tonnage); Assert.Equal(foundCategory.ReturnId, nonObligatedWee[indexNum].ReturnId); } } }
public async Task FetchObligatedWeeeForReturn_ReturnedListShouldContainAllTonnagesFromRequest() { using (var database = new DatabaseWrapper()) { var companyName = "Test Name" + Guid.NewGuid(); var tradingName = "Test Trading Name" + Guid.NewGuid(); const string companyRegistrationNumber = "ABC12345"; var organisation = Organisation.CreateRegisteredCompany(companyName, companyRegistrationNumber, tradingName); var @return = new Return(organisation, new Quarter(2019, QuarterType.Q1), database.Model.AspNetUsers.First().Id, FacilityType.Aatf); var aatf = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation); database.WeeeContext.Organisations.Add(organisation); database.WeeeContext.Aatfs.Add(aatf); database.WeeeContext.Returns.Add(@return); await database.WeeeContext.SaveChangesAsync(); var addObligatedReusedDataAccess = new ObligatedReusedDataAccess(database.WeeeContext); var categoryValues = new List <ObligatedValue>(); var weeeReused = new WeeeReused(aatf.Id, @return.Id); foreach (var category in Enum.GetValues(typeof(WeeeCategory)).Cast <WeeeCategory>()) { categoryValues.Add(new ObligatedValue(Guid.NewGuid(), (int)category, (int)category, (int)category)); } var obligatedReusedRequest = new AddObligatedReused() { AatfId = aatf.Id, ReturnId = @return.Id, OrganisationId = organisation.Id, CategoryValues = categoryValues }; var weeeReusedAmount = new List <WeeeReusedAmount>(); foreach (var categoryValue in obligatedReusedRequest.CategoryValues) { weeeReusedAmount.Add(new WeeeReusedAmount(weeeReused, categoryValue.CategoryId, categoryValue.HouseholdTonnage, categoryValue.NonHouseholdTonnage)); } var obligateReusedDataAccess = new ObligatedReusedDataAccess(database.WeeeContext); await obligateReusedDataAccess.Submit(weeeReusedAmount); var fetchDataAccess = new FetchObligatedWeeeForReturnDataAccess(database.WeeeContext); var reusedTonnageList = await fetchDataAccess.FetchObligatedWeeeReusedForReturn(@return.Id); var reusedNonHouseholdList = reusedTonnageList.Select(t => t.NonHouseholdTonnage); var reusedHouseholdList = reusedTonnageList.Select(t => t.HouseholdTonnage); foreach (var category in weeeReusedAmount) { reusedNonHouseholdList.Should().Contain(category.NonHouseholdTonnage); reusedHouseholdList.Should().Contain(category.HouseholdTonnage); } } }
public async void GetSchemesExternalHandlerHandleAsync_GivenGetSchemeExternalRequest_ReturnListOfSchemesThatAreApprovedOrWithdrawn() { using (var database = new DatabaseWrapper()) { var context = database.WeeeContext; var mapper = new SchemeMap(A.Fake <IMapper>(), A.Fake <IMap <Address, AddressData> >(), A.Fake <IMap <Contact, ContactData> >()); var name = "Test Name" + Guid.NewGuid(); var tradingName = "Test Trading Name" + Guid.NewGuid(); const string crn = "ABC12345"; var organisationApproved = Organisation.CreateRegisteredCompany(name, crn, tradingName); organisationApproved.OrganisationStatus = OrganisationStatus.Complete; var organisationPending = Organisation.CreateRegisteredCompany(name, crn, tradingName); organisationPending.OrganisationStatus = OrganisationStatus.Complete; var organisationWithdrawn = Organisation.CreateRegisteredCompany(name, crn, tradingName); organisationWithdrawn.OrganisationStatus = OrganisationStatus.Complete; var organisationRejected = Organisation.CreateRegisteredCompany(name, crn, tradingName); organisationRejected.OrganisationStatus = OrganisationStatus.Complete; context.Organisations.Add(organisationApproved); context.Organisations.Add(organisationPending); context.Organisations.Add(organisationWithdrawn); context.Organisations.Add(organisationRejected); await context.SaveChangesAsync(); var schemeApproved = new Scheme(organisationApproved.Id); schemeApproved.SetStatus(SchemeStatus.Approved); context.Schemes.Add(schemeApproved); var schemeApprovedData = mapper.Map(schemeApproved); var schemePending = new Scheme(organisationPending.Id); schemePending.SetStatus(SchemeStatus.Pending); context.Schemes.Add(schemePending); var schemeWithdrawn = new Scheme(organisationWithdrawn.Id); schemeWithdrawn.SetStatus(SchemeStatus.Approved); schemeWithdrawn.SetStatus(SchemeStatus.Withdrawn); context.Schemes.Add(schemeWithdrawn); var schemeWithdrawnData = mapper.Map(schemeWithdrawn); var schemeRejected = new Scheme(organisationRejected.Id); schemeRejected.SetStatus(SchemeStatus.Rejected); context.Schemes.Add(schemeRejected); await context.SaveChangesAsync(); var dataAccess = new GetSchemesDataAccess(database.WeeeContext); var results = await dataAccess.GetCompleteSchemes(); var handler = new GetSchemesExternalHandler(dataAccess, mapper, A.Fake <IWeeeAuthorization>()); var request = new GetSchemesExternal(); var schemeDataList = new List <SchemeData>(); var result = await handler.HandleAsync(request); } }
public static Organisation CreateOrganisation() { var companyName = "Test Name" + Guid.NewGuid(); var tradingName = "Test Trading Name" + Guid.NewGuid(); const string companyRegistrationNumber = "ABC12345"; var organisation = Organisation.CreateRegisteredCompany(companyName, companyRegistrationNumber, tradingName); return(organisation); }
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 Execute_GivenOrganisationNameParameter_OnlyReturnsPartiallyMatchingOrganisationShouldBeReturned() { using (var db = new DatabaseWrapper()) { var organisation = Organisation.CreateRegisteredCompany(fixture.Create <string>(), "1234567", null); var @return1 = CreateSubmittedReturn(db, organisation); db.WeeeContext.Returns.Add(@return1); await db.WeeeContext.SaveChangesAsync(); var results = await db.StoredProcedures.GetNonObligatedWeeeReceivedAtAatf(2019, organisation.OrganisationName.Substring(0, 5)); results.Count(r => r.OrganisationName.Equals(organisation.OrganisationName)).Should().Be(CategoryValues().Count); } }
public async void UpdateAmounts_GivenAmountToUpdate_ContextShouldContainUpdatedAmounts() { using (var database = new DatabaseWrapper()) { var context = database.WeeeContext; var dataAccess = new NonObligatedDataAccess(database.WeeeContext); var companyName = "Test Name" + Guid.NewGuid(); var tradingName = "Test Trading Name" + Guid.NewGuid(); const string companyRegistrationNumber = "ABC12345"; var organisation = Organisation.CreateRegisteredCompany(companyName, companyRegistrationNumber, tradingName); var @return = new Return(organisation, new Quarter(2019, QuarterType.Q1), database.Model.AspNetUsers.First().Id, FacilityType.Aatf); context.Organisations.Add(organisation); context.Returns.Add(@return); await context.SaveChangesAsync(); var nonObligatedWee = new List <NonObligatedWeee>(); foreach (var category in Enum.GetValues(typeof(WeeeCategory)).Cast <WeeeCategory>()) { nonObligatedWee.Add(new NonObligatedWeee(@return, (int)category, false, (int)category)); } await dataAccess.Submit(nonObligatedWee); AssertValues(context, @return.Id); for (var i = 1; i <= Enum.GetValues(typeof(WeeeCategory)).Cast <WeeeCategory>().Count(); i++) { var amount = context.NonObligatedWeee.First(c => c.ReturnId == @return.Id && c.CategoryId == i); await dataAccess.UpdateAmount(amount, i + 1); } for (var i = 1; i <= Enum.GetValues(typeof(WeeeCategory)).Cast <WeeeCategory>().Count(); i++) { var amount = context.NonObligatedWeee.First(c => c.ReturnId == @return.Id && c.CategoryId == i); amount.Tonnage.Should().Be(i + 1); } } }
public async Task Execute_GivenMultipleReturnsForOrganisationInSameQuarterAndYear_OnlyMostRecentDataShouldBeReturned() { using (var db = new DatabaseWrapper()) { var organisation = Organisation.CreateRegisteredCompany(fixture.Create <string>(), "1234567", null); var @return1 = CreateSubmittedReturn(db, organisation); SystemTime.Freeze(DateTime.Now.AddDays(1)); var @return2 = ObligatedWeeeIntegrationCommon.CreateReturn(organisation, db.Model.AspNetUsers.First().Id, FacilityType.Aatf); @return2.UpdateSubmitted(db.Model.AspNetUsers.First().Id, false); SystemTime.Unfreeze(); db.WeeeContext.Returns.Add(@return1); db.WeeeContext.Returns.Add(@return2); await db.WeeeContext.SaveChangesAsync(); var results = await db.StoredProcedures.GetNonObligatedWeeeReceivedAtAatf(2019, null); results.Count(r => r.ReturnId.Equals(@return1.Id)).Should().Be(0); results.Count(r => r.ReturnId.Equals(@return2.Id)).Should().Be(CategoryValues().Count); } }
public async Task Execute_GivenSubmittedReturns_HighLevelDataShouldBeCorrect() { using (var db = new DatabaseWrapper()) { var org1 = Organisation.CreateRegisteredCompany(fixture.Create <string>(), "1234567", null); var org2 = Organisation.CreateRegisteredCompany(fixture.Create <string>(), "1234567", null); var @return1 = CreateSubmittedReturn(db, org1); var @return2 = CreateSubmittedReturn(db, org2); db.WeeeContext.Returns.Add(@return1); db.WeeeContext.Returns.Add(@return2); await db.WeeeContext.SaveChangesAsync(); var results = await db.StoredProcedures.GetNonObligatedWeeeReceivedAtAatf(2019, null); var return1Results = results.Where(r => r.ReturnId.Equals(@return1.Id)); foreach (var nonObligatedWeeeReceivedAtAatfsData in return1Results) { nonObligatedWeeeReceivedAtAatfsData.Year.Should().Be(2019); nonObligatedWeeeReceivedAtAatfsData.Quarter.Should().Be("Q1"); nonObligatedWeeeReceivedAtAatfsData.SubmittedBy.Should().Be(db.Model.AspNetUsers.First().FirstName + " " + db.Model.AspNetUsers.First().Surname); nonObligatedWeeeReceivedAtAatfsData.SubmittedDate.Value.Date.Should().Be(@return1.SubmittedDate.Value.Date); nonObligatedWeeeReceivedAtAatfsData.OrganisationName.Should().Be(org1.OrganisationName); } var return2Results = results.Where(r => r.ReturnId.Equals(@return2.Id)); foreach (var nonObligatedWeeeReceivedAtAatfsData in return2Results) { nonObligatedWeeeReceivedAtAatfsData.Year.Should().Be(2019); nonObligatedWeeeReceivedAtAatfsData.Quarter.Should().Be("Q1"); nonObligatedWeeeReceivedAtAatfsData.SubmittedBy.Should().Be(db.Model.AspNetUsers.First().FirstName + " " + db.Model.AspNetUsers.First().Surname); nonObligatedWeeeReceivedAtAatfsData.SubmittedDate.Value.Date.Should().Be(@return2.SubmittedDate.Value.Date); nonObligatedWeeeReceivedAtAatfsData.OrganisationName.Should().Be(org2.OrganisationName); } } }
public async Task FetchObligatedWeeeForReturn_ReturnedListShouldContainAllTonnagesFromRequest() { using (var database = new DatabaseWrapper()) { var companyName = "Test Name" + Guid.NewGuid(); var tradingName = "Test Trading Name" + Guid.NewGuid(); const string companyRegistrationNumber = "ABC12345"; var organisation = Organisation.CreateRegisteredCompany(companyName, companyRegistrationNumber, tradingName); var scheme = new Scheme(organisation); var competentAuthority = database.WeeeContext.UKCompetentAuthorities.FirstOrDefault(); var country = await database.WeeeContext.Countries.SingleAsync(c => c.Name == "France"); var contact = new AatfContact("First Name", "Last Name", "Manager", "1 Address Lane", "Address Ward", "Town", "County", "Postcode", country, "01234 567890", "*****@*****.**"); var aatf = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation); var @return = new Return(organisation, new Quarter(2019, QuarterType.Q1), database.Model.AspNetUsers.First().Id, FacilityType.Aatf); database.WeeeContext.Organisations.Add(organisation); database.WeeeContext.Schemes.Add(scheme); database.WeeeContext.Aatfs.Add(aatf); database.WeeeContext.Returns.Add(@return); await database.WeeeContext.SaveChangesAsync(); var addObligatedReceivedDataAccess = new ObligatedReceivedDataAccess(database.WeeeContext); var categoryValues = new List <ObligatedValue>(); var weeeReceived = new WeeeReceived(scheme.Id, aatf.Id, @return.Id); foreach (var category in Enum.GetValues(typeof(WeeeCategory)).Cast <WeeeCategory>()) { categoryValues.Add(new ObligatedValue(Guid.NewGuid(), (int)category, (int)category, (int)category)); } var obligatedReceivedRequest = new AddObligatedReceived() { ReturnId = @return.Id, AatfId = aatf.Id, SchemeId = scheme.Id, OrganisationId = organisation.Id, CategoryValues = categoryValues }; var obligatedReusedRequest = new AddObligatedReused() { AatfId = aatf.Id, ReturnId = @return.Id, OrganisationId = organisation.Id, CategoryValues = categoryValues }; var weeeReceivedAmount = new List <WeeeReceivedAmount>(); var weeeReusedAmount = new List <WeeeReusedAmount>(); foreach (var categoryValue in obligatedReceivedRequest.CategoryValues) { weeeReceivedAmount.Add(new WeeeReceivedAmount(weeeReceived, categoryValue.CategoryId, categoryValue.HouseholdTonnage, categoryValue.NonHouseholdTonnage)); } var obligateReceivedDataAccess = new ObligatedReceivedDataAccess(database.WeeeContext); await obligateReceivedDataAccess.Submit(weeeReceivedAmount); var fetchDataAccess = new FetchObligatedWeeeForReturnDataAccess(database.WeeeContext); var receivedTonnageList = await fetchDataAccess.FetchObligatedWeeeReceivedForReturn(@return.Id); var receivedNonHouseholdList = receivedTonnageList.Select(t => t.NonHouseholdTonnage); var receivedHouseholdList = receivedTonnageList.Select(t => t.HouseholdTonnage); foreach (var category in weeeReceivedAmount) { receivedNonHouseholdList.Should().Contain(category.NonHouseholdTonnage); receivedHouseholdList.Should().Contain(category.HouseholdTonnage); } } }