public void GildedTinCanCanGenerateCorrectDepreciation() { var twoYearsAgo = DateTime.Now.AddYears(-2); var expiredBeforeThisReport = new TinnedFood(twoYearsAgo) { Name = "A", Price = 10 }; var oneYearAgo = DateTime.Now.AddYears(-1).AddTicks(-1); var expiredDuringThisReport = new TinnedFood(oneYearAgo) { Name = "A", Price = 15 }; var yesterday = DateTime.Now.AddDays(-1); var notExpired = new TinnedFood(yesterday) { Name = "A", Price = 20 }; var stockItems = new List <TinnedFood> { expiredBeforeThisReport, expiredDuringThisReport, notExpired }; var financialReport = GildedStockManagerFactory .GildedTinCan() .WithStock(stockItems) .FinancialReportAsAt(DateTime.Now); financialReport.ValueOfStock.Should().Be(20M); financialReport.Depreciation.Should().Be(15M); }
public void GildedDressCanGenerateCorrectDepreciation() { var thisMonth = DateTime.Now.AddDays(-1); var addedThisMonth = new Dress(thisMonth) { Name = "A", Price = 10 }; var tenWeeksAgo = DateTime.Now.AddDays(-70).AddTicks(-1); var priceReducesThisMonth = new Dress(tenWeeksAgo) { Name = "A", Price = 10 }; var stockItems = new List <Dress> { addedThisMonth, priceReducesThisMonth }; var financialReport = GildedStockManagerFactory .GildedDress() .WithStock(stockItems) .FinancialReportAsAt(DateTime.Now); financialReport.ValueOfStock.Should().Be(17.5M); financialReport.Depreciation.Should().Be(2.5M); }
public void TheGildedTinCanCannotSellYearOldPlusTins() { var oneYearAndOneDayAgo = DateTime.Now.AddYears(-1).AddDays(-1); var twoMonthsAgo = DateTime.Now.AddMonths(-2); var stock = new List <TinnedFood> { new TinnedFood(oneYearAndOneDayAgo) { Name = "old", Price = 10 }, new TinnedFood(twoMonthsAgo) { Name = "new", Price = 10 } }; var stockNow = GildedStockManagerFactory .GildedTinCan() .WithStock(stock) .GetStockList(DateTime.Now); var stockItem = stockNow.Single(); stockItem.Name.Should().Be("new"); }
public void AllTenantsWantToRecordItemNameAndPrice() { var stockItems = new List <StockItem> { new StockItem { Name = "A", Price = 10 } }; var shop = GildedStockManagerFactory.WithStock(stockItems); shop.StockList.Single().Name.Should().Be("A"); }
public void GildedDressCanGenerateZeroDepreciation() { var stockAdded = DateTime.Now.AddDays(-1); var stockItems = new List <Dress> { new Dress(stockAdded) { Name = "A", Price = 10 } }; var financialReport = GildedStockManagerFactory .GildedDress() .WithStock(stockItems) .FinancialReportAsAt(DateTime.Now); financialReport.ValueOfStock.Should().Be(10); financialReport.Depreciation.Should().Be(0); }
public void TheGildedDressDecreasesPriceAfterTenWeeks() { var stockAdded = DateTime.Now.AddDays(-100); var stockItems = new List <Dress> { new Dress(stockAdded) { Name = "A", Price = 10 } }; var tenWeekslater = stockAdded.AddDays(70); var stockAfterTenWeeks = GildedStockManagerFactory .GildedDress() .WithStock(stockItems) .GetStockList(tenWeekslater); var stockItem = stockAfterTenWeeks.Single(); stockItem.Name.Should().Be("A"); stockItem.Price.Should().Be(10 * 0.75M); }