コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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");
        }
コード例 #4
0
        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");
        }
コード例 #5
0
        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);
        }
コード例 #6
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);
        }