Example #1
0
        public override void Migrate()
        {
            // Migration will try to create a column on a non existing table
            var template = new AllTypeThing();

            DatabaseSession.Instance.Connector.CreateTable(template);
        }
        public void VerifyThatColumnsOfAllTypesCanBeCreatedAndRemoved()
        {
            var template = new AllTypeThing();

            DatabaseSession.Instance.Connector.CreateTable(template);

            var propertyNotExists = template.GetType().GetProperties().First();
            Assert.Throws<InvalidDataException>(() => DatabaseSession.Instance.Connector.DeleteColumn(propertyNotExists, template));
            Assert.Throws<InvalidDataException>(() => DatabaseSession.Instance.Connector.CreatePrimaryKeyConstraint(template));

            foreach (var property in template.GetType().GetProperties().Where(p => !Attribute.IsDefined(p, typeof(IgnoreDataMemberAttribute))).ToList())
            {
                DatabaseSession.Instance.Connector.CreateColumn(property, template);
            }

            foreach (var property in template.GetType().GetProperties().Where(p => !Attribute.IsDefined(p, typeof(IgnoreDataMemberAttribute))).ToList())
            {
                Assert.Throws<InvalidDataException>(() => DatabaseSession.Instance.Connector.CreateColumn(property, template));
            }

            foreach (var property in template.GetType().GetProperties().Where(p => !Attribute.IsDefined(p, typeof(IgnoreDataMemberAttribute))).ToList())
            {
                var transaction = DatabaseSession.Instance.CreateTransaction();
                DatabaseSession.Instance.Connector.DeleteColumn(property, template, transaction);
                DatabaseSession.Instance.CommitTransaction(transaction);
            }

            DatabaseSession.Instance.Connector.DeleteTable(new AllTypeThing());
        }
Example #3
0
 public override void Migrate()
 {
     // Migration will try to create a column on a non existing table
     var template = new AllTypeThing();
     var property = template.GetType().GetProperty("SomeString");
     DatabaseSession.Instance.Connector.CreateColumn(property, template);
 }
        public void VerifyThatColumnsOfAllTypesCanBeCreatedAndRemoved()
        {
            var template = new AllTypeThing();

            DatabaseSession.Instance.Connector.CreateTable(template);

            var propertyNotExists = template.GetType().GetProperties().First();

            Assert.Throws <InvalidDataException>(() => DatabaseSession.Instance.Connector.DeleteColumn(propertyNotExists, template));
            Assert.Throws <InvalidDataException>(() => DatabaseSession.Instance.Connector.CreatePrimaryKeyConstraint(template));

            foreach (var property in template.GetType().GetProperties().Where(p => !Attribute.IsDefined(p, typeof(IgnoreDataMemberAttribute))).ToList())
            {
                DatabaseSession.Instance.Connector.CreateColumn(property, template);
            }

            foreach (var property in template.GetType().GetProperties().Where(p => !Attribute.IsDefined(p, typeof(IgnoreDataMemberAttribute))).ToList())
            {
                Assert.Throws <InvalidDataException>(() => DatabaseSession.Instance.Connector.CreateColumn(property, template));
            }

            foreach (var property in template.GetType().GetProperties().Where(p => !Attribute.IsDefined(p, typeof(IgnoreDataMemberAttribute))).ToList())
            {
                var transaction = DatabaseSession.Instance.CreateTransaction();
                DatabaseSession.Instance.Connector.DeleteColumn(property, template, transaction);
                DatabaseSession.Instance.CommitTransaction(transaction);
            }

            DatabaseSession.Instance.Connector.DeleteTable(new AllTypeThing());
        }
        public void VerifyThatTransactionSafeCreateTableWorks()
        {
            var fromObject = new User
            {
                Uuid = Guid.NewGuid(),
                Name = "John Doe"
            };

            var transaction = DatabaseSession.Instance.CreateTransaction();
            var prop        = fromObject.GetType().GetProperties().First();

            DatabaseSession.Instance.Connector.CreateTable(fromObject, transaction);
            DatabaseSession.Instance.Connector.CreateColumn(prop, fromObject, transaction);
            DatabaseSession.Instance.CommitTransaction(transaction);

            DatabaseSession.Instance.Connector.DeleteTable(fromObject);

            var allTypes = new AllTypeThing();

            DatabaseSession.Instance.Connector.CreateTable(allTypes);

            transaction = DatabaseSession.Instance.CreateTransaction();
            DatabaseSession.Instance.Connector.CreateTable(fromObject, transaction);
            Assert.Throws <InvalidDataException>(() => allTypes.Save(transaction: transaction));
            DatabaseSession.Instance.CommitTransaction(transaction);

            // TODO: Unclear why but transactions stopped working all of a sudden
            DatabaseSession.Instance.Connector.DeleteTable(allTypes);
            DatabaseSession.Instance.Connector.DeleteTable(fromObject);

            Assert.IsFalse(DatabaseSession.Instance.Connector.CheckTableExists(fromObject));
        }
Example #6
0
        public override void Migrate()
        {
            // Migration will try to create a column on a non existing table
            var template = new AllTypeThing();
            var property = template.GetType().GetProperty("SomeString");

            DatabaseSession.Instance.Connector.CreateColumn(property, template);
        }
        public void VerifyThatTableCanBeCreatedAndRemoved()
        {
            var allTypeThing = new AllTypeThing();

            DatabaseSession.Instance.Connector.CreateTable(allTypeThing);
            Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(allTypeThing));
            Assert.Throws <InvalidDataException>(() => DatabaseSession.Instance.Connector.CreateTable(allTypeThing));

            DatabaseSession.Instance.Connector.DeleteTable(allTypeThing);
        }
        public void VerifyThatChecksWork()
        {
            var template = new AllTypeThing();

            DatabaseSession.Instance.Connector.CreateTableWithColumns(template);

            Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(template));
            Assert.IsTrue(DatabaseSession.Instance.Connector.CheckColumnExists(template.GetType().GetProperty("SomeFloat"), template));
            Assert.IsFalse(DatabaseSession.Instance.Connector.CheckColumnExists(template.GetType().GetProperty("SomeHidden"), template));

            DatabaseSession.Instance.Connector.DeleteTable(new AllTypeThing());
        }
        public void VerifyThatChecksWork()
        {
            var template = new AllTypeThing();

            DatabaseSession.Instance.Connector.CreateTableWithColumns(template);

            Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(template));
            Assert.IsTrue(DatabaseSession.Instance.Connector.CheckColumnExists(template.GetType().GetProperty("SomeFloat"), template));
            Assert.IsFalse(DatabaseSession.Instance.Connector.CheckColumnExists(template.GetType().GetProperty("SomeHidden"), template));

            DatabaseSession.Instance.Connector.DeleteTable(new AllTypeThing());
        }
        public void VerifyThatWhereReturns()
        {
            var allTypeThing = new AllTypeThing();

            DatabaseSession.Instance.Connector.CreateTableWithColumnsAndPrimaryKey(allTypeThing);

            var saveItem1 = new AllTypeThing
            {
                Uuid       = Guid.NewGuid(),
                SomeString = string.Empty,
                SomeDate   = DateTime.Now,
                SomeEnum   = ConnectorType.Postgresql
            };

            var saveItem2 = new AllTypeThing
            {
                Uuid       = Guid.NewGuid(),
                SomeString = string.Empty,
                SomeInt    = 13
            };

            var saveItem3 = new AllTypeThing
            {
                Uuid       = Guid.NewGuid(),
                SomeString = string.Empty,
                SomeInt    = 13
            };


            saveItem1.Save();
            saveItem2.Save();
            saveItem3.Save();

            Assert.AreEqual(2, AllTypeThing.Where(saveItem3.GetType().GetProperty("SomeInt"), "=", 13).Count);
            Assert.AreEqual(1, AllTypeThing.Where(saveItem3.GetType().GetProperty("Uuid"), "=", saveItem3.Uuid).Count);

            DatabaseSession.Instance.Connector.DeleteTable(allTypeThing);
        }
        public void VerifyThatTableWithColumnsCanBeCreatedAndRemoved()
        {
            var template = new AllTypeThing();

            Assert.Throws<InvalidDataException>(() => AllTypeThing.All());

            DatabaseSession.Instance.Connector.CreateTableWithColumns(template);
            DatabaseSession.Instance.Connector.CreatePrimaryKeyConstraint(template);

            Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(template));

            var saveItem1 = new AllTypeThing
            {
                Id = Guid.NewGuid(),
                SomeString = string.Empty,
                SomeDate = DateTime.Now,
                SomeEnum = ConnectorType.Postgresql
            };

            saveItem1.SomeGuidList.Add(Guid.NewGuid());
            saveItem1.SomeGuidList.Add(Guid.NewGuid());
            saveItem1.SomeGuidList.Add(Guid.NewGuid());

            saveItem1.SomeList.Add("Aleds");
            saveItem1.SomeList.Add("Aleds2");
            saveItem1.SomeList.Add("Aleds3");

            var saveItem2 = new AllTypeThing
            {
                Id = Guid.NewGuid(),
                SomeString = string.Empty
            };

            saveItem2.SomeGuidList.Add(Guid.NewGuid());
            saveItem2.SomeGuidList.Add(Guid.NewGuid());
            saveItem2.SomeList.Add("Aleds");
            saveItem2.SomeList.Add("Aleds2");
            saveItem2.SomeList.Add("Aleds3");

            saveItem1.Save();
            saveItem2.Save();

            Assert.AreEqual(2, DatabaseSession.Instance.Connector.ReadRecords<AllTypeThing>().ToList().Count);
            Assert.AreEqual(1, DatabaseSession.Instance.Connector.ReadRecords<AllTypeThing>(limit: 1).ToList().Count);
            Assert.AreEqual(1, DatabaseSession.Instance.Connector.ReadRecords<AllTypeThing>(limit: 20, offset: 1, orderBy: template.GetType().GetProperty(template.PrimaryKey)).ToList().Count);
            Assert.AreEqual(1, DatabaseSession.Instance.Connector.ReadRecords<AllTypeThing>(offset: 1).ToList().Count);

            var newString = "IsSome";

            saveItem1.SomeString = newString;

            saveItem1.Save(ignoreNull: true);

            var getSave1 = AllTypeThing.Find(saveItem1.Id);
            Assert.AreEqual(newString, getSave1.SomeString);

            saveItem1.Delete();
            saveItem2.Delete();

            saveItem1.Save();
            saveItem2.Save();

            var transaction = DatabaseSession.Instance.CreateTransaction();
            saveItem1.Save(transaction: transaction);
            saveItem2.Save(transaction: transaction);
            DatabaseSession.Instance.CommitTransaction(transaction);

            transaction = DatabaseSession.Instance.CreateTransaction();
            saveItem1.Delete(transaction);
            saveItem2.Delete(transaction);
            DatabaseSession.Instance.CommitTransaction(transaction);
            DatabaseSession.Instance.Connector.DeletePrimaryKeyConstraint(template.GetType().GetProperty(template.PrimaryKey), template);
            Assert.Throws<InvalidDataException>(
                () =>
                    DatabaseSession.Instance.Connector.DeletePrimaryKeyConstraint(
                        template.GetType().GetProperty(template.PrimaryKey), template));

            DatabaseSession.Instance.Connector.CreatePrimaryKeyConstraint(template);
            transaction = DatabaseSession.Instance.CreateTransaction();
            DatabaseSession.Instance.Connector.DeletePrimaryKeyConstraint(template.GetType().GetProperty(template.PrimaryKey), template, transaction);
            DatabaseSession.Instance.CommitTransaction(transaction);

            Assert.IsEmpty(DatabaseSession.Instance.Connector.ReadRecords<AllTypeThing>().ToList());

            DatabaseSession.Instance.Connector.DeleteTable(new AllTypeThing());
        }
        public void VerifyThatTableWithColumnsCanBeCreatedAndRemoved()
        {
            var template = new AllTypeThing();

            Assert.Throws <InvalidDataException>(() => AllTypeThing.All());

            DatabaseSession.Instance.Connector.CreateTableWithColumns(template);
            DatabaseSession.Instance.Connector.CreatePrimaryKeyConstraint(template);

            Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(template));

            var saveItem1 = new AllTypeThing
            {
                Uuid       = Guid.NewGuid(),
                SomeString = string.Empty,
                SomeDate   = DateTime.Now,
                SomeEnum   = ConnectorType.Postgresql
            };

            saveItem1.SomeGuidList.Add(Guid.NewGuid());
            saveItem1.SomeGuidList.Add(Guid.NewGuid());
            saveItem1.SomeGuidList.Add(Guid.NewGuid());

            saveItem1.SomeList.Add("Aleds");
            saveItem1.SomeList.Add("Aleds2");
            saveItem1.SomeList.Add("Aleds3");

            var saveItem2 = new AllTypeThing
            {
                Uuid       = Guid.NewGuid(),
                SomeString = string.Empty
            };

            saveItem2.SomeGuidList.Add(Guid.NewGuid());
            saveItem2.SomeGuidList.Add(Guid.NewGuid());
            saveItem2.SomeList.Add("Aleds");
            saveItem2.SomeList.Add("Aleds2");
            saveItem2.SomeList.Add("Aleds3");

            saveItem1.Save();
            saveItem2.Save();

            Assert.AreEqual(2, DatabaseSession.Instance.Connector.ReadRecords <AllTypeThing>().ToList().Count);
            Assert.AreEqual(1, DatabaseSession.Instance.Connector.ReadRecords <AllTypeThing>(limit: 1).ToList().Count);
            Assert.AreEqual(1, DatabaseSession.Instance.Connector.ReadRecords <AllTypeThing>(limit: 20, offset: 1, orderBy: template.GetType().GetProperty(template.PrimaryKey)).ToList().Count);
            Assert.AreEqual(1, DatabaseSession.Instance.Connector.ReadRecords <AllTypeThing>(offset: 1).ToList().Count);

            var newString = "IsSome";

            saveItem1.SomeString = newString;

            saveItem1.Save(ignoreNull: true);

            var getSave1 = AllTypeThing.Find(saveItem1.Uuid);

            Assert.AreEqual(newString, getSave1.SomeString);

            saveItem1.Delete();
            saveItem2.Delete();

            saveItem1.Save();
            saveItem2.Save();

            var transaction = DatabaseSession.Instance.CreateTransaction();

            saveItem1.Save(transaction: transaction);
            saveItem2.Save(transaction: transaction);
            DatabaseSession.Instance.CommitTransaction(transaction);

            transaction = DatabaseSession.Instance.CreateTransaction();
            saveItem1.Delete(transaction);
            saveItem2.Delete(transaction);
            DatabaseSession.Instance.CommitTransaction(transaction);
            DatabaseSession.Instance.Connector.DeletePrimaryKeyConstraint(template.GetType().GetProperty(template.PrimaryKey), template);
            Assert.Throws <InvalidDataException>(
                () =>
                DatabaseSession.Instance.Connector.DeletePrimaryKeyConstraint(
                    template.GetType().GetProperty(template.PrimaryKey), template));

            DatabaseSession.Instance.Connector.CreatePrimaryKeyConstraint(template);
            transaction = DatabaseSession.Instance.CreateTransaction();
            DatabaseSession.Instance.Connector.DeletePrimaryKeyConstraint(template.GetType().GetProperty(template.PrimaryKey), template, transaction);
            DatabaseSession.Instance.CommitTransaction(transaction);

            Assert.IsEmpty(DatabaseSession.Instance.Connector.ReadRecords <AllTypeThing>().ToList());

            DatabaseSession.Instance.Connector.DeleteTable(new AllTypeThing());
        }
Example #13
0
 public override void Seed()
 {
     var template = new AllTypeThing();
     template.Save();
 }
        public void VerifyThatNonSupportedTypesThrow()
        {
            var template = new AllTypeThing();

            Assert.Throws<NotSupportedException>(() => DatabaseSession.Instance.Connector.CreateTable(template));

            Assert.Throws<NotSupportedException>(
                () => DatabaseSession.Instance.Connector.CreateTableWithColumns(template));
        }
        public void VerifyThatTransactionSafeCreateTableWorks()
        {
            var fromObject = new User
            {
                Id = Guid.NewGuid(),
                Name = "John Doe"
            };

            var transaction = DatabaseSession.Instance.CreateTransaction();
            var prop = fromObject.GetType().GetProperties().First();
            DatabaseSession.Instance.Connector.CreateTable(fromObject, transaction);
            DatabaseSession.Instance.Connector.CreateColumn(prop, fromObject, transaction);
            DatabaseSession.Instance.CommitTransaction(transaction);

            DatabaseSession.Instance.Connector.DeleteTable(fromObject);

            var allTypes = new AllTypeThing();

            DatabaseSession.Instance.Connector.CreateTable(allTypes);

            transaction = DatabaseSession.Instance.CreateTransaction();
            DatabaseSession.Instance.Connector.CreateTable(fromObject, transaction);
            Assert.Throws<InvalidDataException>(() => allTypes.Save(transaction: transaction));
            DatabaseSession.Instance.CommitTransaction(transaction);

            // TODO: Unclear why but transactions stopped working all of a sudden
            DatabaseSession.Instance.Connector.DeleteTable(allTypes);
            DatabaseSession.Instance.Connector.DeleteTable(fromObject);

            Assert.IsFalse(DatabaseSession.Instance.Connector.CheckTableExists(fromObject));
        }
        public void VerifyThatWhereReturns()
        {
            var allTypeThing = new AllTypeThing();

            DatabaseSession.Instance.Connector.CreateTableWithColumnsAndPrimaryKey(allTypeThing);

            var saveItem1 = new AllTypeThing
            {
                Id = Guid.NewGuid(),
                SomeString = string.Empty,
                SomeDate = DateTime.Now,
                SomeEnum = ConnectorType.Postgresql
            };

            var saveItem2 = new AllTypeThing
            {
                Id = Guid.NewGuid(),
                SomeString = string.Empty,
                SomeInt = 13
            };

            var saveItem3 = new AllTypeThing
            {
                Id = Guid.NewGuid(),
                SomeString = string.Empty,
                SomeInt = 13
            };

            saveItem1.Save();
            saveItem2.Save();
            saveItem3.Save();

            Assert.AreEqual(2, AllTypeThing.Where(saveItem3.GetType().GetProperty("SomeInt"), "=", 13).Count);
            Assert.AreEqual(1, AllTypeThing.Where(saveItem3.GetType().GetProperty("Id"), "=", saveItem3.Id).Count);

            DatabaseSession.Instance.Connector.DeleteTable(allTypeThing);
        }
Example #17
0
 public override void Migrate()
 {
     // Migration will try to create a column on a non existing table
     var template = new AllTypeThing();
     DatabaseSession.Instance.Connector.CreateTable(template);
 }
        public void VerifyThatTableCanBeCreatedFullyAndRemoved()
        {
            var allTypeThing = new AllTypeThing();

            DatabaseSession.Instance.Connector.CreateTableWithColumnsAndPrimaryKey(allTypeThing);
            Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(allTypeThing));

            Assert.Throws<InvalidDataException>(() => DatabaseSession.Instance.Connector.CreateTable(allTypeThing));

            DatabaseSession.Instance.Connector.DeleteTable(allTypeThing);
        }
Example #19
0
 public override bool ShouldMigrate()
 {
     var template = new AllTypeThing();
     return !DatabaseSession.Instance.Connector.CheckTableExists(template);
 }
Example #20
0
        public override void Seed()
        {
            var template = new AllTypeThing();

            template.Save();
        }
Example #21
0
        public override bool ShouldMigrate()
        {
            var template = new AllTypeThing();

            return(!DatabaseSession.Instance.Connector.CheckTableExists(template));
        }