Exemple #1
0
        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>();
        }