diff --git a/Refactoring/Store.cs b/Refactoring/Store.cs index d9a7c78..48fcad6 100644 --- a/Refactoring/Store.cs +++ b/Refactoring/Store.cs @@ -32,7 +32,7 @@ public void Purchase(string productId, int quantity) throw new OutOfStockException(); } - product.Quantity = product.Quantity - quantity+1; + product.Quantity = product.Quantity - quantity; user.Balance = user.Balance - product.Price * quantity; dataManager.SaveUser(user); diff --git a/UnitTestProject/AuthenticatorTests.cs b/UnitTestProject/AuthenticatorTests.cs new file mode 100644 index 0000000..8b980ae --- /dev/null +++ b/UnitTestProject/AuthenticatorTests.cs @@ -0,0 +1,81 @@ +using Newtonsoft.Json; +using NUnit.Framework; +using Refactoring; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UnitTestProject +{ + [TestFixture] + class AuthenticatorTests + { + const string TEST_PRODUCT_ID = "1"; + private User createTestUser(string name, string password, double balance) + { + User testUser = new User(); + testUser.Name = name; + testUser.Password = password; + testUser.Balance = balance; + + return testUser; + } + + [Test] + public void Test_ValidUser() + { + + + var users = new List(); + users.Add(createTestUser("Test User", "Test", 99.99)); + + Authenticator authenticator = new Authenticator(users); + + //Act + var user = authenticator.Authenticate("Test User", "Test"); + + //Assert + + Assert.IsNotNull(user); + } + + [Test] + public void Test_UserNameInvalid() + { + + + var users = new List(); + users.Add(createTestUser("Test User", "Test", 99.99)); + + Authenticator authenticator = new Authenticator(users); + + //Act + var user = authenticator.Authenticate("Invalid", "Test"); + + //Assert + Assert.IsNull(user); + + } + + [Test] + public void Test_UserPasswordInvalid() + { + + + var users = new List(); + users.Add(createTestUser("Test User", "Test", 99.99)); + + Authenticator authenticator = new Authenticator(users); + + //Act + var user = authenticator.Authenticate("Test User", "Invalid"); + + //Assert + Assert.IsNull(user); + + } + } +} diff --git a/UnitTestProject/StoreTests.cs b/UnitTestProject/StoreTests.cs index 9f0b866..a1ae982 100644 --- a/UnitTestProject/StoreTests.cs +++ b/UnitTestProject/StoreTests.cs @@ -13,6 +13,7 @@ namespace UnitTestProject [TestFixture] class StoreTests { + const string TEST_PRODUCT_ID = "1"; private User createTestUser(string name, string password, double balance) { User testUser = new User(); @@ -33,22 +34,29 @@ private Product createTestProduct(string id, string name, double price, int quan return testProduct; } + public Store Test_ArrangeSingleProductTest(List users, double value, int inStockQty) + { + // const string TEST_PRODUCT_ID = "1"; + + var products = new List(); + products.Add(createTestProduct(TEST_PRODUCT_ID, "Product", value, inStockQty)); + + var dataManager = new DataManager(users, products); + var store = new Store(users[0], dataManager); + return store; + } [Test] public void Test_PurchaseThrowsNoErrorForValidFunds() { //Arrange - const string TEST_PRODUCT_ID = "1"; + // const string TEST_PRODUCT_ID = "1"; var users = new List(); users.Add(createTestUser("Test User", "", 99.99)); - var products = new List(); - products.Add(createTestProduct(TEST_PRODUCT_ID, "Product", 9.99, 10)); - - var dataManager = new DataManager(users, products); - var store = new Store(users[0], dataManager); - + var store = Test_ArrangeSingleProductTest(users, 9.99, 10); + //Act store.Purchase(TEST_PRODUCT_ID, 10); @@ -60,33 +68,68 @@ public void Test_PurchaseThrowsNoErrorForValidFunds() public void Test_PurchaseRemovesProductFromStore() { //Arrange + // const string TEST_PRODUCT_ID = "1"; + + var users = new List(); + users.Add(createTestUser("Test User", "", 99.99)); + var store = Test_ArrangeSingleProductTest(users, 9.99, 10); + + //Act + store.Purchase(TEST_PRODUCT_ID, 9); //Assert - //(choose the appropriate statement(s)) - //Assert.AreEqual(1, products[0].Quantity); - //Assert.AreSame(1, products[0].Quantity); - //Assert.IsTrue(products[0].Quantity == 1); + + var product = store.GetProductById(TEST_PRODUCT_ID); + Assert.AreEqual(1, product.Quantity); + } [Test] public void Test_PurchaseThrowsExceptionWhenBalanceIsTooLow() { //Arrange + + var users = new List(); + users.Add(createTestUser("Test User", "", 1.00)); - //Act + var store = Test_ArrangeSingleProductTest(users, 1.01, 2); - //Assert + + Assert.Throws(() => store.Purchase(TEST_PRODUCT_ID, 1)); + } [Test] + [ExpectedException(typeof(InsufficientFundsException))] public void Test_PurchaseThrowsExceptionWhenBalanceIsTooLowVersion2() { //Arrange + + var users = new List(); + users.Add(createTestUser("Test User", "", 1.00)); + + var store = Test_ArrangeSingleProductTest(users, 1.01, 2); //Act + store.Purchase(TEST_PRODUCT_ID, 1); + //Assert + } + [Test] + [ExpectedException(typeof(OutOfStockException))] + public void Test_PurchaseThrowsExceptionWhenOutOfStock() + { + + var users = new List(); + users.Add(createTestUser("Test User", "", 2.00)); + + var store = Test_ArrangeSingleProductTest(users, 1.01, 0); + + + //Act + store.Purchase(TEST_PRODUCT_ID, 1); //Assert } diff --git a/UnitTestProject/UnitTestProject.csproj b/UnitTestProject/UnitTestProject.csproj index bcf3847..1a9e337 100644 --- a/UnitTestProject/UnitTestProject.csproj +++ b/UnitTestProject/UnitTestProject.csproj @@ -70,6 +70,7 @@ +