public void testIfUserProvidesBlankUserNameReturnNull()
 {
     LoginManager loginmanager = new LoginManager(sampleUsers, ui);
     ui.queueStringResponse("");
     User user = loginmanager.login();
     Assert.Null(user);
 }
 public void testIfUserProvidesBadUserNameTheyGetAnError()
 {
     LoginManager loginmanager = new LoginManager(sampleUsers, ui);
     ui.queueStringResponse("NotARealUserName");
     User user = loginmanager.login();
     Assert.AreEqual("You entered an invalid user.", ui.getErrorText());
 }
Example #3
0
        public static void Main(string[] args)
        {
            // Load users from data file
            List<User> users = JsonConvert.DeserializeObject<List<User>>(File.ReadAllText(@"Data/Users.json"));

            // Load products from data file
            List<Product> products = JsonConvert.DeserializeObject<List<Product>>(File.ReadAllText(@"Data/Products.json"));
            LoginManager loginManager = new LoginManager(users);

            Console.WriteLine("Welcome to TUSC");
            Console.WriteLine("---------------");

            User currentUser = loginManager.PromptLogin();

            if (currentUser != null)
            {
                Console.Clear();
                ConsoleHelper.WriteSuccess("Login successful! Welcome " + currentUser.UserName + "!");

                Tusc.Start(currentUser, products, users);
            }
            else
            {
                Console.WriteLine();
                Console.WriteLine("Press Enter key to exit");
                Console.ReadLine();
            }
        }
 public void testLoginAsksForAUserName()
 {
     LoginManager loginManager = new LoginManager(sampleUsers, ui);
     ui.queueStringResponse(null);
     loginManager.login();
     Assert.That(ui.getStringInputLabels(), Contains.Item(Environment.NewLine + "Enter Username:"));
 }
 public void testIfUserProvidesBadUserNameTheyAreAskedAgain()
 {
     LoginManager loginManager = new LoginManager(sampleUsers, ui);
     ui.queueStringResponse("NotARealUserName");
     loginManager.login();
     ICollection<string> inputLabels = ui.getStringInputLabels();
     Assert.AreEqual(2, inputLabels.Count);
     foreach (string inputLabel in inputLabels)
         Assert.AreEqual(Environment.NewLine + "Enter Username:", inputLabel);
 }
 public void testIfUserProvidesGoodUserNameTheyAreAskedForAPassword()
 {
     LoginManager loginManager = new LoginManager(sampleUsers, ui);
     ui.queueStringResponse("Al");
     loginManager.login();
     Assert.That(ui.getStringInputLabels(), Contains.Item("Enter Password:"));
 }
 public void testCannotBeCreatedWithoutUi()
 {
     LoginManager loginManager = new LoginManager(sampleUsers, null);
 }
 public void testCannotBeCreatedWithoutUserList()
 {
     LoginManager loginManager = new LoginManager(null, ui);
 }
 public void testBugfixIfTwoUsersHaveTheSameNameAndPasswordTheFirstOneIsRetrieved()
 {
     LoginManager loginManager = new LoginManager(sampleUsers, ui);
     ui.queueStringResponse("Beth");
     ui.queueStringResponse("hteB");
     User user = loginManager.login();
     Assert.AreSame(sampleUsers[1], user);
 }
        public void testCanLoginAsTwoDifferentUsersWithSameNameButDifferentPassword()
        {
            LoginManager loginManager = new LoginManager(sampleUsers, ui);
            ui.queueStringResponse("Carl");
            ui.queueStringResponse("lraC");
            User user = loginManager.login();
            Assert.AreSame(sampleUsers[2], user);

            ui.queueStringResponse("Carl");
            ui.queueStringResponse("IAmAlsoCarl");
            user = loginManager.login();
            Assert.AreSame(sampleUsers[6], user);
        }
 public void testBugfixCanLoginAsTheSixthUser()
 {
     LoginManager loginManager = new LoginManager(sampleUsers, ui);
     ui.queueStringResponse("Fara");
     ui.queueStringResponse("araF");
     User user = loginManager.login();
     Assert.AreSame(sampleUsers[5], user);
 }
 public void testIfUserProvidesGoodUserNameAndPasswordTheyGetThatUserBack()
 {
     LoginManager loginManager = new LoginManager(sampleUsers, ui);
     ui.queueStringResponse("Carl");
     ui.queueStringResponse("lraC");
     User user = loginManager.login();
     Assert.AreSame(sampleUsers[2], user);
 }
 public void testIfUserProvidesBadUserNameTheyAreAskedToLoginAgain()
 {
     LoginManager loginManager = new LoginManager(sampleUsers, ui);
     ui.queueStringResponse("Al");
     ui.queueStringResponse("FakePassword");
     loginManager.login();
     ICollection<string> inputLabels = ui.getStringInputLabels();
     Assert.AreEqual(3, inputLabels.Count);
     Assert.AreEqual(Environment.NewLine + "Enter Username:"******"Enter Password:"******"Enter Username:", inputLabels.ElementAt(2));
 }
 public void testIfUserProvidesGoodUserNameAndBadPasswordTheyGetAnError()
 {
     LoginManager loginManager = new LoginManager(sampleUsers, ui);
     ui.queueStringResponse("Al");
     ui.queueStringResponse("FakePassword");
     loginManager.login();
     Assert.AreEqual("You entered an invalid password.", ui.getErrorText());
 }
Example #15
0
        public static void Start(List<User> users, List<Product> products, UserInterface ui)
        {
            // Write welcome message
            ui.displayBanner("Welcome to TUSC");

            LoginManager loginManager = new LoginManager(users, ui);
            User loggedInUser = loginManager.login();

            if (loggedInUser == null)
            {
                ui.promptUserToExit();
                return;
            }

            // Show welcome message
            ui.displayNotices("Login successful! Welcome " + loggedInUser.Name + "!");
                        
            // Show balance 
            Console.WriteLine();
            Console.WriteLine("Your balance is " + loggedInUser.Balance.ToString("C"));

            // Show product list
            while (true)
            {
                // Prompt for user input
                Console.WriteLine();
                Console.WriteLine("What would you like to buy?");
                for (int i = 0; i < 7; i++)
                {
                    Product product = products[i];
                    Console.WriteLine(i + 1 + ": " + product.Name + " (" + product.Price.ToString("C") + ")");
                }
                Console.WriteLine(products.Count + 1 + ": Exit");

                // Prompt for user input
                string answer = ui.getStringInputFromUser("Enter a number:");
                int selectedProductIndex = Convert.ToInt32(answer);
                selectedProductIndex = selectedProductIndex - 1; 

                // Check if user entered number that equals product count
                if (selectedProductIndex == products.Count)
                {
                    ui.promptUserToExit();
                    return;
                }
                else
                {
                    Product selectedProduct = products[selectedProductIndex];
                    Console.WriteLine();
                    Console.WriteLine("You want to buy: " + selectedProduct.Name);
                    Console.WriteLine("Your balance is " + loggedInUser.Balance.ToString("C"));

                    // Prompt for user input
                    answer = ui.getStringInputFromUser("Enter amount to purchase:");
                    int quantityToPurchase = Convert.ToInt32(answer);

                    // Check if balance - quantity * price is less than 0
                    if (loggedInUser.Balance - selectedProduct.Price * quantityToPurchase < 0)
                    {
                        ui.displayErrors("You do not have enough money to buy that.");
                        continue;
                    }

                    // Check if quantity is less than quantity
                    if (selectedProduct.Quantity <= quantityToPurchase)
                    {
                        ui.displayErrors("Sorry, " + selectedProduct.Name + " is out of stock");
                        continue;
                    }

                    if (quantityToPurchase > 0)
                    {
                        // Balance = Balance - Price * Quantity
                        loggedInUser.Balance = loggedInUser.Balance - selectedProduct.Price * quantityToPurchase;

                        // Quanity = Quantity - Quantity
                        selectedProduct.Quantity = selectedProduct.Quantity - quantityToPurchase;

                        ui.displayNotices("You bought " + quantityToPurchase + " " + selectedProduct.Name, "Your new balance is " + loggedInUser.Balance.ToString("C"));
                    }
                    else
                    {
                        ui.displayWarnings("Purchase cancelled");
                    }
                }
            }
        }