You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
EntityFrameworkCore.Jet/test/EFCore.Jet.Tests/JetDateTimeTest.cs

205 lines
7.9 KiB
C#

// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.TestUtilities;
using Xunit;
namespace EntityFrameworkCore.Jet
{
public class JetDateTimeTest : TestBase<JetDateTimeTest.Context>
{
[ConditionalFact]
public virtual void SanityCheck()
{
using var context = CreateContext();
context.Database.EnsureCreatedResiliently();
var cookies = context.Cookies
.ToList();
Assert.Equal(2, cookies.Count);
}
[ConditionalFact]
public virtual void Where_datetime_with_HasDefaultValue()
{
using var context = CreateContext();
context.Database.EnsureCreatedResiliently();
var cookies = context.Cookies
.Where(o => o.BestServedBeforeDateTime == new DateTime(2021, 12, 31, 13, 42, 21, 123))
.ToList();
Assert.Equal(2, cookies.Count);
Assert.True(cookies.All(c => c.BestServedBeforeDateTime == new DateTime(2021, 12, 31, 13, 42, 21)));
}
[ConditionalFact]
public virtual void Where_datetime_with_HasDefaultValue_EnableMillisecondsSupport()
{
using var context = CreateContext(jetOptions: builder => builder.EnableMillisecondsSupport());
context.Database.EnsureCreatedResiliently();
var cookies = context.Cookies
.Where(o => o.BestServedBeforeDateTime == new DateTime(2021, 12, 31, 13, 42, 21, 123))
.ToList();
Assert.Equal(2, cookies.Count);
Assert.True(cookies.All(c => c.BestServedBeforeDateTime == new DateTime(2021, 12, 31, 13, 42, 21, 123)));
}
[ConditionalFact]
public virtual void Where_datetime_with_HasDefaultValue_precision()
{
using var context = CreateContext();
context.Database.EnsureCreatedResiliently();
var cookies = context.Cookies
.Where(o => o.BestServedBeforeDateTime == new DateTime(2021, 12, 31, 13, 42, 21, 987))
.ToList();
Assert.Equal(2, cookies.Count);
Assert.True(cookies.All(c => c.BestServedBeforeDateTime == new DateTime(2021, 12, 31, 13, 42, 21)));
}
[ConditionalFact]
public virtual void Where_datetime_with_HasDefaultValue_precision_EnableMillisecondsSupport()
{
using var context = CreateContext(jetOptions: builder => builder.EnableMillisecondsSupport());
context.Database.EnsureCreatedResiliently();
var cookies = context.Cookies
.Where(o => o.BestServedBeforeDateTime == new DateTime(2021, 12, 31, 13, 42, 21, 987))
.ToList();
Assert.Empty(cookies);
}
[ConditionalFact]
public virtual void Where_datetime_with_HasDefaultValueSql()
{
using var context = CreateContext();
context.Database.EnsureCreatedResiliently();
var cookies = context.Cookies
.Where(o => o.BestServedAfterDateTime == new DateTime(2020, 12, 31, 13, 42, 21))
.ToList();
Assert.Equal(2, cookies.Count);
Assert.True(cookies.All(c => c.BestServedAfterDateTime == new DateTime(2020, 12, 31, 13, 42, 21)));
}
[ConditionalFact]
public virtual void Where_datetime_with_HasDefaultValueSql_EnableMillisecondsSupport()
{
using var context = CreateContext(jetOptions: builder => builder.EnableMillisecondsSupport());
context.Database.EnsureCreatedResiliently();
var cookies = context.Cookies
.Where(o => o.BestServedAfterDateTime == new DateTime(2020, 12, 31, 13, 42, 21))
.ToList();
Assert.Equal(2, cookies.Count);
Assert.True(cookies.All(c => c.BestServedAfterDateTime == new DateTime(2020, 12, 31, 13, 42, 21)));
}
[ConditionalFact]
public virtual void Where_datetime_with_fractions()
{
using var context = CreateContext();
context.Database.EnsureCreatedResiliently();
var cookies = context.Cookies
.Where(o => o.PuchasedDateTime == new DateTime(2019, 12, 31, 13, 42, 21, 123))
.ToList();
Assert.Single(cookies);
Assert.Equal(new DateTime(2019, 12, 31, 13, 42, 21), cookies[0].PuchasedDateTime);
}
[ConditionalFact]
public virtual void Where_datetime_with_fractions_EnableMillisecondsSupport()
{
using var context = CreateContext(jetOptions: builder => builder.EnableMillisecondsSupport());
context.Database.EnsureCreatedResiliently();
var cookies = context.Cookies
.Where(o => o.PuchasedDateTime == new DateTime(2019, 12, 31, 13, 42, 21, 123))
.ToList();
Assert.Single(cookies);
Assert.Equal(new DateTime(2019, 12, 31, 13, 42, 21, 123), cookies[0].PuchasedDateTime);
}
[ConditionalFact]
public virtual void Where_datetime_with_fractions_parameter()
{
using var context = CreateContext();
var dateTime = new DateTime(2019, 12, 31, 13, 42, 21, 123);
var cookies = context.Cookies
.Where(o => o.PuchasedDateTime == dateTime)
.ToList();
Assert.Single(cookies);
Assert.Equal(new DateTime(2019, 12, 31, 13, 42, 21), cookies[0].PuchasedDateTime);
}
[ConditionalFact]
public virtual void Where_datetime_with_fractions_parameter_EnableMillisecondsSupport()
{
using var context = CreateContext(jetOptions: builder => builder.EnableMillisecondsSupport());
var dateTime = new DateTime(2019, 12, 31, 13, 42, 21, 123);
var cookies = context.Cookies
.Where(o => o.PuchasedDateTime == dateTime)
.ToList();
Assert.Single(cookies);
Assert.Equal(new DateTime(2019, 12, 31, 13, 42, 21, 123), cookies[0].PuchasedDateTime);
}
public class Cookie
{
public int CookieId { get; set; }
public string Name { get; set; }
public DateTime PuchasedDateTime { get; set; }
public DateTime BestServedBeforeDateTime { get; set; }
public DateTime BestServedAfterDateTime { get; set; }
}
public class Context : ContextBase
{
public DbSet<Cookie> Cookies { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Cookie>(
entity =>
{
entity.Property(e => e.BestServedBeforeDateTime)
.HasDefaultValue(new DateTime(2021, 12, 31, 13, 42, 21, 123));
entity.Property(e => e.BestServedAfterDateTime)
.HasDefaultValueSql("'2020-12-31 13:42:21'");
entity.HasData(
new Cookie
{
CookieId = 1,
Name = "Basic",
PuchasedDateTime = new DateTime(2019, 12, 31, 13, 42, 21, 123),
},
new Cookie
{
CookieId = 2,
Name = "Chocolate Chip",
PuchasedDateTime = new DateTime(2019, 12, 24, 18, 09, 04, 234).AddTicks(5678),
});
});
}
}
}
}