public void Can_GetEggProductionReport() { var houses = new List <HenHouse> { new HenHouse { Id = Guid.NewGuid(), Active = true, Depreciation = 120, Name = "House 1", ProductiveAge = 90, PurchaseCost = 120, Weight = 120, YearUsage = 5 }, new HenHouse { Id = Guid.NewGuid(), Active = true, Depreciation = 100, Name = "House 2", ProductiveAge = 80, PurchaseCost = 100, Weight = 190, YearUsage = 3 } }; var productionList = new List <Models.Data.EggProduction> { new Models.Data.EggProduction { Id = Guid.NewGuid(), Date = DateTime.Today.AddDays(-1) }, new Models.Data.EggProduction { Id = Guid.NewGuid(), Date = DateTime.Today } }; var detailList = new List <Models.Data.EggProductionDetail> { new Models.Data.EggProductionDetail { CrackedEggCount = 1, Fcr = 1, GoodEggCount = 12, HouseId = houses[0].Id, ProductionId = productionList[0].Id, RetailQuantity = 100 }, new Models.Data.EggProductionDetail { CrackedEggCount = 2, Fcr = 1, GoodEggCount = 12, HouseId = houses[1].Id, ProductionId = productionList[0].Id, RetailQuantity = 200 }, new Models.Data.EggProductionDetail { CrackedEggCount = 1, Fcr = 1, GoodEggCount = 12, HouseId = houses[0].Id, ProductionId = productionList[1].Id, RetailQuantity = 100 }, new Models.Data.EggProductionDetail { CrackedEggCount = 2, Fcr = 1, GoodEggCount = 12, HouseId = houses[1].Id, ProductionId = productionList[1].Id, RetailQuantity = 200 }, }; using (var conn = factory.OpenDbConnection()) { foreach (var house in houses) { conn.InsertParam(house); } foreach (var production in productionList) { conn.InsertParam(production); } foreach (var detail in detailList) { conn.InsertParam(detail); } } var list = service.GetEggProductionReport(DateTime.Today.AddDays(-1), DateTime.Today); foreach (var item in list) { var production = productionList.First(p => p.Id == item.Id); Assert.Equal(production.Date, item.Date); foreach (var detail in item.Details) { var detailData = detailList.First(d => d.ProductionId == item.Id && d.HouseId == detail.House.Id); Assert.Equal(detailData.RetailQuantity, detail.RetailQuantity); Assert.Equal(detailData.GoodEggCount, detail.GoodEggCount); Assert.Equal(detailData.CrackedEggCount, detail.CrackedEggCount); Assert.Equal(detailData.Fcr, detail.Fcr); } } }