public void HistoryBeforeFirstRecord() { using (var container = new RhetosTestContainer()) { container.Resolve<ISqlExecuter>().ExecuteSql(new[] { "DELETE FROM TestHistory.Standard" }); var repository = container.Resolve<Common.DomRepository>(); var er = repository.TestHistory.Standard; var e = new TestHistory.Standard { Code = 1, Name = "a", Birthday = new DateTime(2001, 2, 3, 4, 5, 6) }; DateTime t0 = GetServerTime(container); Console.WriteLine("t0: " + t0.ToString("o")); er.Insert(new[] { e }); DateTime t1 = GetServerTime(container); Console.WriteLine("t1: " + t1.ToString("o")); const string v1 = "1 a 2001-02-03T04:05:06"; Assert.AreEqual(v1, Dump(er.All())); Assert.AreEqual(v1, Dump(er.Filter(t1.Add(DatabaseDateTimeImprecision)))); TestHistory.Standard[] loaded = er.Filter(t0.Subtract(DatabaseDateTimeImprecision)); Assert.AreEqual(0, loaded.Length); } }
public void HistoryWithInvalidData() { using (var container = new RhetosTestContainer()) { container.Resolve<ISqlExecuter>().ExecuteSql(new[] { "DELETE FROM TestHistory.Standard" }); var repository = container.Resolve<Common.DomRepository>(); var standardRepos = repository.TestHistory.Standard; var e = new TestHistory.Standard { Code = 1, Name = "a", Birthday = new DateTime(2001, 2, 3, 4, 5, 6) }; standardRepos.Insert(new[] { e }); string v1 = "1 a 2001-02-03T04:05:06"; Assert.AreEqual(v1, Dump(standardRepos.All())); System.Threading.Thread.Sleep(DatabaseDateTimeImprecision + DatabaseDateTimeImprecision); e.Code = 2; e.Name = "baaaaaaaaaaaaaaaaaaaa"; e.ActiveSince = null; e.Birthday = new DateTime(2011, 12, 13, 14, 15, 16); TestUtility.ShouldFail(() => standardRepos.Update(new[] { e })); } }
public void HistoryAtTime() { using (var container = new RhetosTestContainer()) { container.Resolve<ISqlExecuter>().ExecuteSql(new[] { "DELETE FROM TestHistory.Standard" }); var repository = container.Resolve<Common.DomRepository>(); var standardRepos = repository.TestHistory.Standard; var e = new TestHistory.Standard { Code = 1, Name = "a", Birthday = new DateTime(2001, 2, 3, 4, 5, 6) }; standardRepos.Insert(new[] { e }); DateTime t1 = GetServerTime(container); string v1 = "1 a 2001-02-03T04:05:06"; Assert.AreEqual(v1, Dump(standardRepos.All())); System.Threading.Thread.Sleep(DatabaseDateTimeImprecision + DatabaseDateTimeImprecision); e.Code = 2; e.Name = "b"; e.ActiveSince = null; e.Birthday = new DateTime(2011, 12, 13, 14, 15, 16); standardRepos.Update(new[] { e }); DateTime t2 = GetServerTime(container); string v2 = "2 b 2011-12-13T14:15:16"; Assert.AreEqual(v2, Dump(standardRepos.All())); System.Threading.Thread.Sleep(DatabaseDateTimeImprecision + DatabaseDateTimeImprecision); e.Code = 3; e.Name = "c"; e.ActiveSince = null; standardRepos.Update(new[] { e }); DateTime t3 = GetServerTime(container); string v3 = "3 c 2011-12-13T14:15:16"; Assert.AreEqual(v3, Dump(standardRepos.All())); Console.WriteLine("t1: " + t1.ToString("o")); Console.WriteLine("t2: " + t2.ToString("o")); Console.WriteLine("t3: " + t3.ToString("o")); container.Resolve<Common.ExecutionContext>().EntityFrameworkContext.ClearCache(); Assert.AreEqual(v1, Dump(standardRepos.Filter(t1.Add(DatabaseDateTimeImprecision))), "At time 1"); container.Resolve<Common.ExecutionContext>().EntityFrameworkContext.ClearCache(); Assert.AreEqual(v2, Dump(standardRepos.Filter(t2.Add(DatabaseDateTimeImprecision))), "At time 2"); container.Resolve<Common.ExecutionContext>().EntityFrameworkContext.ClearCache(); Assert.AreEqual(v3, Dump(standardRepos.Filter(t3.Add(DatabaseDateTimeImprecision))), "At time 3"); } }
public void HistoryWithDenySave() { using (var executionContext = new CommonTestExecutionContext()) { executionContext.SqlExecuter.ExecuteSql(new[] { "DELETE FROM TestHistory.Standard" }); var repository = new Common.DomRepository(executionContext); var standardRepos = repository.TestHistory.Standard; var e = new TestHistory.Standard { Code = 1, Name = "a", Birthday = new DateTime(2001, 2, 3, 4, 5, 6) }; standardRepos.Insert(new[] { e }); string v1 = "1 a 2001-02-03T04:05:06"; Assert.AreEqual(v1, Dump(standardRepos.All())); System.Threading.Thread.Sleep(DatabaseDateTimeImprecision + DatabaseDateTimeImprecision); e.Code = 2; e.Name = "baaaaaaaaaaaaaaaaaaaa"; e.ActiveSince = null; e.Birthday = new DateTime(2011, 12, 13, 14, 15, 16); TestUtility.ShouldFail(() => standardRepos.Update(new[] { e })); } }