Пример #1
0
        public static void QuerySetShouldFillIHasDataTableList()
        {
            SqlClientRegistrar.Register <DaoReferenceObject>();
            QuerySet testQuerySet = new QuerySet();

            Expect.IsNull(testQuerySet.DataSet);
            DaoReferenceObject test = new DaoReferenceObject();

            test.StringProperty = "".RandomString(8);
            test.Commit();

            testQuerySet.Select <DaoReferenceObjectColumns, DaoReferenceObject>(f => f.Id == test.Id);

            DaoReferenceObject dao = new DaoReferenceObject();

            dao.StringProperty = "".RandomString(5);

            testQuerySet.Insert <DaoReferenceObject>(dao);

            testQuerySet.Execute(Db.For <DaoReferenceObject>());

            Expect.IsNotNull(testQuerySet.DataSet);
            Expect.IsTrue(testQuerySet.DataSet.Tables.Count == 2);
            Expect.IsGreaterThan(testQuerySet.Results.Count, 0);
            Expect.AreEqual(2, testQuerySet.Results.Count);

            DaoReferenceObject d = testQuerySet.Results.ToDao <DaoReferenceObject>(1);

            Expect.AreEqual(dao.StringProperty, d.StringProperty);

            DaoReferenceObjectCollection coll = testQuerySet.Results.As <DaoReferenceObjectCollection>(0);

            Expect.IsNotNull(coll);
            Expect.IsGreaterThan(coll.Count, 0);
        }
Пример #2
0
        public static void ChildCollectionShouldHaveCorrectValues()
        {
            SqlClientRegistrar.Register <DaoReferenceObject>();

            string childName = "Name_".RandomString(3);

            DaoReferenceObject d = new DaoReferenceObject();

            d.StringProperty = "".RandomString(8);
            d.Commit();

            var child = d.DaoReferenceObjectWithForeignKeyCollectionByDaoReferenceObjectId.AddNew();

            child.Name = childName;

            d.Commit();

            d = DaoReferenceObject.OneWhere(f => f.Id == d.Id);

            Expect.AreEqual(1, d.DaoReferenceObjectWithForeignKeyCollectionByDaoReferenceObjectId.Count);
            Expect.AreEqual(child.Name, d.DaoReferenceObjectWithForeignKeyCollectionByDaoReferenceObjectId[0].Name);

            child = DaoReferenceObjectWithForeignKey.OneWhere(f => f.Id == d.DaoReferenceObjectWithForeignKeyCollectionByDaoReferenceObjectId[0].Id);

            Expect.AreEqual(childName, child.Name);
            Expect.IsNotNull(child.DaoReferenceObjectOfDaoReferenceObjectId);
            Expect.AreEqual(child.DaoReferenceObjectOfDaoReferenceObjectId.Id, d.Id);
        }
Пример #3
0
        public static void DeleteShouldDeleteChildren()
        {
            SqlClientRegistrar.Register <DaoReferenceObject>();

            DaoReferenceObject parent = new DaoReferenceObject();

            parent.StringProperty = "Parent_".RandomString(3);

            parent.Commit();

            var d1 = parent.DaoReferenceObjectWithForeignKeyCollectionByDaoReferenceObjectId.AddNew();

            d1.Name = "".RandomString(3);

            var d2 = parent.DaoReferenceObjectWithForeignKeyCollectionByDaoReferenceObjectId.AddNew();

            d2.Name = "".RandomString(3);

            parent.Commit();

            Expect.IsNotNull(d2.Id);

            DaoReferenceObject check = DaoReferenceObject.OneWhere(c => c.Id == parent.Id);
            DaoReferenceObjectWithForeignKey check2 = DaoReferenceObjectWithForeignKey.OneWhere(c => c.Id == d2.Id);

            Expect.AreEqual(2, check.DaoReferenceObjectWithForeignKeyCollectionByDaoReferenceObjectId.Count);
            Expect.IsNotNull(check2);

            check.Delete();

            check2 = DaoReferenceObjectWithForeignKey.OneWhere(c => c.Id == d2.Id);
            Expect.IsNull(check2);
        }
Пример #4
0
        public void SaveAndQueryTest()
        {
            Database db = new SQLiteDatabase(nameof(SaveAndQueryTest));

            db.TryEnsureSchema <DaoReferenceObject>();

            DaoReferenceObject referenceObject = new DaoReferenceObject()
            {
                IntProperty       = 10,
                DecimalProperty   = 10,
                LongProperty      = 10,
                ULongProperty     = 10,
                DateTimeProperty  = Instant.Now,
                BoolProperty      = true,
                ByteArrayProperty = "This is the byte array property".ToBytes(),
                StringProperty    = "This is the string property"
            };

            referenceObject.Id.ShouldBeNull("Id should have been null");
            referenceObject.Save(db);
            string referenceJson = referenceObject.ToJsonSafe().ToJson();

            referenceObject.Id.ShouldNotBeNull("Id should not have been null");

            DaoReferenceObject retrievedById = DaoReferenceObject.OneWhere(c => c.Id == referenceObject.Id, db);

            retrievedById.ShouldNotBeNull("failed to retrieve object by id");
            Expect.AreEqual(retrievedById.ULongProperty, referenceObject.ULongProperty);
            Expect.AreEqual(referenceObject, retrievedById);
            Expect.AreEqual(referenceJson, retrievedById.ToJsonSafe().ToJson());

            Message.PrintLine(db.ConnectionString);
        }
Пример #5
0
        public static void UpdateShouldOnlyUpdateOne()
        {
            SqlClientRegistrar.Register <DaoReferenceObject>();
            string             first  = "".RandomString(8);
            string             second = "".RandomString(4);
            DaoReferenceObject test   = new DaoReferenceObject();

            test.BoolProperty   = true;
            test.StringProperty = first;
            Expect.IsTrue(test.IsNew);
            test.Commit();

            DaoReferenceObject one = DaoReferenceObject.OneWhere(f => f.StringProperty == test.StringProperty);

            one.StringProperty = second;

            Expect.IsFalse(one.IsNew);
            one.Commit();

            DaoReferenceObjectCollection results = new DaoReferenceObjectCollection(
                Select <DaoReferenceObjectColumns>
                .From <DaoReferenceObject>()
                .Where(f => f.StringProperty == second));

            Expect.IsTrue(results.Count == 1);
        }
Пример #6
0
        public static void QuerySetWhereShouldWorkAsExpected()
        {
            SqlClientRegistrar.Register <DaoReferenceObject>();
            DaoReferenceObject test  = Create();
            DaoReferenceObject test2 = Create();

            QuerySet           query = new QuerySet();
            DaoReferenceObject third = new DaoReferenceObject();

            third.StringProperty = test.StringProperty;

            query.Insert(third);
            query.Select <DaoReferenceObject>().Where <DaoReferenceObjectColumns>(c => c.StringProperty == third.StringProperty);


            query.Execute(Db.For <DaoReferenceObject>());

            DaoReferenceObjectCollection coll = query.Results.As <DaoReferenceObjectCollection>(1);

            foreach (DaoReferenceObject obj in coll)
            {
                Out(obj.PropertiesToString());
                Out();
            }
        }
Пример #7
0
        private static DaoReferenceObject Create()
        {
            DaoReferenceObject test = new DaoReferenceObject();

            test.StringProperty = "".RandomString(8);
            test.Commit();
            return(test);
        }
Пример #8
0
        public static void ParentOfCollectionShouldBeRootDao()
        {
            SqlClientRegistrar.Register(Db.For <DaoReferenceObject>().ServiceProvider);

            DaoReferenceObject d = new DaoReferenceObject();

            d.StringProperty = "".RandomString(8);
            d.Commit();

            DaoReferenceObjectWithForeignKey dfk = d.DaoReferenceObjectWithForeignKeyCollectionByDaoReferenceObjectId.AddNew();

            Expect.AreSame(d, d.DaoReferenceObjectWithForeignKeyCollectionByDaoReferenceObjectId.Parent);
        }
Пример #9
0
        public static void WhereShortCutShouldWork()
        {
            SqlClientRegistrar.Register(Db.For <DaoReferenceObject>().ServiceProvider);

            DaoReferenceObject test = new DaoReferenceObject();

            test.StringProperty = "".RandomString(8);
            test.Commit();

            DaoReferenceObjectCollection checking = DaoReferenceObject.Where(c => c.StringProperty == test.StringProperty);

            Expect.IsTrue(checking.Count == 1);
        }
Пример #10
0
        public static void ShortcutShouldWorkLikeLongcut()
        {
            SqlClientRegistrar.Register(Db.For <DaoReferenceObject>().ServiceProvider);

            DaoReferenceObject test = new DaoReferenceObject();
            string             val  = "".RandomString(8);

            test.StringProperty = val;
            test.Commit();
            DaoReferenceObjectCollection results = DaoReferenceObject.Where(f => f.Id == test.Id);

            Expect.IsTrue(results.Count > 0);
            Expect.IsTrue(results[0].StringProperty.Equals(val));
        }
Пример #11
0
        public static void CommitShouldSetId()
        {
            SqlClientRegistrar.Register(Db.For <DaoReferenceObject>().ServiceProvider);

            DaoReferenceObject test = new DaoReferenceObject();

            test.BoolProperty    = true;
            test.DecimalProperty = (decimal)10.00;
            test.StringProperty  = "".RandomString(8);

            Expect.IsNull(test.Id);
            test.Commit();
            Expect.IsNotNull(test.Id);
            OutFormat("The id was {0}", test.Id);
        }
Пример #12
0
        public static void AddShouldSetAssociation()
        {
            SqlClientRegistrar.Register(Db.For <DaoReferenceObject>().ServiceProvider);

            DaoReferenceObject d = new DaoReferenceObject();

            d.StringProperty = "".RandomString(8);
            d.Commit();

            DaoReferenceObjectWithForeignKey test = new DaoReferenceObjectWithForeignKey();

            Expect.IsNull(test.DaoReferenceObjectId);
            d.DaoReferenceObjectWithForeignKeyCollectionByDaoReferenceObjectId.Add(test);
            Expect.IsNotNull(test.DaoReferenceObjectId);

            Expect.AreEqual(test.DaoReferenceObjectId, d.Id);
        }
Пример #13
0
        public static void DeleteShouldWork()
        {
            SqlClientRegistrar.Register(Db.For <DaoReferenceObject>().ServiceProvider);

            DaoReferenceObject test = new DaoReferenceObject();

            test.StringProperty = "".RandomString(8);
            test.Commit();

            DaoReferenceObject d = DaoReferenceObject.OneWhere(c => c.Id == test.Id);

            Expect.IsNotNull(d);
            Expect.AreEqual(test.StringProperty, d.StringProperty);

            d.Delete();

            d = DaoReferenceObject.OneWhere(c => c.StringProperty == test.StringProperty);
            Expect.IsNull(d);
        }
Пример #14
0
        public static void CommitOnCollectionShouldUpdateIds()
        {
            SqlClientRegistrar.Register <DaoReferenceObject>();

            string childName = "Name_".RandomString(3);

            DaoReferenceObject d = new DaoReferenceObject();

            d.StringProperty = "".RandomString(8);
            d.Commit();

            var child = d.DaoReferenceObjectWithForeignKeyCollectionByDaoReferenceObjectId.AddNew();

            child.Name = childName;

            d.Commit();

            Expect.IsNotNull(child.IdValue);
        }
Пример #15
0
        public static void ChildSetsShouldBeFull()
        {
            SqlClientRegistrar.Register <DaoReferenceObject>();
            DaoReferenceObject parent = new DaoReferenceObject();

            parent.StringProperty = "Parent";
            parent.Commit();

            DaoReferenceObjectWithForeignKey child = parent.DaoReferenceObjectWithForeignKeyCollectionByDaoReferenceObjectId.AddNew();

            child.Name = "Monkey";

            parent.Commit();

            Expect.IsNotNull(child.Id);

            DaoReferenceObject check = DaoReferenceObject.OneWhere(c => c.Id == parent.Id);

            Expect.IsNotNull(check);
            Expect.AreEqual(1, check.DaoReferenceObjectWithForeignKeyCollectionByDaoReferenceObjectId.Count);
        }
Пример #16
0
        public static void ShouldBeAbleToQueryById()
        {
            SqlClientRegistrar.Register(Db.For <DaoReferenceObject>().ServiceProvider);

            DaoReferenceObject test = new DaoReferenceObject();

            string val = "".RandomString(8);

            test.StringProperty = val;
            test.Commit();

            DaoCollection <DaoReferenceObjectColumns, DaoReferenceObject> results = new DaoCollection <DaoReferenceObjectColumns, DaoReferenceObject>(
                Select <DaoReferenceObjectColumns>
                .From <DaoReferenceObject>()
                .Where((c) => c.Id == test.Id)
                );

            Expect.IsNotNull(results);
            Expect.IsTrue(results.Count == 1);
            Expect.AreEqual(results[0].StringProperty, val);
        }
Пример #17
0
        public void PropertyTypeTest()
        {
            Expect.IsTrue(_testDatabases.Count > 0);
            string methodName = MethodBase.GetCurrentMethod().Name;

            _testDatabases.Each(db =>
            {
                Message.PrintLine("{0}.{1}: {2}", ConsoleColor.DarkYellow, this.GetType().Name, methodName, db.GetType().Name);
                DateTime utc           = DateTime.UtcNow;
                DaoReferenceObject obj = new DaoReferenceObject(db)
                {
                    IntProperty      = RandomNumber.Between(0, 100),
                    DecimalProperty  = 10.15m,
                    LongProperty     = 99999,
                    DateTimeProperty = utc,
                    BoolProperty     = true
                };
                string testName       = 16.RandomLetters();
                obj.ByteArrayProperty = new TestSerializable(testName).ToBinaryBytes();
                Instant now           = new Instant();
                obj.StringProperty    = now.ToString();

                obj.Save(db);

                DaoReferenceObject retrieved = DaoReferenceObject.OneWhere(c => c.Id == obj.Id, db);
                Expect.AreEqual(obj.Id, retrieved.Id, "Ids didn't match");
                Expect.AreEqual(obj.IntProperty, retrieved.IntProperty, "IntProperty didn't match");
                Expect.AreEqual(obj.DecimalProperty, retrieved.DecimalProperty, "DecimalProperty didn't match");
                Expect.AreEqual(obj.LongProperty, retrieved.LongProperty, "LongProperty didn't match");
                DateTime shouldBe = obj.DateTimeProperty.Value.DropMilliseconds();
                DateTime _is      = retrieved.DateTimeProperty.Value.DropMilliseconds();
                Expect.AreEqual(shouldBe, _is, "DateTimeProperty didn't match");
                Expect.AreEqual(obj.BoolProperty, retrieved.BoolProperty, "BoolProperty didn't match");
                Expect.AreEqual(obj.StringProperty, retrieved.StringProperty, "StringProperty didn't match");
                TestSerializable deserialized = obj.ByteArrayProperty.FromBinaryBytes <TestSerializable>();
                Expect.AreEqual(testName, deserialized.Name);
                Instant then = Instant.FromString(retrieved.StringProperty);
                Expect.AreEqual(now.ToDateTime(), then.ToDateTime());
            });
        }
Пример #18
0
        public static void UnCommittedParentShouldThrowOnChildAdd()
        {
            bool thrown = false;

            try
            {
                SqlClientRegistrar.Register <DaoReferenceObject>();
                DaoReferenceObject parent = new DaoReferenceObject();
                parent.StringProperty = "Parent";
                DaoReferenceObjectWithForeignKey child = parent.DaoReferenceObjectWithForeignKeyCollectionByDaoReferenceObjectId.AddNew();
                child.Name = "".RandomString(8);

                parent.Commit();
            }
            catch (InvalidOperationException ioe)
            {
                thrown = true;
                Out(ioe.Message, ConsoleColor.Cyan);
            }

            Expect.IsTrue(thrown);
        }
Пример #19
0
        public static void CommitParentShouldCallCommitOnCollections()
        {
            SqlClientRegistrar.Register <DaoReferenceObject>();
            DaoReferenceObject d = new DaoReferenceObject();

            d.StringProperty = "".RandomString(8);
            d.Commit();

            var child = d.DaoReferenceObjectWithForeignKeyCollectionByDaoReferenceObjectId.AddNew();

            child.Name = "Name_".RandomString(3);

            bool?handled = false;

            child.BeforeWriteCommit += (a, i) =>
            {
                handled = true;
            };

            d.Commit();
            Expect.IsTrue(handled.Value);
        }
Пример #20
0
        public void CanQueryByUlongProperty()
        {
            Database db = new SQLiteDatabase(nameof(SaveAndQueryTest));

            db.TryEnsureSchema <DaoReferenceObject>();
            DaoReferenceObject.LoadAll(db).Delete(db);
            ulong testValue = 8374384738473847;

            DaoReferenceObject referenceObject = new DaoReferenceObject()
            {
                IntProperty       = 10,
                DecimalProperty   = 10,
                LongProperty      = 10,
                ULongProperty     = testValue,
                DateTimeProperty  = Instant.Now,
                BoolProperty      = true,
                ByteArrayProperty = "This is the byte array property".ToBytes(),
                StringProperty    = "This is the string property"
            };

            referenceObject.Id.ShouldBeNull("Id should have been null");
            referenceObject.Save(db);
            string referenceJson = referenceObject.ToJsonSafe().ToJson();

            referenceObject.Id.ShouldNotBeNull("Id should not have been null");

            DaoReferenceObject[] retrieved = DaoReferenceObject.Where(c => c.ULongProperty == testValue, db).ToArray();
            Expect.AreEqual(1, retrieved.Length);
            DaoReferenceObject instance = retrieved[0];

            Expect.AreEqual(instance.ULongProperty, referenceObject.ULongProperty);
            Expect.AreEqual(referenceObject, instance);
            Expect.AreEqual(referenceJson, instance.ToJsonSafe().ToJson());
            Expect.AreEqual(testValue, instance.ULongProperty);

            Message.PrintLine(db.ConnectionString);
        }
Пример #21
0
 public object[] Where(QiQuery query)
 {
     return(DaoReferenceObject.Where(query).ToJsonSafe());
 }