From b15cac3246539c6ddbf6830b835ef429cbc8db9d Mon Sep 17 00:00:00 2001 From: redcurse Date: Mon, 2 May 2016 10:27:36 -0500 Subject: [PATCH] All Excercises --- Refactoring/Store.cs | 2 +- UnitTestProject/AuthenticatorTests.cs | 39 +++++++ UnitTestProject/IntegrationTests.cs | 2 +- UnitTestProject/StoreTests.cs | 144 +++++++++++++++++++++++-- UnitTestProject/UnitTestProject.csproj | 2 + 5 files changed, 178 insertions(+), 11 deletions(-) create mode 100644 UnitTestProject/AuthenticatorTests.cs 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..d9d329b --- /dev/null +++ b/UnitTestProject/AuthenticatorTests.cs @@ -0,0 +1,39 @@ +using Newtonsoft.Json; +using NUnit.Framework; +using Refactoring; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.Serialization.Formatters.Binary; + +namespace UnitTestProject +{ + [TestFixture] + public class AuthenticatorTests + { + Authenticator authenticator; + + [SetUp] + public void Test_Initialize() + { + var users = new List(); + + var user = new User(); + user.Name = "test"; + user.Password = "password"; + + users.Add(user); + + authenticator = new Authenticator(users); + } + + [Test] + public void TestAuthenticate() + { + var user = authenticator.Authenticate("test", "password"); + + Assert.IsNotNull(user); + } + } +} diff --git a/UnitTestProject/IntegrationTests.cs b/UnitTestProject/IntegrationTests.cs index f526b8a..ddb4fb9 100644 --- a/UnitTestProject/IntegrationTests.cs +++ b/UnitTestProject/IntegrationTests.cs @@ -10,7 +10,7 @@ namespace UnitTestProject { [TestFixture] - //[Ignore("Disable integration tests")] + [Ignore("Disable integration tests")] public class IntegrationTests { private List users; diff --git a/UnitTestProject/StoreTests.cs b/UnitTestProject/StoreTests.cs index 9f0b866..25ec724 100644 --- a/UnitTestProject/StoreTests.cs +++ b/UnitTestProject/StoreTests.cs @@ -34,6 +34,12 @@ private Product createTestProduct(string id, string name, double price, int quan return testProduct; } + private Store createStore(List users, List products) + { + var dataManager = new DataManager(users, products); + return new Store(users[0], dataManager); + } + [Test] public void Test_PurchaseThrowsNoErrorForValidFunds() { @@ -46,8 +52,7 @@ public void Test_PurchaseThrowsNoErrorForValidFunds() 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 = createStore(users, products); //Act store.Purchase(TEST_PRODUCT_ID, 10); @@ -60,34 +65,155 @@ 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 products = new List(); + products.Add(createTestProduct(TEST_PRODUCT_ID, "Product", 9.99, 10)); + + var store = createStore(users, products); //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); + Assert.AreEqual(1, products[0].Quantity); + Assert.IsTrue(products[0].Quantity == 1); } [Test] public void Test_PurchaseThrowsExceptionWhenBalanceIsTooLow() { //Arrange + const string TEST_PRODUCT_ID = "1"; - //Act + var users = new List(); + users.Add(createTestUser("Test User", "", 1)); + + var products = new List(); + products.Add(createTestProduct(TEST_PRODUCT_ID, "Product", 1.01, 1)); + + var store = createStore(users, products); + + try + { + //Act + store.Purchase(TEST_PRODUCT_ID, 1); + Assert.Fail(); + } + catch (InsufficientFundsException) + { + Assert.Pass(); + } - //Assert } [Test] public void Test_PurchaseThrowsExceptionWhenBalanceIsTooLowVersion2() { //Arrange + const string TEST_PRODUCT_ID = "1"; + + var users = new List(); + users.Add(createTestUser("Test User", "", 1)); + + var products = new List(); + products.Add(createTestProduct(TEST_PRODUCT_ID, "Product", 0.51, 2)); + + var store = createStore(users, products); + + try + { + //Act + store.Purchase(TEST_PRODUCT_ID, 2); + Assert.Fail(); + } + catch (InsufficientFundsException) + { + Assert.Pass(); + } + } + + [Test] + public void Test_PurchaseThrowsExceptionWhenOutOfStock() + { + //Arrange + const string TEST_PRODUCT_ID = "1"; + + var users = new List(); + users.Add(createTestUser("Test User", "", 1)); + + var products = new List(); + products.Add(createTestProduct(TEST_PRODUCT_ID, "Product", 1.00, 0)); + + var store = createStore(users, products); + + try + { + //Act + store.Purchase(TEST_PRODUCT_ID, 1); + Assert.Fail(); + } + catch (OutOfStockException) + { + Assert.Pass(); + } + } + + [Test] + public void Test_GetProductList() + { + //Arrange + const string TEST_PRODUCT_ID = "1"; + + var users = new List(); + users.Add(createTestUser("Test User", "", 1)); + + var products = new List(); + products.Add(createTestProduct(TEST_PRODUCT_ID, "Product", 1.00, 1)); + + var store = createStore(users, products); //Act + Assert.That(store.GetProductList().Contains("Type quit to exit the application")); + } - //Assert + [Test] + public void Test_NumberOfProducts() + { + //Arrange + const string TEST_PRODUCT_ID = "1"; + + var users = new List(); + users.Add(createTestUser("Test User", "", 1)); + + var products = new List(); + products.Add(createTestProduct(TEST_PRODUCT_ID, "Product", 1.00, 1)); + + var store = createStore(users, products); + + //Act + Assert.That(store.NumberOfProducts() == 1); + } + + [Test] + public void Test_ContainsProduct() + { + //Arrange + const string TEST_PRODUCT_ID = "1"; + + var users = new List(); + users.Add(createTestUser("Test User", "", 1)); + + var products = new List(); + products.Add(createTestProduct(TEST_PRODUCT_ID, "Product", 1.00, 1)); + + var store = createStore(users, products); + + //Act + Assert.That(store.ContainsProduct(TEST_PRODUCT_ID)); } diff --git a/UnitTestProject/UnitTestProject.csproj b/UnitTestProject/UnitTestProject.csproj index bcf3847..c695f54 100644 --- a/UnitTestProject/UnitTestProject.csproj +++ b/UnitTestProject/UnitTestProject.csproj @@ -35,6 +35,7 @@ 4 + ..\packages\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll True @@ -73,6 +74,7 @@ +