From 807125a90983e946745db70150e1db84a414507e Mon Sep 17 00:00:00 2001 From: Daniel F Date: Tue, 11 Jul 2023 21:42:05 +0100 Subject: [PATCH] Updated some tests and addes Sulfuras item update service tests --- .../aged_brie_item_update_service_test.go | 19 ++++-- .../normal_item_update_service_test.go | 8 +-- .../sulfuras_item_update_service_test.go | 63 +++++++++++++++++++ 3 files changed, 82 insertions(+), 8 deletions(-) create mode 100644 go/services/sulfuras_item_update_service_test.go diff --git a/go/services/aged_brie_item_update_service_test.go b/go/services/aged_brie_item_update_service_test.go index 1cde3ad2..62dc589b 100644 --- a/go/services/aged_brie_item_update_service_test.go +++ b/go/services/aged_brie_item_update_service_test.go @@ -14,7 +14,7 @@ func TestAgedBrieItemUpdateService_QualityBeforeSellIn(t *testing.T) { ) { item := models.NewItem(&models.ItemModel{"Aged Brie", 5, 5}) agedBrieItemUpdateService.UpdateQuality(item) - assert.Equal(t, item.Model.Quality, 6) + assert.Equal(t, 6, item.Model.Quality) }) } @@ -25,7 +25,7 @@ func TestAgedBrieItemUpdateService_QualityAfterSellIn0Days(t *testing.T) { ) { item := models.NewItem(&models.ItemModel{"Aged Brie", 0, 5}) agedBrieItemUpdateService.UpdateQuality(item) - assert.Equal(t, item.Model.Quality, 7) + assert.Equal(t, 7, item.Model.Quality) }) } @@ -36,7 +36,7 @@ func TestAgedBrieItemUpdateService_QualityAfterSellIn4Days(t *testing.T) { ) { item := models.NewItem(&models.ItemModel{"Aged Brie", -4, 5}) agedBrieItemUpdateService.UpdateQuality(item) - assert.Equal(t, item.Model.Quality, 7) + assert.Equal(t, 7, item.Model.Quality) }) } @@ -47,6 +47,17 @@ func TestAgedBrieItemUpdateService_QualityNotHigherThan50(t *testing.T) { ) { item := models.NewItem(&models.ItemModel{"Aged Brie", -4, 50}) agedBrieItemUpdateService.UpdateQuality(item) - assert.Equal(t, item.Model.Quality, 50) + assert.Equal(t, 50, item.Model.Quality) + }) +} + +// sellIn date must decrease +func TestAgedBrieItemUpdateService_SellInIsDecreased(t *testing.T) { + runTestCase(t, func( + sulfurasItemUpdateService SulfurasItemUpdateService, + ) { + item := models.NewItem(&models.ItemModel{"Aged Brie", 5, 5}) + sulfurasItemUpdateService.UpdateQuality(item) + assert.Equal(t, 4, item.Model.SellIn) }) } diff --git a/go/services/normal_item_update_service_test.go b/go/services/normal_item_update_service_test.go index a8d4cb52..f76542c2 100644 --- a/go/services/normal_item_update_service_test.go +++ b/go/services/normal_item_update_service_test.go @@ -14,7 +14,7 @@ func TestNormalItemUpdateService_QualityBeforeSellIn(t *testing.T) { ) { item := models.NewItem(&models.ItemModel{"Random normal item", 5, 5}) normalItemUpdateService.UpdateQuality(item) - assert.Equal(t, item.Model.Quality, 4) + assert.Equal(t, 4, item.Model.Quality) }) } @@ -25,7 +25,7 @@ func TestNormalItemUpdateService_QualityAfterSellIn0Days(t *testing.T) { ) { item := models.NewItem(&models.ItemModel{"Random normal item", 0, 5}) normalItemUpdateService.UpdateQuality(item) - assert.Equal(t, item.Model.Quality, 3) + assert.Equal(t, 3, item.Model.Quality) }) } @@ -36,7 +36,7 @@ func TestNormalItemUpdateService_QualityAfterSellIn4Days(t *testing.T) { ) { item := models.NewItem(&models.ItemModel{"Random normal item", -4, 5}) normalItemUpdateService.UpdateQuality(item) - assert.Equal(t, item.Model.Quality, 3) + assert.Equal(t, 3, item.Model.Quality) }) } @@ -47,6 +47,6 @@ func TestNormalItemUpdateService_QualityNotLowerThan0(t *testing.T) { ) { item := models.NewItem(&models.ItemModel{"Random normal item", -4, 0}) normalItemUpdateService.UpdateQuality(item) - assert.Equal(t, item.Model.Quality, 0) + assert.Equal(t, 0, item.Model.Quality) }) } diff --git a/go/services/sulfuras_item_update_service_test.go b/go/services/sulfuras_item_update_service_test.go new file mode 100644 index 00000000..20195c5f --- /dev/null +++ b/go/services/sulfuras_item_update_service_test.go @@ -0,0 +1,63 @@ +package services + +import ( + "testing" + "github.com/stretchr/testify/assert" + + "github.com/emilybache/gildedrose-refactoring-kata/models" +) + +// Sulfuras item quality is 80 before sellIn +func TestSulfurasItemUpdateService_QualityBeforeSellIn(t *testing.T) { + runTestCase(t, func( + sulfurasItemUpdateService SulfurasItemUpdateService, + ) { + item := models.NewItem(&models.ItemModel{"Sulfuras, Hand of Ragnaros", 5, 5}) + sulfurasItemUpdateService.UpdateQuality(item) + assert.Equal(t, 80, item.Model.Quality) + }) +} + +// Sulfuras item sellIn is immutable +func TestSulfurasItemUpdateService_SellInIsImmutable(t *testing.T) { + runTestCase(t, func( + sulfurasItemUpdateService SulfurasItemUpdateService, + ) { + item := models.NewItem(&models.ItemModel{"Sulfuras, Hand of Ragnaros", 5, 5}) + sulfurasItemUpdateService.UpdateQuality(item) + assert.Equal(t, 5, item.Model.SellIn) + }) +} + +// If the sellIn date has been passed, the Sulfuras item quality is still 80 +func TestSulfurasItemUpdateService_QualityAfterSellIn0Days(t *testing.T) { + runTestCase(t, func( + sulfurasItemUpdateService SulfurasItemUpdateService, + ) { + item := models.NewItem(&models.ItemModel{"Sulfuras, Hand of Ragnaros", 0, 5}) + sulfurasItemUpdateService.UpdateQuality(item) + assert.Equal(t, 80, item.Model.Quality) + }) +} + +// If the sellIn date has been passed, the Sulfuras item quality is still 80 +func TestSulfurasItemUpdateService_QualityAfterSellIn4Days(t *testing.T) { + runTestCase(t, func( + sulfurasItemUpdateService SulfurasItemUpdateService, + ) { + item := models.NewItem(&models.ItemModel{"Sulfuras, Hand of Ragnaros", -4, 5}) + sulfurasItemUpdateService.UpdateQuality(item) + assert.Equal(t, 80, item.Model.Quality) + }) +} + +// Sulfuras item negative sellIn is immutable +func TestSulfurasItemUpdateService_NegativeSellInIsImmutable(t *testing.T) { + runTestCase(t, func( + sulfurasItemUpdateService SulfurasItemUpdateService, + ) { + item := models.NewItem(&models.ItemModel{"Sulfuras, Hand of Ragnaros", -4, 5}) + sulfurasItemUpdateService.UpdateQuality(item) + assert.Equal(t, -4, item.Model.SellIn) + }) +}