internal async Task <MandateImport> CreateMandateImport()
        {
            var request = new CreateMandateImportRequest
            {
                Scheme = "bacs",
            };

            var mandateImportsClient = new MandateImportsClient(_clientConfiguration);

            return((await mandateImportsClient.CreateAsync(request)).Item);
        }
        public async Task CallsCreateMandateImportEndpoint()
        {
            // given
            var subject = new MandateImportsClient(_clientConfiguration);

            var request = new CreateMandateImportRequest();

            // when
            await subject.CreateAsync(request);

            // then
            _httpTest
            .ShouldHaveCalled("https://api.gocardless.com/mandate_imports")
            .WithVerb(HttpMethod.Post);
        }
        public void CreateMandateImportRequestIsNullThrows()
        {
            // given
            var subject = new MandateImportsClient(_clientConfiguration);

            CreateMandateImportRequest request = null;

            // when
            AsyncTestDelegate test = () => subject.CreateAsync(request);

            // then
            var ex = Assert.ThrowsAsync <ArgumentNullException>(test);

            Assert.That(ex.ParamName, Is.EqualTo(nameof(request)));
        }
        public async Task CreatesMandateImport()
        {
            // given
            var subject = new MandateImportsClient(_clientConfiguration);

            var request = new CreateMandateImportRequest
            {
                Scheme = Scheme.Bacs,
            };

            // when
            var result = await subject.CreateAsync(request);

            // then
            Assert.That(result.Item, Is.Not.Null);
            Assert.That(result.Item.Id, Is.Not.Null);
            Assert.That(result.Item.CreatedAt, Is.Not.Null.And.Not.EqualTo(default(DateTimeOffset)));
            Assert.That(result.Item.Scheme, Is.EqualTo(request.Scheme));
            Assert.That(result.Item.Status, Is.Not.Null);
        }