Ejemplo n.º 1
0
        public async Task GivenAnEmployerIsApplyingForTheNewApprenticeshipIncentive()
        {
            _createApplicationRequest = Fixture.Create <CreateIncentiveApplicationRequest>();
            const string url = "applications";

            _response = await EmployerIncentiveApi.Post(url, _createApplicationRequest);
        }
Ejemplo n.º 2
0
        public async Task WhenABankDetailsRequiredEmailIsSentWithAnInvalidEmailAddress()
        {
            _request = _fixture.Create <SendBankDetailsEmailRequest>();
            _request.EmailAddress = null;

            _response = await EmployerIncentiveApi.Post <SendBankDetailsEmailRequest>(_url, _request);
        }
Ejemplo n.º 3
0
        public async Task WhenVrfCaseStatusIsChangedTo(string status)
        {
            var url = $"/legalentities/{_account.HashedLegalEntityId}/vendorregistrationform";

            _newVrfStatus = status;

            var data = new
            {
                CaseId                    = _newVrfCaseId,
                Status                    = _newVrfStatus,
                LegalEntityId             = _account.HashedLegalEntityId,
                CaseStatusLastUpdatedDate = _newVrfStatusUpdateDate
            };

            var expectedProcessedEvents = 2;
            var expectedPublishedEvents = 1;

            if (status == "Case Request Completed")
            {
                expectedProcessedEvents = 2;
                expectedPublishedEvents = 2;
            }

            await TestContext.WaitFor <ICommand>(async (cancellationToken) =>
            {
                _response = await EmployerIncentiveApi.Patch(url, data, cancellationToken);
            },
                                                 numberOfOnProcessedEventsExpected : expectedProcessedEvents,
                                                 numberOfOnPublishedEventsExpected : expectedPublishedEvents);

            _response.StatusCode.Should().Be(HttpStatusCode.NoContent);
        }
        public async Task WhenTheApprenticeshipApplicationIsWithdrawnFromTheScheme()
        {
            _withdrawApplicationRequest = _fixture
                                          .Build <WithdrawApplicationRequest>()
                                          .With(r => r.WithdrawalType, WithdrawalType.Employer)
                                          .With(r => r.AccountLegalEntityId, _application.AccountLegalEntityId)
                                          .With(r => r.ULN, _apprenticeship.ULN)
                                          .Create();

            var url = $"withdrawals";


            if (_waitForMessage)
            {
                await _testContext.WaitFor(
                    async (cancellationToken) =>
                {
                    _response = await EmployerIncentiveApi.Post(url, _withdrawApplicationRequest, cancellationToken);
                },
                    (context) => HasExpectedEvents(context)
                    );
            }
            else
            {
                _response = await EmployerIncentiveApi.Post(url, _withdrawApplicationRequest);
            }
        }
        public async Task GivenAnEmployerHasSelectedApprenticeships()
        {
            await DataAccess.SetupAccount(_testAccountTable);

            var url = $"applications";
            await EmployerIncentiveApi.Post(url, _request);
        }
Ejemplo n.º 6
0
        public async Task WhenABankDetailsRequiredEmailIsSentWithAnInvalidAccountLegalEntityId()
        {
            _request = _fixture.Create <SendBankDetailsEmailRequest>();
            _request.AccountLegalEntityId = 0;

            _response = await EmployerIncentiveApi.Post <SendBankDetailsEmailRequest>(_url, _request);
        }
        public async Task WhenTheInvalidApplicationIdIsSubmitted()
        {
            var invalidApplicationId = _fixture.Create <Guid>();

            _submitRequest.IncentiveApplicationId = invalidApplicationId;
            var url = $"applications/{_submitRequest.IncentiveApplicationId}";

            _response = await EmployerIncentiveApi.Patch(url, _submitRequest);
        }
Ejemplo n.º 8
0
        public async Task WhenABankDetailsRequiredEmailIsSentForAValidAccountLegalEntityAndEmailAddress()
        {
            _request = _fixture.Create <SendBankDetailsEmailRequest>();

            await _testContext.WaitFor <ICommand>(async (cancellationToken) =>
            {
                _response = await EmployerIncentiveApi.Post(_url, _request, cancellationToken);
            });
        }
Ejemplo n.º 9
0
        public async Task WhenWeAddTheEmployerVendorForThisLegalEntity()
        {
            var url  = $"/legalentities/{_hashedLegalEntityId}/employervendorid";
            var data = new
            {
                EmployerVendorId = _newVendorId
            };

            await EmployerIncentiveApi.Put(url, data);
        }
        public async Task WhenTheySubmitTheApplication()
        {
            var submitRequest = _fixture.Build <SubmitIncentiveApplicationRequest>()
                                .With(p => p.IncentiveApplicationId, _applicationModel.Id)
                                .With(p => p.AccountId, _applicationModel.AccountId)
                                .With(p => p.DateSubmitted, DateTime.Today)
                                .Create();

            var url = $"applications/{_applicationModel.Id}";
            await EmployerIncentiveApi.Patch(url, submitRequest);
        }
Ejemplo n.º 11
0
        public async Task WhenThePausePaymentsRequestIsSent()
        {
            _pausePaymentsRequest = _fixture.Build <PausePaymentsRequest>()
                                    .With(r => r.Action, PausePaymentsAction.Pause)
                                    .With(r => r.AccountLegalEntityId, _application.AccountLegalEntityId)
                                    .With(r => r.ULN, _apprenticeship.ULN)
                                    .Create();

            var url = "pause-payments";

            _response = await EmployerIncentiveApi.Post(url, _pausePaymentsRequest);
        }
Ejemplo n.º 12
0
        public async Task WhenAnInvalidRequestIsSent()
        {
            _pausePaymentsRequest = _fixture.Build <PausePaymentsRequest>()
                                    .With(r => r.Action, PausePaymentsAction.Resume)
                                    .With(r => r.AccountLegalEntityId, 0)
                                    .With(r => r.ULN, 0)
                                    .Create();

            var url = "pause-payments";

            _response = await EmployerIncentiveApi.Post(url, _pausePaymentsRequest);
        }
        public async Task WhenAddedLegalEntityEventIsTriggered()
        {
            _response = await EmployerIncentiveApi.Put(
                $"/accounts/{_testAccountTable.Id}/legalEntities",
                new AddLegalEntityRequest
            {
                AccountLegalEntityId = _testAccountTable.AccountLegalEntityId,
                LegalEntityId        = _testAccountTable.LegalEntityId,
                OrganisationName     = _testAccountTable.LegalEntityName
            });

            _response.StatusCode.Should().Be(_expectedResult);
        }
Ejemplo n.º 14
0
        public async Task WhenArefreshLegalEntitiesJobisrequested()
        {
            var data = new Dictionary <string, object>
            {
                { "PageNumber", 1 },
                { "PageSize", 200 }
            };

            _response = await EmployerIncentiveApi.Put(
                $"/jobs",
                new JobRequest { Type = JobType.RefreshLegalEntities, Data = data });

            _response.StatusCode.Should().Be(_expectedResult);
        }
Ejemplo n.º 15
0
        public async Task WhenTheyHaveChangedSelectedApprenticeshipsForTheApplication()
        {
            _updateApplicationRequest = new UpdateIncentiveApplicationRequest()
            {
                IncentiveApplicationId = _createApplicationRequest.IncentiveApplicationId,
                Apprenticeships        = Fixture.CreateMany <IncentiveApplicationApprenticeshipDto>(4),
                AccountId = _createApplicationRequest.AccountId,
            };
            _updateApplicationRequest.Apprenticeships.AddItem(_createApplicationRequest.Apprenticeships.First());

            var url = $"applications/{_updateApplicationRequest.IncentiveApplicationId}";

            _response = await EmployerIncentiveApi.Put(url, _updateApplicationRequest);
        }
        public async Task GivenAnEmployerHasEnteredIncentiveClaimApplicationDetails()
        {
            var url = $"applications";

            _response = await EmployerIncentiveApi.Post(url, _createRequest);

            _response.StatusCode.Should().Be(HttpStatusCode.Created);

            using (var dbConnection = new SqlConnection(_testContext.SqlDatabase.DatabaseInfo.ConnectionString))
            {
                var application = await dbConnection.QueryAsync <IncentiveApplication>("SELECT * FROM IncentiveApplication WHERE Id = @IncentiveApplicationId",
                                                                                       new { _submitRequest.IncentiveApplicationId });

                application.Should().HaveCount(1);
                application.Single().Id.Should().Be(_submitRequest.IncentiveApplicationId);
            }
        }
        public async Task GivenALegalEntityHasSubmittedOneOrMoreApplications()
        {
            var createApplicationRequest = _fixture.Create <CreateIncentiveApplicationRequest>();

            createApplicationRequest.AccountId            = _testAccountTable.Id;
            createApplicationRequest.AccountLegalEntityId = _testAccountTable.AccountLegalEntityId;

            _response = await EmployerIncentiveApi.Post("/applications", createApplicationRequest);

            var applicationId = _response.Headers.Location.ToString().Substring("/applications/".Length);

            var submitApplicationRequest = _fixture.Create <SubmitIncentiveApplicationRequest>();

            submitApplicationRequest.AccountId = _testAccountTable.Id;
            submitApplicationRequest.IncentiveApplicationId = new Guid(applicationId);

            _response = await EmployerIncentiveApi.Patch($"/applications/{applicationId}", submitApplicationRequest);
        }
Ejemplo n.º 18
0
        public async Task WhenTheySubmitApplicationOn(string date)
        {
            var submissionDate = DateTime.ParseExact(date, "yyyy-MM-d", CultureInfo.InvariantCulture);

            _submitRequest = _fixture.Build <SubmitIncentiveApplicationRequest>()
                             .With(r => r.DateSubmitted, submissionDate)
                             .Create();

            _submitRequest.IncentiveApplicationId = _applicationModel.Id;
            _submitRequest.AccountId = _accountModel.Id;

            var url = $"applications/{_submitRequest.IncentiveApplicationId}";

            await _testContext.WaitFor(
                async (cancellationToken) =>
            {
                _response = await EmployerIncentiveApi.Patch(url, _submitRequest);
            },
                (context) => HasExpectedEvents(context),
                assertOnError : false
                );

            _response.StatusCode.Should().Be(HttpStatusCode.OK);
        }
        public async Task TheLegalAgreementIsSigned()
        {
            var url = $"/accounts/{_testAccountTable.Id}/legalEntities/{_testAccountTable.AccountLegalEntityId}";

            _response = await EmployerIncentiveApi.Patch(url, new SignAgreementRequest { AgreementVersion = _agreementVersion });
        }
        public async Task WhenTheyHaveSelectedTheApprenticeshipsForTheApplication()
        {
            var url = $"applications";

            _response = await EmployerIncentiveApi.Post(url, _request);
        }
Ejemplo n.º 21
0
        public async Task WhenALegalEntityIsRemovedFromAnAccount()
        {
            _response = await EmployerIncentiveApi.Delete($"/accounts/{_testAccountTable.Id}/legalEntities/{_testAccountTable.AccountLegalEntityId}");

            _response.StatusCode.Should().Be(HttpStatusCode.NoContent);
        }
        public async Task WhenTheApplicationIsSubmitted()
        {
            var url = $"applications/{_submitRequest.IncentiveApplicationId}";

            _response = await EmployerIncentiveApi.Patch(url, _submitRequest);
        }
Ejemplo n.º 23
0
        public StepsBase(TestContext testContext)
        {
            TestContext          = testContext;
            EmployerIncentiveApi = testContext.EmployerIncentiveApi;
            Fixture    = new Fixture();
            DataAccess = new DataAccess(testContext.SqlDatabase.DatabaseInfo.ConnectionString);

            var hook = testContext.Hooks.SingleOrDefault(h => h is Hook <object>) as Hook <object>;

            if (hook != null)
            {
                hook.OnProcessed += (message) =>
                {
                    lock (_lock)
                    {
                        testContext.EventsPublished.Add(message);
                        var throwError = testContext.TestData.Get <bool>("ThrowErrorAfterPublishEvent");
                        if (throwError)
                        {
                            throw new ApplicationException("Unexpected exception, should force a rollback");
                        }
                    }
                };
            }

            var commandsHook = testContext.Hooks.SingleOrDefault(h => h is Hook <ICommand>) as Hook <ICommand>;

            if (commandsHook != null)
            {
                commandsHook.OnReceived += (command) =>
                {
                    lock (_lock)
                    {
                        testContext.CommandsPublished.Add(
                            new PublishedCommand(command)
                        {
                            IsReceived      = true,
                            IsDomainCommand = command is DomainCommand
                        });
                    }
                };

                commandsHook.OnProcessed += (command) =>
                {
                    lock (_lock)
                    {
                        testContext.CommandsPublished.Where(c => c.Command == command && c.IsDomainCommand == command is DomainCommand).ToList().ForEach(c => c.IsProcessed = true);

                        var throwError = testContext.TestData.Get <bool>("ThrowErrorAfterProcessedCommand");
                        if (throwError)
                        {
                            throw new ApplicationException("Unexpected exception, should force a rollback");
                        }
                    }
                };
                commandsHook.OnHandled += (command) =>
                {
                    lock (_lock)
                    {
                        var throwError = testContext.TestData.Get <bool>("ThrowErrorAfterProcessedCommand");
                        if (throwError)
                        {
                            throw new ApplicationException("Unexpected exception, should force a rollback");
                        }
                    }
                };
                commandsHook.OnPublished += (command) =>
                {
                    lock (_lock)
                    {
                        testContext.CommandsPublished.Where(c => c.Command == command && c.IsDomainCommand == command is DomainCommand).ToList().ForEach(c => c.IsPublished = true);

                        var throwError = testContext.TestData.Get <bool>("ThrowErrorAfterPublishCommand");
                        if (throwError)
                        {
                            throw new ApplicationException("Unexpected exception, should force a rollback");
                        }
                    }
                };

                commandsHook.OnErrored += (ex, command) =>
                {
                    lock (_lock)
                    {
                        List <PublishedCommand> publishedCommands;
                        publishedCommands = testContext.CommandsPublished.Where(c => c.Command == command && c.IsDomainCommand == command is DomainCommand).ToList();

                        publishedCommands.ForEach(c =>
                        {
                            c.IsErrored = true;
                            c.LastError = ex;
                            if (ex.Message.Equals($"No destination specified for message: {command.GetType().FullName}"))
                            {
                                c.IsPublishedWithNoListener = true;
                            }
                        });

                        if (ex.Message.Equals($"No destination specified for message: {command.GetType().FullName}"))
                        {
                            return(true);
                        }

                        return(false);
                    }
                };
            }
        }
Ejemplo n.º 24
0
        public async Task WhenAnEmployerSelectsToStartTheExternalBankDetailsJourney()
        {
            _request = _fixture.Create <SendBankDetailsEmailRequest>();

            _response = await EmployerIncentiveApi.Post <SendBankDetailsEmailRequest>(_url, _request);
        }