public async Task ValidateAsync_WhenValid_Ok()
        {
            var command   = CreateValidCommand();
            var validator = new AddPaymentCommandValidator();

            var result = await validator.ValidateAsync(command);

            Assert.True(result.IsValid);
        }
        public async Task ValidateAsync_WhenCreditCardInvalid_IsInvalid()
        {
            var command = CreateValidCommand();

            command.CreditCard.CardNumber = "XYZ";
            var validator = new AddPaymentCommandValidator();

            var result = await validator.ValidateAsync(command);

            Assert.False(result.IsValid);
        }
        public async Task ValidateAsync_WhenCurrencyInvalid_IsInvalid(string currency)
        {
            var command = CreateValidCommand();

            command.Currency = currency;
            var validator = new AddPaymentCommandValidator();

            var result = await validator.ValidateAsync(command);

            Assert.False(result.IsValid);
        }
        public async Task ValidateAsync_WhenAmountInvalid_IsInvalid(decimal amount)
        {
            var command = CreateValidCommand();

            command.Amount = amount;
            var validator = new AddPaymentCommandValidator();

            var result = await validator.ValidateAsync(command);

            Assert.False(result.IsValid);
        }