예제 #1
0
        public void AddTransaction_Add2IdenticalIncomeTransactionsToEmptyBill_ExceptionThrown()
        {
            // Arrange
            Bill        bill        = new Bill();
            Transaction transaction = new Transaction(new Money(100, "PLN"), new DateTimeOffset(2010, 10, 10, 10, 10, 10, TimeSpan.Zero), "Cinema");

            // Act
            void addFirstTransactionDelegate() => bill.AddTransaction(transaction);
            void addIdenticalTransactionDelegate() => bill.AddTransaction(transaction);

            // Assert
            Assert.That(() => addFirstTransactionDelegate(), Throws.Nothing);
            Exception ex = Assert.Throws <Exception>(() => addIdenticalTransactionDelegate());

            Assert.That(ex.Message, Is.EqualTo("Transaction is already added to the bill"));
        }
예제 #2
0
        public void AddTransaction_Add2DifferentIncomeTransactionsToEmptyBill_IncomeAdded()
        {
            // Arrange
            Bill        bill              = new Bill();
            Transaction firstTransaction  = new Transaction(new Money(100, "PLN"), new DateTimeOffset(2010, 10, 10, 10, 10, 10, TimeSpan.Zero), "Cinema");
            Transaction secondTransaction = new Transaction(new Money(200, "PLN"), new DateTimeOffset(2010, 10, 11, 10, 10, 10, TimeSpan.Zero), "Dinner");

            // Act
            bill.AddTransaction(firstTransaction);
            bill.AddTransaction(secondTransaction);

            // Assert
            Assert.AreEqual(2, bill.Transactions.Count);
            Assert.AreEqual(firstTransaction, bill.Transactions.First());
            Assert.AreEqual(secondTransaction, bill.Transactions.Last());
        }
        public void GetAllTransactions_BillWith2Transactions_ListReturned()
        {
            // Arrange
            Bill        bill              = new Bill();
            Transaction firstTransaction  = new Transaction(new Money(100, "PLN"), new DateTimeOffset(2010, 10, 10, 10, 10, 10, TimeSpan.Zero), "Cinema");
            Transaction secondTransaction = new Transaction(new Money(200, "PLN"), new DateTimeOffset(2010, 10, 11, 10, 10, 10, TimeSpan.Zero), "Dinner");

            bill.AddTransaction(firstTransaction);
            bill.AddTransaction(secondTransaction);

            // Act
            ICollection <Transaction> result = bill.GetAllTransactions();

            // Assert
            Assert.AreEqual(2, result.Count);
            Assert.AreEqual(firstTransaction, result.First());
            Assert.AreEqual(secondTransaction, result.Last());
        }
예제 #4
0
        public void AddTransaction_AddIncomeTransactionToEmptyBill_IncomeAdded()
        {
            // Arrange
            Bill        bill        = new Bill();
            Transaction transaction = new Transaction(new Money(100, "PLN"), new DateTimeOffset(2010, 10, 10, 10, 10, 10, TimeSpan.Zero), "Cinema");

            // Act
            bill.AddTransaction(transaction);

            // Assert
            Assert.AreEqual(1, bill.Transactions.Count);
            Assert.AreEqual(transaction, bill.Transactions.FirstOrDefault());
        }
        public void RemoveTransaction_ExistinTransaction_SuccesfullRemoved()
        {
            // Arrange
            Bill        bill        = new Bill("PLN");
            Transaction transaction = new Transaction(new Money(100, "PLN"), new DateTimeOffset(2010, 10, 10, 10, 10, 10, TimeSpan.Zero), "Cinema");

            bill.AddTransaction(transaction);

            // Act
            bill.RemoveTransactionFromBill(transaction.Id);

            // Assert
            Assert.AreEqual(0, bill.Transactions.Count);
        }
예제 #6
0
        public void AddTransaction_AddNullTransaction_ExceptionThrown()
        {
            // Arrange
            Bill        bill        = new Bill();
            Transaction transaction = null;

            // Act
            void addTransactionDelegate() => bill.AddTransaction(transaction);

            // Assert
            Exception ex = Assert.Throws <ArgumentException>(() => addTransactionDelegate());

            Assert.That(ex.Message, Is.EqualTo("Transaction is null"));
        }
예제 #7
0
        public void AddTransaction_AddIncomeTransactionWithDifferentCurrency_ExceptionThrown()
        {
            // Arrange
            Bill        bill        = new Bill("PLN");
            Transaction transaction = new Transaction(new Money(100, "USD"), new DateTimeOffset(2010, 10, 10, 10, 10, 10, TimeSpan.Zero), "Cinema");

            // Act
            void addTransaction() => bill.AddTransaction(transaction);

            // Assert
            Exception ex = Assert.Throws <Exception>(() => addTransaction());

            Assert.AreEqual(ex.Message, "Transaction has different currency than bill");
        }
예제 #8
0
        public void GetCurrentAmount_BillWithTransactionsNoInitialState_AmountReturned(int[] values, decimal expectedValue)
        {
            // Arrange
            Bill bill = new Bill("PLN");

            foreach (var value in values)
            {
                Transaction transaction = new Transaction(new Money((decimal)value, "PLN"), new DateTimeOffset(2010, 10, 10, 10, 10, 10, TimeSpan.Zero), "Cinema");
                bill.AddTransaction(transaction);
            }

            // Act
            Money result = bill.GetCurrentAmount();

            // Assert
            Assert.AreEqual(expectedValue, result.Amount);
        }