diff --git a/src/NHibernate.Test/Async/NHSpecificTest/GH2820/FixtureByCode.cs b/src/NHibernate.Test/Async/NHSpecificTest/GH2820/FixtureByCode.cs new file mode 100644 index 00000000000..765f0657908 --- /dev/null +++ b/src/NHibernate.Test/Async/NHSpecificTest/GH2820/FixtureByCode.cs @@ -0,0 +1,79 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by AsyncGenerator. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + + +using System; +using System.Linq; +using NHibernate.Cfg.MappingSchema; +using NHibernate.Dialect; +using NHibernate.Mapping.ByCode; +using NUnit.Framework; +using NHibernate.Linq; + +namespace NHibernate.Test.NHSpecificTest.GH2820 +{ + using System.Threading.Tasks; + [TestFixture] + public class PostgresTimestampzFixtureAsync : TestCaseMappingByCode + { + protected override HbmMapping GetMappings() + { + var mapper = new ModelMapper(); + mapper.Class(rc => + { + rc.Id(x => x.Id, m => m.Generator(Generators.GuidComb)); + rc.Property(x => x.Name); + rc.Property(x => x.Timestamp, m => m.Column(x => x.SqlType("timestamp with time zone"))); + }); + + return mapper.CompileMappingForAllExplicitlyAddedEntities(); + } + + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return dialect is PostgreSQLDialect; + } + + protected override void OnSetUp() + { + using (var session = OpenSession()) + using (var transaction = session.BeginTransaction()) + { + var e1 = new Entity {Name = "Bob", Timestamp = DateTimeOffset.UtcNow}; + session.Save(e1); + + transaction.Commit(); + } + } + + protected override void OnTearDown() + { + using (var session = OpenSession()) + using (var transaction = session.BeginTransaction()) + { + session.CreateQuery("delete from System.Object").ExecuteUpdate(); + + transaction.Commit(); + } + } + + [Test] + public async Task CanRetrieveEntityWithTimeStampColumnAsync() + { + using (var session = OpenSession()) + { + var result = from e in session.Query() + where e.Name == "Bob" + select e; + + Assert.That(await (result.ToListAsync()), Has.Count.EqualTo(1)); + } + } + } +} diff --git a/src/NHibernate.Test/NHSpecificTest/GH2820/Entity.cs b/src/NHibernate.Test/NHSpecificTest/GH2820/Entity.cs new file mode 100644 index 00000000000..87261e3239b --- /dev/null +++ b/src/NHibernate.Test/NHSpecificTest/GH2820/Entity.cs @@ -0,0 +1,11 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.GH2820 +{ + class Entity + { + public virtual Guid Id { get; set; } + public virtual string Name { get; set; } + public virtual DateTimeOffset Timestamp { get; set; } + } +} diff --git a/src/NHibernate.Test/NHSpecificTest/GH2820/FixtureByCode.cs b/src/NHibernate.Test/NHSpecificTest/GH2820/FixtureByCode.cs new file mode 100644 index 00000000000..f8e196cd0e6 --- /dev/null +++ b/src/NHibernate.Test/NHSpecificTest/GH2820/FixtureByCode.cs @@ -0,0 +1,67 @@ +using System; +using System.Linq; +using NHibernate.Cfg.MappingSchema; +using NHibernate.Dialect; +using NHibernate.Mapping.ByCode; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.GH2820 +{ + [TestFixture] + public class PostgresTimestampzFixture : TestCaseMappingByCode + { + protected override HbmMapping GetMappings() + { + var mapper = new ModelMapper(); + mapper.Class(rc => + { + rc.Id(x => x.Id, m => m.Generator(Generators.GuidComb)); + rc.Property(x => x.Name); + rc.Property(x => x.Timestamp, m => m.Column(x => x.SqlType("timestamp with time zone"))); + }); + + return mapper.CompileMappingForAllExplicitlyAddedEntities(); + } + + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return dialect is PostgreSQLDialect; + } + + protected override void OnSetUp() + { + using (var session = OpenSession()) + using (var transaction = session.BeginTransaction()) + { + var e1 = new Entity {Name = "Bob", Timestamp = DateTimeOffset.UtcNow}; + session.Save(e1); + + transaction.Commit(); + } + } + + protected override void OnTearDown() + { + using (var session = OpenSession()) + using (var transaction = session.BeginTransaction()) + { + session.CreateQuery("delete from System.Object").ExecuteUpdate(); + + transaction.Commit(); + } + } + + [Test] + public void CanRetrieveEntityWithTimeStampColumn() + { + using (var session = OpenSession()) + { + var result = from e in session.Query() + where e.Name == "Bob" + select e; + + Assert.That(result.ToList(), Has.Count.EqualTo(1)); + } + } + } +}