Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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 }));
            }
        }
Exemple #3
0
        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");
            }
        }
Exemple #4
0
        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 }));
            }
        }