public void BeforeScenario()
        {
            var config = _objectContainer.Resolve <LocalConfiguration>();

            AccountsApiMessageHandler accountsApiMessageHandlers = new AccountsApiMessageHandler(config.AccountsApiBaseUrl);

            AccountsApi = new AccountsApi(accountsApiMessageHandlers);

            ProviderEventsApiMessageHandler providerApiMessageHandlers = new ProviderEventsApiMessageHandler(config.PaymentsApiBaseUrl);

            ProviderEventsApi = new ProviderEventsApi(providerApiMessageHandlers);

            CommitmentsApiMessageHandler commitmentsApiMessageHandlers = new CommitmentsApiMessageHandler(config.CommitmentsApiBaseUrl);

            CommitmentsApi = new CommitmentsApi(commitmentsApiMessageHandlers);

            EventsApiMessageHandler eventsApiMessageHandlers = new EventsApiMessageHandler(config.EventsApiBaseUrl);

            EventsApiSubstitute = new EventsApi(eventsApiMessageHandlers);

            TokenServiceApiMessageHandler tokenApiMessageHandlers = new TokenServiceApiMessageHandler(config.TokenServiceApiBaseUrl);

            TokenApiSubstitute = new TokenServiceApi(tokenApiMessageHandlers);

            HmrcApiMessageHandler hmrcApiMessageHandlers = new HmrcApiMessageHandler(config.HmrcApiBaseUrl);

            HmrcApi = new HmrcApi(hmrcApiMessageHandlers);

            _objectContainer.RegisterInstanceAs(accountsApiMessageHandlers);
            _objectContainer.RegisterInstanceAs(providerApiMessageHandlers);
            _objectContainer.RegisterInstanceAs(commitmentsApiMessageHandlers);
            _objectContainer.RegisterInstanceAs(hmrcApiMessageHandlers);
            _objectContainer.RegisterInstanceAs(eventsApiMessageHandlers);
            _objectContainer.RegisterInstanceAs(tokenApiMessageHandlers);
        }
        public async Task CanUseDefaultResponseForGetEmploymentStatus()
        {
            using (HmrcApi webApi = new HmrcApi(apiMessageHandlers))
            {
                using (HttpClient client = new HttpClient())
                {
                    var jsonresponse = await client.GetAsync(baseAddress + apiMessageHandlers.DefaultGetEmploymentStatusEndPoint);

                    var response = JsonConvert.DeserializeObject <EmploymentStatus>(jsonresponse.Content.ReadAsStringAsync().Result);
                    Assert.AreEqual(true, response.Employed);
                }
            }
        }
        public async Task CanOverrideDefaultResponse()
        {
            apiMessageHandlers.OverrideGetSubmissionEvents(new EmploymentStatus {
                Employed = false
            });

            using (HmrcApi webApi = new HmrcApi(apiMessageHandlers))
            {
                using (HttpClient client = new HttpClient())
                {
                    var jsonresponse = await client.GetAsync(baseAddress + apiMessageHandlers.DefaultGetEmploymentStatusEndPoint);

                    var response = JsonConvert.DeserializeObject <EmploymentStatus>(jsonresponse.Content.ReadAsStringAsync().Result);
                    Assert.AreEqual(false, response.Employed);
                }
            }
        }
        public async Task CanUseGetEmploymentStatusEndpointWithNullFromAndToDate()
        {
            var stubresponse = new ObjectCreator().Create <EmploymentStatus>(x => { x.Employed = true; x.Empref = "111/ABC00001"; x.Nino = "AB956885B"; x.FromDate = new DateTime(2017, 12, 14); x.ToDate = new DateTime(2018, 02, 06); });

            apiMessageHandlers.SetupGetEmploymentStatus(stubresponse, "111/ABC00001", "AB956885B");

            using (HmrcApi webApi = new HmrcApi(apiMessageHandlers))
            {
                using (HttpClient client = new HttpClient {
                    BaseAddress = new Uri(baseAddress)
                })
                {
                    var hmrcclient   = new ApprenticeshipLevyApiClient(client);
                    var jsonresponse = await hmrcclient.GetEmploymentStatus("111/ABC00001", "AB956885B");

                    Assert.AreEqual(true, jsonresponse.Employed);
                }
            }
        }