public void WhenIAddANewPAYEScheme()
        {
            var hashedId = ScenarioContext.Current["HashedAccountId"].ToString();
            var userId   = ScenarioContext.Current["ExternalUserId"].ToString();

            _newLegalEntity = true;
            var employerPayeOrchestrator = _container.GetInstance <EmployerAccountPayeOrchestrator>();

            var confirmNewPayeScheme = new ConfirmNewPayeSchemeViewModel
            {
                HashedAccountId = hashedId,
                PayeScheme      = $"{Guid.NewGuid().ToString().Substring(0, 3)}/{Guid.NewGuid().ToString().Substring(0, 7)}",
                AccessToken     = Guid.NewGuid().ToString(),
                RefreshToken    = Guid.NewGuid().ToString(),
            };

            try
            {
                var result = employerPayeOrchestrator.AddPayeSchemeToAccount(confirmNewPayeScheme, userId).Result;
                if (result.Status == HttpStatusCode.Unauthorized)
                {
                    _exceptionCount++;
                }
            }
            catch (Exception ex)
            {
                _exceptionCount++;
            }
        }
        public void Arrange()
        {
            _model = new ConfirmNewPayeSchemeViewModel
            {
                AccessToken     = Guid.NewGuid().ToString(),
                RefreshToken    = Guid.NewGuid().ToString(),
                HashedAccountId = ExpectedHashedId,
                PayeScheme      = ExpectedEmpref,
                PayeName        = ExpectedEmprefName
            };

            _configuration = new EmployerApprenticeshipsServiceConfiguration {
                Hmrc = new HmrcConfiguration()
            };

            _logger        = new Mock <ILogger>();
            _cookieService = new Mock <ICookieStorageService <EmployerAccountData> >();

            _mediator = new Mock <IMediator>();
            _mediator.Setup(x => x.SendAsync(It.IsAny <GetAccountLegalEntitiesRequest>())).ReturnsAsync(new GetAccountLegalEntitiesResponse {
                Entites = new LegalEntities {
                    LegalEntityList = new List <LegalEntity>()
                }
            });
            _mediator.Setup(x => x.SendAsync(It.Is <GetGatewayTokenQuery>(c => c.AccessCode.Equals("1")))).ReturnsAsync(new GetGatewayTokenQueryResponse {
                HmrcTokenResponse = new HmrcTokenResponse {
                    AccessToken = "1"
                }
            });
            _mediator.Setup(x => x.SendAsync(It.Is <GetHmrcEmployerInformationQuery>(c => c.AuthToken.Equals("1")))).ReturnsAsync(new GetHmrcEmployerInformationResponse {
                Empref = "123/ABC", EmployerLevyInformation = new EmpRefLevyInformation {
                    Employer = new Employer {
                        Name = new Name {
                            EmprefAssociatedName = ExpectedEmprefName
                        }
                    }
                }
            });
            _mediator.Setup(x => x.SendAsync(It.Is <GetHmrcEmployerInformationQuery>(c => c.AuthToken.Equals("2")))).ReturnsAsync(new GetHmrcEmployerInformationResponse {
                Empref = "456/ABC", EmployerLevyInformation = new EmpRefLevyInformation {
                    Employer = new Employer {
                        Name = new Name {
                            EmprefAssociatedName = ExpectedEmprefName
                        }
                    }
                }
            });

            _employerAccountPayeOrchestrator = new EmployerAccountPayeOrchestrator(_mediator.Object, _logger.Object, _cookieService.Object, _configuration);
        }