예제 #1
0
        public void ProperInitialization()
        {
            _vModel = new AddStockViewModel(_eventAggregatorMock.Object, _fundServiceMock.Object);

            Assert.That(_vModel.Price, Is.EqualTo(0));
            Assert.That(_vModel.Quantity, Is.EqualTo(0));
            Assert.That(_vModel.StockTypes, Is.EqualTo(Enum.GetValues(typeof(StockType)).Cast <StockType>().ToList()));
            Assert.That(_vModel.HasErrors, Is.True);
            Assert.That(_vModel.Errors, Is.Not.Empty);
            Assert.That(_vModel.Errors, Has.Exactly(1).EqualTo(AddStockViewModel.ErrorPriceIsLessOrEquallThanZerro));
            Assert.That(_vModel.Errors, Has.Exactly(1).EqualTo(AddStockViewModel.ErrorQuantityIsLessOrEquallThanZerro));
            Assert.That(_vModel.AddStockCommand.CanExecute(null), Is.False);
        }
예제 #2
0
        public void ProperValidation()
        {
            _vModel = new AddStockViewModel(_eventAggregatorMock.Object, _fundServiceMock.Object);

            _vModel.StockTypeSelected = StockType.Bond;
            _vModel.Price             = 1;
            _vModel.Quantity          = 1;

            Assert.That(_vModel.Price, Is.EqualTo(1));
            Assert.That(_vModel.Quantity, Is.EqualTo(1));
            Assert.That(_vModel.StockTypeSelected, Is.EqualTo(StockType.Bond));
            Assert.That(_vModel.HasErrors, Is.False);
            Assert.That(_vModel.Errors == null || !_vModel.Errors.Any(), Is.True);
            Assert.That(_vModel.AddStockCommand.CanExecute(null), Is.True);
        }
        public MainWindowViewModel(IFundViewModel fundViewModel, ISummaryViewModel summaryViewModel,
                                   IAddStockViewModel addStockViewModel)
        {
            // This is painful to look at, and we should really use DI here with a proper composition root and bindings and everything,
            // but I couldn't bring myself to also introduce a DI container here. This solution feels slightly bloated as it is.
            // I hope the overall design that I strove for in the Domain Model will demonstrate my awareness of the concept.
            //Fund = new FundViewModel(TestDataProvider.CreateTestFund());
            //Summary = new SummaryViewModel(Fund.GetStocksFunc);
            //AddStock = new AddStockViewModel(_addStockHelper);
            //_addStockHelper = addStockHelper;

            AddStock = addStockViewModel;
            Fund     = fundViewModel;
            Summary  = summaryViewModel;
        }
예제 #4
0
        public void ProperAddButtonHandler()
        {
            _vModel = new AddStockViewModel(_eventAggregatorMock.Object, _fundServiceMock.Object);

            _vModel.StockTypeSelected = StockType.Bond;
            _vModel.Price             = 10;
            _vModel.Quantity          = 10;

            Assert.That(_vModel.AddStockCommand.CanExecute(null), Is.True);

            _vModel.AddStockCommand.Execute(null);

            _fundServiceMock.Setup(f => f.AddStock(It.IsAny <BaseStockModel>())).Callback((BaseStockModel model) =>
            {
                Assert.That(model.Type, Is.EqualTo(_vModel.StockTypeSelected));
                Assert.That(model.Price, Is.EqualTo(_vModel.Price));
                Assert.That(model.Quantity, Is.EqualTo(_vModel.Quantity));
            });
        }