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 GetSchemesExternalHandlerTests() { dataAccess = A.Fake <RequestHandlers.Scheme.IGetSchemesDataAccess>(); schemeMap = A.Fake <IMap <Scheme, SchemeData> >(); authorization = A.Fake <IWeeeAuthorization>(); context = A.Fake <WeeeContext>(); handler = new GetSchemesExternalHandler(dataAccess, schemeMap, authorization); }
public async Task HandleAsync_GivenGetSchemeExternalRequest_ReturnsSchemesSortedBySchemeNameAsync() { var request = new GetSchemesExternal(); Organisation organisation = Organisation.CreateSoleTrader("Test Organisation"); Scheme scheme1 = new Scheme(organisation); scheme1.UpdateScheme("Scheme D", "WEE/11AAAA11/SCH", "WEE1234567", ObligationType.Both, A.Dummy <UKCompetentAuthority>()); scheme1.SetStatus(SchemeStatus.Approved); Scheme scheme2 = new Scheme(organisation); scheme2.UpdateScheme("Scheme A", "WEE/11AAAA11/SCH", "WEE1234567", ObligationType.Both, A.Dummy <UKCompetentAuthority>()); scheme2.SetStatus(SchemeStatus.Approved); Scheme scheme3 = new Scheme(organisation); scheme3.UpdateScheme("Scheme C", "WEE/11AAAA11/SCH", "WEE1234567", ObligationType.Both, A.Dummy <UKCompetentAuthority>()); scheme3.SetStatus(SchemeStatus.Approved); var results = new List <Domain.Scheme.Scheme>() { scheme1, scheme2, scheme3 }; A.CallTo(() => dataAccess.GetCompleteSchemes()).Returns(results); IMap <Scheme, SchemeData> schemeMap = A.Fake <IMap <EA.Weee.Domain.Scheme.Scheme, SchemeData> >(); schemeData1 = A.Fake <SchemeData>(); schemeData1.SchemeName = "Scheme D"; schemeData1.SchemeStatus = Core.Shared.SchemeStatus.Approved; A.CallTo(() => schemeMap.Map(scheme1)).Returns(schemeData1); schemeData2 = A.Fake <SchemeData>(); schemeData2.SchemeName = "Scheme A"; schemeData2.SchemeStatus = Core.Shared.SchemeStatus.Approved; A.CallTo(() => schemeMap.Map(scheme2)).Returns(schemeData2); schemeData3 = A.Fake <SchemeData>(); schemeData3.SchemeName = "Scheme C"; schemeData3.SchemeStatus = Core.Shared.SchemeStatus.Approved; A.CallTo(() => schemeMap.Map(scheme3)).Returns(schemeData3); handler = new GetSchemesExternalHandler(dataAccess, schemeMap, authorization); var result = await handler.HandleAsync(request); Assert.Collection( result, (element1) => Assert.Equal("Scheme A", element1.SchemeName), (element2) => Assert.Equal("Scheme C", element2.SchemeName), (element3) => Assert.Equal("Scheme D", element3.SchemeName)); }
public async Task HandleAsync_NoExternalAccess_ThrowsSecurityException() { var authorizationDeny = new AuthorizationBuilder().DenyExternalAreaAccess().Build(); handler = new GetSchemesExternalHandler(A.Fake <RequestHandlers.Scheme.IGetSchemesDataAccess>(), A.Dummy <IMap <Scheme, SchemeData> >(), authorizationDeny); Func <Task> action = async() => await handler.HandleAsync(A.Dummy <GetSchemesExternal>()); await action.Should().ThrowAsync <SecurityException>(); }