public void shouldGetCalorieHistory()
{
var expectedUserIngredients = GetExpectedUserIngredients(todaysDate);
var repositoryMock = new Mock<IUserIngredientRepository>();
var nutrientRepositoryMock = new Mock<INutrientRepository>();
var nutrientMock = new Mock<Nutrient>();
var expectedNutrientId = 3;
nutrientMock.Setup(x => x.Id).Returns(expectedNutrientId);
var firstDate = todaysDate.AddDays(-100).Date;
var lastDate = todaysDate;
nutrientRepositoryMock.Setup(x => x.GetByName(NutrientEntity.EnergyInKcal.ToString())).Returns(nutrientMock.Object);
repositoryMock.Setup(x => x.GetUserIngredientsByUser(It.IsAny<int>(), firstDate, lastDate.AddDays(1))).Returns(expectedUserIngredients);
var returnedValues = new UserIngredientBusinessLogic(repositoryMock.Object, null, nutrientRepositoryMock.Object).GetNutrientHistory(NutrientEntity.EnergyInKcal, new User());
repositoryMock.VerifyAll();
nutrientRepositoryMock.VerifyAll();
var todaysUserIngredients = (from ui in expectedUserIngredients where ui.Date == todaysDate select ui);
var oldUserIngredients = (from ui in expectedUserIngredients where ui.Date == todaysDate.AddDays(-100) select ui);
Assert.That(returnedValues.Id, Is.EqualTo(expectedNutrientId));
Assert.That(returnedValues.GetValue(firstDate).Value, Is.EqualTo(oldUserIngredients.Sum(x => x.GetActualCalorieCount(y => y.GetNutrient(NutrientEntity.EnergyInKcal).Value))));
Assert.That(returnedValues.GetValue(lastDate).Value, Is.EqualTo(todaysUserIngredients.Sum(x => x.GetActualCalorieCount(y => y.GetNutrient(NutrientEntity.EnergyInKcal).Value))));
}