public void StockNotActiveAtDate()
        {
            var stock = new Stock(Guid.NewGuid());

            stock.List("ABC", "ABC Pty Ltd", new Date(2020, 01, 01), false, AssetCategory.AustralianStocks);

            var transaction = new Aquisition()
            {
                Id                    = Guid.NewGuid(),
                Date                  = new Date(2000, 01, 01),
                Stock                 = stock,
                Comment               = "Test Aquisition",
                Units                 = 100,
                AveragePrice          = 10.00m,
                TransactionCosts      = 20.00m,
                CreateCashTransaction = true
            };

            var mockRepository = new MockRepository(MockBehavior.Strict);

            var holding     = mockRepository.Create <IHolding>();
            var cashAccount = mockRepository.Create <ICashAccount>();

            var    handler = new AquisitionHandler();
            Action a       = () => handler.Apply(transaction, holding.Object, cashAccount.Object);

            a.Should().Throw <StockNotActiveException>();

            mockRepository.Verify();
        }
        public void NoCashTransactionNoTransactionCosts()
        {
            var stock = new Stock(Guid.NewGuid());

            stock.List("ABC", "ABC Pty Ltd", new Date(1974, 01, 01), false, AssetCategory.AustralianStocks);

            var transaction = new Aquisition()
            {
                Id                    = Guid.NewGuid(),
                Date                  = new Date(2020, 01, 01),
                Stock                 = stock,
                Comment               = "Test Aquisition",
                Units                 = 100,
                AveragePrice          = 10.00m,
                TransactionCosts      = 0.00m,
                CreateCashTransaction = false
            };

            var mockRepository = new MockRepository(MockBehavior.Strict);

            var holding = mockRepository.Create <IHolding>();

            holding.Setup(x => x.AddParcel(new Date(2020, 01, 01), new Date(2020, 01, 01), 100, 1000.00m, 1000.00m, transaction)).Returns(default(IParcel)).Verifiable();

            var cashAccount = mockRepository.Create <ICashAccount>();

            var handler = new AquisitionHandler();

            handler.Apply(transaction, holding.Object, cashAccount.Object);

            mockRepository.Verify();
        }
        public void IncorrectTransactionType()
        {
            var transaction = new CashTransaction()
            {
                Id                  = Guid.NewGuid(),
                Date                = new Date(2020, 01, 01),
                Comment             = "Test Deposit",
                CashTransactionType = BankAccountTransactionType.Deposit,
                Amount              = 100.00m
            };

            var mockRepository = new MockRepository(MockBehavior.Strict);
            var holding        = mockRepository.Create <IHolding>();
            var cashAccount    = mockRepository.Create <ICashAccount>();

            var handler = new AquisitionHandler();

            Action a = () => handler.Apply(transaction, holding.Object, cashAccount.Object);

            a.Should().Throw <ArgumentException>();

            mockRepository.Verify();
        }