From afbb833fd869a60841a294cc807cd41d9cd025bb Mon Sep 17 00:00:00 2001 From: Ingeborg Brommeland Austeid Date: Wed, 14 Aug 2024 11:29:31 +0200 Subject: [PATCH 1/2] adds domain model --- Screenshot 2024-08-14 112250.png | Bin 0 -> 39334 bytes .../{CohortManager.cs => ShoppingManager.cs} | 4 +++- ...tManagerTests.cs => ShoppingManagerTests.cs} | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 Screenshot 2024-08-14 112250.png rename tdd-domain-modelling.CSharp.Main/{CohortManager.cs => ShoppingManager.cs} (80%) rename tdd-domain-modelling.CSharp.Test/{CohortManagerTests.cs => ShoppingManagerTests.cs} (68%) diff --git a/Screenshot 2024-08-14 112250.png b/Screenshot 2024-08-14 112250.png new file mode 100644 index 0000000000000000000000000000000000000000..ee918ae77c3cf15645a0738b5f76b16703548484 GIT binary patch literal 39334 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 literal 0 HcmV?d00001 diff --git a/tdd-domain-modelling.CSharp.Main/CohortManager.cs b/tdd-domain-modelling.CSharp.Main/ShoppingManager.cs similarity index 80% rename from tdd-domain-modelling.CSharp.Main/CohortManager.cs rename to tdd-domain-modelling.CSharp.Main/ShoppingManager.cs index 6a5669c..b3b3098 100644 --- a/tdd-domain-modelling.CSharp.Main/CohortManager.cs +++ b/tdd-domain-modelling.CSharp.Main/ShoppingManager.cs @@ -6,7 +6,9 @@ namespace tdd_domain_modelling.CSharp.Main { - public class CohortManager + public class ShoppingManager { + + } } diff --git a/tdd-domain-modelling.CSharp.Test/CohortManagerTests.cs b/tdd-domain-modelling.CSharp.Test/ShoppingManagerTests.cs similarity index 68% rename from tdd-domain-modelling.CSharp.Test/CohortManagerTests.cs rename to tdd-domain-modelling.CSharp.Test/ShoppingManagerTests.cs index 56f3873..6dfc0a9 100644 --- a/tdd-domain-modelling.CSharp.Test/CohortManagerTests.cs +++ b/tdd-domain-modelling.CSharp.Test/ShoppingManagerTests.cs @@ -4,12 +4,12 @@ namespace tdd_domain_modelling.CSharp.Test { [TestFixture] - public class CohortManagerTest + public class ShoppingManagerTest { [Test] public void FirstTest() { - CohortManager core = new CohortManager(); + ShoppingManager core = new ShoppingManager(); } } } \ No newline at end of file From 3d9e3f5a4a472709616c58242d0e4aa204b23064 Mon Sep 17 00:00:00 2001 From: Ingeborg Brommeland Austeid Date: Wed, 14 Aug 2024 14:06:11 +0200 Subject: [PATCH 2/2] adds exercise 2 --- .../ShoppingManager.cs | 29 ++++++++++++ .../ShoppingManagerTests.cs | 44 ++++++++++++++++++- 2 files changed, 71 insertions(+), 2 deletions(-) diff --git a/tdd-domain-modelling.CSharp.Main/ShoppingManager.cs b/tdd-domain-modelling.CSharp.Main/ShoppingManager.cs index b3b3098..8530b75 100644 --- a/tdd-domain-modelling.CSharp.Main/ShoppingManager.cs +++ b/tdd-domain-modelling.CSharp.Main/ShoppingManager.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; @@ -9,6 +10,34 @@ namespace tdd_domain_modelling.CSharp.Main public class ShoppingManager { + private Dictionary _basket = new Dictionary(); + + public bool Add(string product, int price) + { + _basket.Add("Banana", 4); + + if (!_basket.ContainsKey(product)) + { + _basket.Add(product, price); + return true; + } + else return false; + + } + + + public int Total() + { + int totalCost = 0; + + foreach (var product in _basket) + { + totalCost += product.Value; + } + + return totalCost; + + } } } diff --git a/tdd-domain-modelling.CSharp.Test/ShoppingManagerTests.cs b/tdd-domain-modelling.CSharp.Test/ShoppingManagerTests.cs index 6dfc0a9..f212fd9 100644 --- a/tdd-domain-modelling.CSharp.Test/ShoppingManagerTests.cs +++ b/tdd-domain-modelling.CSharp.Test/ShoppingManagerTests.cs @@ -6,10 +6,50 @@ namespace tdd_domain_modelling.CSharp.Test [TestFixture] public class ShoppingManagerTest { + //As a supermarket shopper, So that I can restock my cupboard, I want to add products into my basket. [Test] - public void FirstTest() + public void AddProductsTest() { - ShoppingManager core = new ShoppingManager(); + string product = "Apple"; + int price = 5; + bool expected = true; + ShoppingManager shoppingManager = new ShoppingManager(); + + bool result = shoppingManager.Add(product, price); + + Assert.AreEqual(expected, result); + + } + + [Test] + public void ProductAlreadyInBasketTest() + { + string product = "Banana"; + int price = 4; + bool expected = false; + ShoppingManager shoppingManager = new ShoppingManager(); + + bool result = shoppingManager.Add(product, price); + + Assert.AreEqual(expected, result); + + } + + //As a supermarket shopper, So that I can Pay for products at checkout, I'd like to be able to know the total cost of items in my basket, + [Test] + public void TotalCostOfBasketTest() + { + + string product = "Apple"; + int price = 5; + int expected = 9; + ShoppingManager shoppingManager = new ShoppingManager(); + + bool addproduct = shoppingManager.Add(product, price); + int result = shoppingManager.Total(); + + Assert.AreEqual(expected, result); + } } } \ No newline at end of file