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()); }
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)); }
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 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()); }
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); }
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); }
public override bool ShouldMigrate() { var template = new AllTypeThing(); return !DatabaseSession.Instance.Connector.CheckTableExists(template); }
public override bool ShouldMigrate() { var template = new AllTypeThing(); return(!DatabaseSession.Instance.Connector.CheckTableExists(template)); }