public static async Task InitialiseDebtorAsync()
        {
            // Arrange
            Main.SetMoneyAdviserCreditorApiCient();
            var sut   = new IntegrationGateway(Main.ApiClient);
            var model = Main.Fixture.Create <ClientDetailsCreateViewModel>();

            model.BirthYear = 1980;

            var validDate = false;

            while (!validDate)
            {
                try
                {
                    _         = new DateTime(model.BirthYear.Value, model.BirthMonth.Value, model.BirthDay.Value);
                    validDate = true;
                }
                catch
                {
                    model           = Main.Fixture.Create <ClientDetailsCreateViewModel>();
                    model.BirthYear = 1980;
                }
            }

            // Act & Asssert

            var result = await sut.CreateClientAsync(model);

            MoratoriumId = result;
        }
        public static async Task InitialiseAdHocCreditorAsync()
        {
            // Arrange
            var sut   = new IntegrationGateway(Main.ApiClient);
            var model = Main.Fixture.Create <string>();

            Main.SetMoneyAdviserCreditorApiCient();

            // Act & Asssert
            var result = await sut.CreateAdHocCreditor(model);

            AdHocCreditorId = result;
        }
        public async Task CreateClientAsync(string postcode)
        {
            // Arrange
            Main.SetMoneyAdviserCreditorApiCient();
            var model   = Main.Fixture.Create <ClientDetailsCreateViewModel>();
            var gateway = new IntegrationGateway(Main.ApiClient);

            model.BirthYear = 1980;

            var validDate = false;

            while (!validDate)
            {
                try
                {
                    _         = new DateTime(model.BirthYear.Value, model.BirthMonth.Value, model.BirthDay.Value);
                    validDate = true;
                }
                catch
                {
                    model           = Main.Fixture.Create <ClientDetailsCreateViewModel>();
                    model.BirthYear = 1980;
                }
            }

            var moratoriumId = await gateway.CreateClientAsync(model);

            var experianResults = await Sut.GetAddressesForPostcode(postcode);

            var partialAddress = experianResults.Addresses.First();
            var address        = await Sut.GetFullAddressAsync(partialAddress.Id);

            // Act
            var addressId = await gateway.CreateDebtorAddressAsync(address, moratoriumId);

            // Assert
            Assert.AreNotEqual(default, addressId);
 public void SetSut() => Sut = new IntegrationGateway(Main.ApiClient);