/// <summary>
        /// Make an order; return true if successful, otherwise return false.
        /// </summary>
        /// <param name="customerId">The ID of the customer.</param>
        /// <param name="stockItemId">The ID of the stock item.</param>
        /// <returns>True if the order was made.</returns>
        public bool MakeOrder(long customerId, long stockItemId)
        {
            // this example code not intended to represent a well-designed order system ;)
            using (var audit = new AuditlogSystem())
            {
                var verifier       = new CustomerVerifier();
                var orderProcesser = new OrderProcessor();
                var stockChecker   = new StockChecker();

                if (verifier.VerifyCustomer(customerId, DateTime.UtcNow))
                {
                    audit.LogStockInterest(customerId, stockItemId);
                    if (stockChecker.CheckStockAmount(stockItemId) > 0)
                    {
                        string orderValidationCode;
                        bool   orderValidationSuccess = orderProcesser.ValidateOrder(customerId, stockItemId, out orderValidationCode);

                        if (orderValidationSuccess)
                        {
                            long orderId = orderProcesser.ConfirmOrder(orderValidationCode);
                            audit.LogOrderMade(orderId, orderValidationCode);

                            return(true);
                        }
                        else
                        {
                            audit.LogOrderFailed(orderValidationCode);
                        }

                        audit.LogCustomerInteraction(customerId);
                    }
                }
                return(false);
            }
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            DatabaseReader databaseReader = new DatabaseReader();
            StockChecker   stockChecker   = new StockChecker(databaseReader);

            int stock = stockChecker.NumberInStock("ABC123");

            Console.WriteLine("Number in stock: " + stock);
            Console.ReadLine();
        }
Beispiel #3
0
        public void TestNumberInStock_CallsTheReadQuantityMethodOfOurDatabaseReader_WhenCalled()
        {
            //Arrange
            Mock <IDatabaseReader> mockDatabaseReader = new Mock <IDatabaseReader>();
            string       isbn         = "ABC123";                                    //string isbn for act
            StockChecker stockChecker = new StockChecker(mockDatabaseReader.Object); //Object

            //Act
            stockChecker.NumberInStock(isbn); //Method

            //Assert
            //Not interested in what this test returns, just that it behaves in the way we want. Want to verify the database reader had its read method quanitity called
            mockDatabaseReader.Verify(r => r.ReadQuantity(It.IsAny <string>()), Times.Once);
        }
        private void btnPrintReceipt_Click(object sender, RoutedEventArgs e)
        {
            if (balanceDue >= 0)
            {
                printMan.itemNames  = names.ToArray();
                printMan.itemPrices = prices.ToArray();
                printMan.itemQtys   = quantities.ToArray();

                printMan.gsTotal   = totalDue;
                printMan.gsBalance = balanceDue;
                printMan.gsPaid    = paidAmount;

                if (StockChecker.getInstance().checkStock(names.ToArray()).Length < 1)
                {
                    printMan.callPrintReceipt();

                    if (PrintSuccess.getInstance().gsIsPrintSuccessfull == true)
                    {
                        SalesUpdate.getInstance().gsSoldItemNames      = names.ToArray();
                        SalesUpdate.getInstance().gsSoldItemPrices     = prices.ToArray();
                        SalesUpdate.getInstance().gsSoldItemQuantities = quantities.ToArray();

                        SalesUpdate.getInstance().updateSales();

                        names.Clear();
                        quantities.Clear();
                        prices.Clear();


                        //new Checkout().ShowDialog();
                        //MainWindow.getInstance().Activate();
                        //this.Close();
                    }
                }
                else
                {
                    MessageBox.Show("The CheckOut failed Due to Insuffecient Stock For The Following Items: " +
                                    " " + string.Join(",", StockChecker.getInstance().checkStock(names.ToArray())) + "  Please Restock " +
                                    " And Retry", "Insuffecient Stock", MessageBoxButton.OK);
                    names.Clear();
                    quantities.Clear();
                    prices.Clear();
                }
            }
            else
            {
                MessageBox.Show("The Amount Paid is Insuffecient. Please top up to avoid loss", "Warning: Insuffecient Funds", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }
Beispiel #5
0
        public void Test_NumberInStock_returns3WhenThereAre3MatchingBooksInTheDatabase()
        {
            //Arrange
            string isbn     = "ABC123";
            int    expected = 3;
            Mock <IDatabaseReader> mockDatabaseReader = new Mock <IDatabaseReader>();

            mockDatabaseReader.Setup(r => r.ReadQuantity(isbn)).Returns(3); //this is called stubbing

            StockChecker stockChecker = new StockChecker(mockDatabaseReader.Object);

            //Act
            int actual = stockChecker.NumberInStock(isbn);

            //Assert
            Assert.AreEqual(expected, actual);
        }
 public StockCheckerTests()
 {
     _service = new StockChecker(_repository.Object);
 }
Beispiel #7
0
 public bool StockLevel(StockChecker stockChecker)
 {
     return(stockChecker.StockLevel < 5);
 }