Exemple #1
0
        public void Cannot_make_purchase_when_there_is_no_snacks()
        {
            var snackMachine = new Logic.SnackMachines.SnackMachine();

            snackMachine.InsertMoney(Dollar);

            Action action = () => snackMachine.BuySnack(1);

            action.Should().Throw <InvalidOperationException>();
        }
Exemple #2
0
        public void Cannot_make_purchase_if_not_enought_money_inserted()
        {
            var snackMachine = new Logic.SnackMachines.SnackMachine();

            snackMachine.LoadSnacks(1, new SnackPile(Chocolate, 2m, 10));
            snackMachine.InsertMoney(Dollar);

            Action action = () => snackMachine.BuySnack(1);

            action.Should().Throw <InvalidOperationException>();
        }
Exemple #3
0
        public void Cannot_buy_snack_if_not_enough_change()
        {
            var snackMachine = new Logic.SnackMachines.SnackMachine();

            snackMachine.LoadSnacks(1, new SnackPile(Chocolate, 0.5m, 10));

            snackMachine.InsertMoney(Dollar);

            Action action = () => snackMachine.BuySnack(1);

            action.Should().Throw <InvalidOperationException>();
        }
Exemple #4
0
        public void After_purchase_change_is_returned()
        {
            var snackMachine = new Logic.SnackMachines.SnackMachine();

            snackMachine.LoadSnacks(1, new SnackPile(Chocolate, 0.5m, 10));
            snackMachine.LoadMoney(TenCent * 10);
            snackMachine.InsertMoney(Dollar);
            snackMachine.BuySnack(1);

            snackMachine.MoneyInside.Amount.Should().Be(1.5m);
            snackMachine.MoneyInTransaction.Should().Be(0m);
        }
Exemple #5
0
        public void BuySnack_trades_inserted_money_for_a_snack()
        {
            var snackMachine = new Logic.SnackMachines.SnackMachine();

            snackMachine.LoadSnacks(1, new SnackPile(Chocolate, 1m, 10));
            snackMachine.InsertMoney(Dollar);
            snackMachine.InsertMoney(Dollar);

            snackMachine.BuySnack(1);

            snackMachine.MoneyInTransaction.Should().Be(0);
            snackMachine.MoneyInside.Amount.Should().Be(1m);
            snackMachine.GetSnackPile(1).Quantity.Should().Be(9);
        }
        private void BuySnack(string positionString)
        {
            int position = int.Parse(positionString);

            string error = _snackMachine.CanBuySnack(position);

            if (error != string.Empty)
            {
                NotifyClient(error);
                return;
            }

            _snackMachine.BuySnack(position);
            _repository.Save(_snackMachine);
            NotifyClient("You have bought a snack");
        }