From 4871885ade0a77243615684b6a6f9f74f1d2d8f0 Mon Sep 17 00:00:00 2001 From: Daniel F Date: Tue, 11 Jul 2023 21:55:01 +0100 Subject: [PATCH] Added BackstagePassItemUpdateService test --- ...backstage_pass_item_update_service_test.go | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 go/services/backstage_pass_item_update_service_test.go diff --git a/go/services/backstage_pass_item_update_service_test.go b/go/services/backstage_pass_item_update_service_test.go new file mode 100644 index 00000000..c2c5f1e2 --- /dev/null +++ b/go/services/backstage_pass_item_update_service_test.go @@ -0,0 +1,74 @@ +package services + +import ( + "testing" + "github.com/stretchr/testify/assert" + + "github.com/emilybache/gildedrose-refactoring-kata/models" +) + +// BackstagePass item quality increments +1 >10 days before sellIn +func TestBackstagePassItemUpdateService_QualityBeforeSellIn(t *testing.T) { + runTestCase(t, func( + backstagePassItemUpdateService BackstagePassItemUpdateService, + ) { + item := models.NewItem(&models.ItemModel{"Backstage passes to a TAFKAL80ETC concert", 20, 5}) + backstagePassItemUpdateService.UpdateQuality(item) + assert.Equal(t, 6, item.Model.Quality) + }) +} + +// BackstagePass item quality increments +2 10 days before sellIn +func TestBackstagePassItemUpdateService_QualityBeforeSellIn10Days(t *testing.T) { + runTestCase(t, func( + backstagePassItemUpdateService BackstagePassItemUpdateService, + ) { + item := models.NewItem(&models.ItemModel{"Backstage passes to a TAFKAL80ETC concert", 10, 5}) + backstagePassItemUpdateService.UpdateQuality(item) + assert.Equal(t, 7, item.Model.Quality) + }) +} + +// BackstagePass item quality increments +3 5 days before sellIn +func TestBackstagePassItemUpdateService_QualityBeforeSellIn5Days(t *testing.T) { + runTestCase(t, func( + backstagePassItemUpdateService BackstagePassItemUpdateService, + ) { + item := models.NewItem(&models.ItemModel{"Backstage passes to a TAFKAL80ETC concert", 5, 5}) + backstagePassItemUpdateService.UpdateQuality(item) + assert.Equal(t, 8, item.Model.Quality) + }) +} + +// If the sellIn date has been passed, the BackstagePass item quality is 0 +func TestBackstagePassItemUpdateService_QualityAfterSellIn0Days(t *testing.T) { + runTestCase(t, func( + backstagePassItemUpdateService BackstagePassItemUpdateService, + ) { + item := models.NewItem(&models.ItemModel{"Backstage passes to a TAFKAL80ETC concert", 0, 5}) + backstagePassItemUpdateService.UpdateQuality(item) + assert.Equal(t, 0, item.Model.Quality) + }) +} + +// If the sellIn date has been passed, the BackstagePass item quality is still 0 +func TestBackstagePassItemUpdateService_QualityAfterSellIn4Days(t *testing.T) { + runTestCase(t, func( + backstagePassItemUpdateService BackstagePassItemUpdateService, + ) { + item := models.NewItem(&models.ItemModel{"Backstage passes to a TAFKAL80ETC concert", -4, 5}) + backstagePassItemUpdateService.UpdateQuality(item) + assert.Equal(t, 0, item.Model.Quality) + }) +} + +// sellIn date must decrease +func TestBackstagePassItemUpdateService_SellInIsDecreased(t *testing.T) { + runTestCase(t, func( + backstagePassItemUpdateService BackstagePassItemUpdateService, + ) { + item := models.NewItem(&models.ItemModel{"Random normal item", -4, 0}) + backstagePassItemUpdateService.UpdateQuality(item) + assert.Equal(t, -5, item.Model.SellIn) + }) +}