public Task ShouldProjectUsingDateDiff() { return(RunTest(async context => { var dateTime1 = new PublicDateTime { Value = DateTime.Today.AddMonths(-1) }; var dateTime2 = new PublicDateTime { Value = DateTime.Today }; var dateTime3 = new PublicDateTime { Value = DateTime.Today.AddMonths(+1) }; await context.DateTimeItems.AddRangeAsync(dateTime1, dateTime2, dateTime3); await context.SaveChangesAsync(); var dateTimeDtos = await context .DateTimeItems .Where(d => (d.Value - DateTime.Today).TotalDays > 15) .Project().To <PublicDateTimeDto>() .OrderBy(pvm => pvm.Id) .ToListAsync(); var dateTimeDto = dateTimeDtos.ShouldHaveSingleItem(); dateTimeDto.Id.ShouldBe(dateTime3.Id); dateTimeDto.Value.ShouldBe(dateTime3.Value); })); }
protected Task DoShouldFormatDateTimes(Func <DateTime, string> expectedDateStringFactory = null) { if (expectedDateStringFactory == null) { expectedDateStringFactory = d => d.ToString("o"); } return(RunTest(async(context, mapper) => { mapper.WhenMapping .StringsFrom <DateTime>(c => c.FormatUsing("o")); var source = new PublicDateTime { Value = DateTime.Now }; var result = mapper.Map(source).ToANew <PublicStringDto>(); result.Value.ShouldBe(source.Value.ToString("o")); await context.DateTimeItems.Add(source); await context.SaveChanges(); var stringDto = context .DateTimeItems .ProjectUsing(mapper) .To <PublicStringDto>() .ShouldHaveSingleItem(); stringDto.Value.ShouldBe(expectedDateStringFactory.Invoke(source.Value)); })); }