public void IsSatisfiedBy_ShouldBeSatisfied_WhenBalanceIsPositive()
        {
            var bankAccount = new BankAccount(1m);

            ISpecification <BankAccount> specification = new PositiveAccountBalanceSpecification();
            bool isSatisfied = specification.IsSatisfiedBy(bankAccount);

            Assert.True(isSatisfied);
            Assert.Empty(specification.FailureReasons);
        }
        public void IsSatisfiedBy_ShouldNotBeSatisfied_WhenBalanceIsNotPositive(double balance)
        {
            var bankAccount = new BankAccount((decimal)balance);

            ISpecification <BankAccount> specification = new PositiveAccountBalanceSpecification();
            bool isSatisfied = specification.IsSatisfiedBy(bankAccount);

            Assert.False(isSatisfied);

            Assert.Equal("Account must have a positive balance for this operation",
                         specification.FailureReasons.Single());
        }
        public void IsSatisfiedBy_ShouldThrowException_WhenBankAccountIsNull()
        {
            ISpecification <BankAccount> specification = new PositiveAccountBalanceSpecification();

            Assert.Throws <ArgumentNullException>(() => specification.IsSatisfiedBy(null));
        }