From c850c044140689df69fa92bdbb6eaf23d627171b Mon Sep 17 00:00:00 2001 From: Sarah Ashri Date: Fri, 15 Mar 2024 15:39:08 +1000 Subject: [PATCH] Add regression coverage to UpdateQuality unit tests to reduce reliance on texttest approval test --- ...stFixture.cs => DailyUpdateTestFixture.cs} | 224 ++++++++---------- 1 file changed, 102 insertions(+), 122 deletions(-) rename csharpcore/GildedRoseTests/{UpdateQualityTestFixture.cs => DailyUpdateTestFixture.cs} (53%) diff --git a/csharpcore/GildedRoseTests/UpdateQualityTestFixture.cs b/csharpcore/GildedRoseTests/DailyUpdateTestFixture.cs similarity index 53% rename from csharpcore/GildedRoseTests/UpdateQualityTestFixture.cs rename to csharpcore/GildedRoseTests/DailyUpdateTestFixture.cs index c098b0a7..41dda4b1 100644 --- a/csharpcore/GildedRoseTests/UpdateQualityTestFixture.cs +++ b/csharpcore/GildedRoseTests/DailyUpdateTestFixture.cs @@ -5,66 +5,72 @@ using NUnit.Framework; namespace GildedRoseTests; -public class UpdateQualityTestFixture +public class DailyUpdateTestFixture { - + [Test] - public void PlainItems_WhenNotExpired_Should_DecreaseSellInAndQualityByOne() - { - var items = new List { new ItemBuilder("item 1", 2, 3).Build() }; - var expectedItemsAfterTest = new List { new ItemBuilder("item 1", 1, 2).Build() }; - - var app = new GildedRose(items); - app.UpdateQuality(); - - items.Should().BeEquivalentTo(expectedItemsAfterTest); - } - - - [Test] - public void PlainItems_WhenExpired_Should_DecreaseSellInByOneAndQualityByTwo() - { - var items = new List { new ItemBuilder("item 1", 0, 5).Build() }; - var expectedItemsAfterDay1 = new List { new ItemBuilder("item 1", -1, 3).Build() }; - var expectedItemsAfterDay2 = new List { new ItemBuilder("item 1", -2, 1).Build() }; - - - var app = new GildedRose(items); - - app.UpdateQuality(); - items.Should().BeEquivalentTo(expectedItemsAfterDay1); - - app.UpdateQuality(); - items.Should().BeEquivalentTo(expectedItemsAfterDay2); - } - - [Test] - public void ItemsQuality_Should_NeverGoBelow0() + public void RegularItems_WhenNotExpired_Should_DecreaseSellInBy1AndQualityBy1DownTo0() { var items = new List { - new ItemBuilder("item 1", 0, 0).Build(), - new ItemBuilder("item 1", 0, 1).Build() + new ItemBuilder("item 1", 2, 3).Build(), + new ItemBuilder("+5 Dexterity Vest", 2, 1).Build(), + new ItemBuilder("item 1", 2, 0).Build() }; var expectedItemsAfterTest = new List { - new ItemBuilder("item 1", -1, 0).Build(), + new ItemBuilder("item 1", 1, 2).Build(), + new ItemBuilder("+5 Dexterity Vest", 1, 0).Build(), + new ItemBuilder("item 1", 1, 0).Build() + }; + + var app = new GildedRose(items); + app.UpdateQuality(); + + items.Should().BeEquivalentTo(expectedItemsAfterTest); + } + + + [Test] + public void RegularItems_WhenExpired_Should_DecreaseSellInBy1AndQualityBy2DownTo0() + { + var items = new List + { + new ItemBuilder("item 1", -1, 3).Build(), + new ItemBuilder("+5 Dexterity Vest", -1, 1).Build(), new ItemBuilder("item 1", -1, 0).Build() }; + var expectedItemsAfterTest = new List + { + new ItemBuilder("item 1", -2, 1).Build(), + new ItemBuilder("+5 Dexterity Vest", -2, 0).Build(), + new ItemBuilder("item 1", -2, 0).Build() + }; var app = new GildedRose(items); - app.UpdateQuality(); + app.UpdateQuality(); items.Should().BeEquivalentTo(expectedItemsAfterTest); } - [Test] - public void BetterWithAgeItems_WhenNotExpired_Should_IncreaseQualityByOne() + public void BetterWithAgeItems_WhenNotExpired_Should_DecreaseSellInBy1AndIncreaseQualityBy1Upto50() { - var items = new List { new ItemBuilder("Aged Brie", 1, 0).Build() }; - var expectedItemsAfterTest = new List { new ItemBuilder("Aged Brie", 0, 1).Build() }; + var items = new List + { + new ItemBuilder("Aged Brie", 1, 0).Build(), + new ItemBuilder("Aged Brie", 1, 49).Build(), + new ItemBuilder("Aged Brie", 1, 50).Build() + + }; + var expectedItemsAfterTest = new List + { + new ItemBuilder("Aged Brie", 0, 1).Build(), + new ItemBuilder("Aged Brie", 0, 50).Build(), + new ItemBuilder("Aged Brie", 0, 50).Build() + + }; var app = new GildedRose(items); app.UpdateQuality(); @@ -73,10 +79,20 @@ public class UpdateQualityTestFixture } [Test] - public void BetterWithAgeItems_WhenExpired_Should_IncreaseQualityByTwo() + public void BetterWithAgeItems_WhenExpired_Should_DecreaseSellInBy1AndIncreaseQualityBy2Upto50() { - var items = new List { new ItemBuilder("aged Brie", 0, 1).Build() }; - var expectedItemsAfterTest = new List { new ItemBuilder("aged Brie", -1, 3).Build() }; + var items = new List + { + new ItemBuilder("aged Brie", 0, 1).Build(), + new ItemBuilder("aged Brie", 0, 49).Build(), + new ItemBuilder("aged Brie", 0, 50).Build() + }; + var expectedItemsAfterTest = new List + { + new ItemBuilder("aged Brie", -1, 3).Build(), + new ItemBuilder("aged Brie", -1, 50).Build(), + new ItemBuilder("aged Brie", -1, 50).Build() + }; var app = new GildedRose(items); app.UpdateQuality(); @@ -84,24 +100,6 @@ public class UpdateQualityTestFixture items.Should().BeEquivalentTo(expectedItemsAfterTest); } - - [Test] - public void ItemsQuality_Should_NeverIncreaseAbove50() - { - var items = new List { new ItemBuilder("Aged Brie", 1, 49).Build() }; - var expectedItemsAfterDay1 = new List { new ItemBuilder("Aged Brie", 0, 50).Build() }; - var expectedItemsAfterDay2 = new List { new ItemBuilder("Aged Brie", -1, 50).Build() }; - - var app = new GildedRose(items); - - app.UpdateQuality(); - items.Should().BeEquivalentTo(expectedItemsAfterDay1); - - app.UpdateQuality(); - items.Should().BeEquivalentTo(expectedItemsAfterDay2); - } - - [Test] public void LegendaryItems_QualityAndSellIn_NeverChange() { @@ -123,30 +121,21 @@ public class UpdateQualityTestFixture } [Test] - public void LegendaryItems_Quality_IsConstant80() - { - var items = new List { new LegendaryItemBuilder("something sulfuras something", 3).Build() }; - var expectedItemsAfterTest = new List { new LegendaryItemBuilder("something sulfuras something", 3).Build() }; - - var app = new GildedRose(items); - - app.UpdateQuality(); - items.Should().BeEquivalentTo(expectedItemsAfterTest); - } - - - [Test] - public void BackstagePassesItems_WhenExpiryInOver10Days_QualityIncreaseByOne() + public void BackstagePassesItems_WhenExpiryInOver10Days_DecreaseSellInBy1AndQualityIncreaseBy1Upto50() { var items = new List { new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 11, 4).Build(), - new ItemBuilder("backstage passes to some other show", 20, 40).Build() + new ItemBuilder("backstage passes to some other show", 20, 40).Build(), + new ItemBuilder("backstage passes to some other show", 20, 49).Build(), + new ItemBuilder("backstage passes to some other show", 20, 50).Build() }; var expectedItemsAfterTest = new List { new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 10, 5).Build(), - new ItemBuilder("backstage passes to some other show", 19, 41).Build() + new ItemBuilder("backstage passes to some other show", 19, 41).Build(), + new ItemBuilder("backstage passes to some other show", 19, 50).Build(), + new ItemBuilder("backstage passes to some other show", 19, 50).Build() }; var app = new GildedRose(items); @@ -157,17 +146,21 @@ public class UpdateQualityTestFixture [Test] - public void BackstagePassesItems_WhenExpiryIn10To6Days_QualityIncreaseByTwo() + public void BackstagePassesItems_WhenExpiryIn10To6Days_DecreaseSellInBy1AndQualityIncreaseBy2Upto50() { var items = new List { new ItemBuilder("backstage passes to a TAFKAL80ETC concert", 10, 4).Build(), - new ItemBuilder("Backstage passes to some other show", 6, 41).Build() + new ItemBuilder("Backstage passes to some other show", 6, 41).Build(), + new ItemBuilder("backstage passes to some other show", 10, 49).Build(), + new ItemBuilder("backstage passes to some other show", 8, 50).Build() }; var expectedItemsAfterTest = new List { new ItemBuilder("backstage passes to a TAFKAL80ETC concert", 9, 6).Build(), - new ItemBuilder("Backstage passes to some other show", 5, 43).Build() + new ItemBuilder("Backstage passes to some other show", 5, 43).Build(), + new ItemBuilder("backstage passes to some other show", 9, 50).Build(), + new ItemBuilder("backstage passes to some other show", 7, 50).Build() }; var app = new GildedRose(items); @@ -177,17 +170,23 @@ public class UpdateQualityTestFixture } [Test] - public void BackstagePassesItems_WhenExpiryIn5to1Days_QualityIncreaseByThree() + public void BackstagePassesItems_WhenExpiryIn5to1Days_DecreaseSellInBy1AndQualityIncreaseBy3Upto50() { var items = new List { new ItemBuilder("Backstage passes to some other show", 5, 4).Build(), - new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 1, 41).Build() + new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 1, 41).Build(), + new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 4, 48).Build(), + new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 2, 49).Build(), + new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 1, 50).Build() }; var expectedItemsAfterTest = new List { new ItemBuilder("Backstage passes to some other show", 4, 7).Build(), - new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 0, 44).Build() + new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 0, 44).Build(), + new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 3, 50).Build(), + new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 1, 50).Build(), + new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 0, 50).Build() }; var app = new GildedRose(items); @@ -197,48 +196,19 @@ public class UpdateQualityTestFixture } [Test] - public void BackstagePassesItems_MaximumQuality_Is50() - { - var items = new List - { - new ItemBuilder("Backstage passes", 15, 49).Build(), - new ItemBuilder("Backstage passes to some other show", 10,49).Build(), - new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 5, 48).Build() - }; - var expectedItemsAfterDay1 = new List - { - new ItemBuilder("Backstage passes", 14, 50).Build(), - new ItemBuilder("Backstage passes to some other show", 9, 50).Build(), - new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 4, 50).Build() - }; - var expectedItemsAfterDay2 = new List - { - new ItemBuilder("Backstage passes", 13, 50).Build(), - new ItemBuilder("Backstage passes to some other show", 8, 50).Build(), - new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 3, 50).Build() - }; - - var app = new GildedRose(items); - - app.UpdateQuality(); - items.Should().BeEquivalentTo(expectedItemsAfterDay1); - - app.UpdateQuality(); - items.Should().BeEquivalentTo(expectedItemsAfterDay2); - } - - [Test] - public void BackstagePassesItems_WhenExpired_QualityDropsTo0() + public void BackstagePassesItems_WhenExpired_DecreaseSellInBy1AndQualityDropsTo0() { var items = new List { new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", 0, 4).Build(), - new ItemBuilder("Another type of backstage passes", 0, 4).Build() + new ItemBuilder("Another type of backstage passes", -1, 1).Build(), + new ItemBuilder("Another type of backstage passes", -16, 15).Build() }; var expectedItemsAfterTest = new List { new ItemBuilder("Backstage passes to a TAFKAL80ETC concert", -1, 0).Build(), - new ItemBuilder("Another type of backstage passes", -1, 0).Build() + new ItemBuilder("Another type of backstage passes", -2, 0).Build(), + new ItemBuilder("Another type of backstage passes", -17, 0).Build() }; var app = new GildedRose(items); @@ -248,17 +218,21 @@ public class UpdateQualityTestFixture } [Test] - public void ConjuredItems_WhenNotExpired_Should_DecreaseQualityByTwo() + public void ConjuredItems_WhenNotExpired_Should_DecreaseSellInBy1AndQualityBy2DownTo0() { var items = new List { new ItemBuilder("Conjured Mana Cake", 1, 4).Build(), - new ItemBuilder("some other conjured item", 5, 50).Build() + new ItemBuilder("some other conjured item", 15, 50).Build(), + new ItemBuilder("some other conjured item", 5, 1).Build(), + new ItemBuilder("some other conjured item", 5, 0).Build() }; var expectedItemsAfterTest = new List { new ItemBuilder("Conjured Mana Cake", 0, 2).Build(), - new ItemBuilder("some other conjured item", 4, 48).Build() + new ItemBuilder("some other conjured item", 14, 48).Build(), + new ItemBuilder("some other conjured item", 4, 0).Build(), + new ItemBuilder("some other conjured item", 4, 0).Build() }; var app = new GildedRose(items); @@ -268,15 +242,21 @@ public class UpdateQualityTestFixture } [Test] - public void ConjuredItems_WhenExpired_Should_DecreaseQualityByFourDownToZero() + public void ConjuredItems_WhenExpired_Should_DecreaseSellInBy1AndQualityBy4DownTo0() { var items = new List { new ItemBuilder("Conjured Mana Cake", 0, 3).Build(), + new ItemBuilder("Conjured Mana Cake", -1, 2).Build(), + new ItemBuilder("Conjured Mana Cake", -5, 1).Build(), + new ItemBuilder("Conjured Mana Cake", 0, 0).Build(), new ItemBuilder("some other conjured item", -1, 50).Build() }; var expectedItemsAfterTest = new List { + new ItemBuilder("Conjured Mana Cake", -1, 0).Build(), + new ItemBuilder("Conjured Mana Cake", -2, 0).Build(), + new ItemBuilder("Conjured Mana Cake", -6, 0).Build(), new ItemBuilder("Conjured Mana Cake", -1, 0).Build(), new ItemBuilder("some other conjured item", -2, 46).Build() };