public Task ShouldFormatDecimalsInline() { return(RunTest(async(context, mapper) => { var source = new PublicDecimal { Value = 123.00m }; await context.DecimalItems.AddAsync(source); await context.SaveChangesAsync(); var stringDto = await context .DecimalItems .ProjectUsing(mapper) .To <PublicStringDto>(cfg => cfg .WhenMapping .StringsFrom <decimal>(c => c.FormatUsing("C")) .AndWhenMapping .From <PublicDecimal>() .ProjectedTo <PublicStringDto>() .Map(d => d.Value * 2) .To(dto => dto.Value)) .SingleAsync(); stringDto.Value.ShouldBe(246.00m.ToString("C")); })); }
protected Task DoShouldFormatDecimals(Func <decimal, string> expectedDecimalStringFactory = null) { if (expectedDecimalStringFactory == null) { expectedDecimalStringFactory = d => d.ToString("C"); } return(RunTest(async(context, mapper) => { mapper.WhenMapping .StringsFrom <decimal>(c => c.FormatUsing("C")); var source = new PublicDecimal { Value = 674378.52m }; var result = mapper.Map(source).ToANew <PublicStringDto>(); result.Value.ShouldBe(source.Value.ToString("C")); await context.DecimalItems.Add(source); await context.SaveChanges(); var stringDto = context .DecimalItems .ProjectUsing(mapper) .To <PublicStringDto>() .ShouldHaveSingleItem(); stringDto.Value.ShouldBe(expectedDecimalStringFactory.Invoke(source.Value)); })); }