public void VerifyThatColumnsOfAllTypesCanBeCreatedAndRemoved() { var template = new AllTypeMySqlThing(); DatabaseSession.Instance.Connector.CreateTableWithColumns(template); var firstProperty = template.GetType().GetProperties().First(); Assert.DoesNotThrow(() => DatabaseSession.Instance.Connector.DeleteColumn(firstProperty, template)); Assert.DoesNotThrow(() => DatabaseSession.Instance.Connector.CreateColumn(firstProperty, 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 => p.Name != "SomeString" && !Attribute.IsDefined(p, typeof(IgnoreDataMemberAttribute))).ToList()) { var transaction = DatabaseSession.Instance.CreateTransaction(); DatabaseSession.Instance.Connector.DeleteColumn(property, template, transaction); DatabaseSession.Instance.CommitTransaction(transaction); } Assert.Throws<NotSupportedException>(() => DatabaseSession.Instance.Connector.CreateTableWithColumns(new NoTypes())); DatabaseSession.Instance.Connector.DeleteTable(new AllTypeMySqlThing()); }
public void VerifyThatChecksWork() { var template = new AllTypeMySqlThing(); 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 AllTypeMySqlThing()); }
public void VerifyThatWhereReturns() { var allTypeThing = new AllTypeMySqlThing(); DatabaseSession.Instance.Connector.CreateTableWithColumnsAndPrimaryKey(allTypeThing); var saveItem1 = new AllTypeMySqlThing { Id = Guid.NewGuid(), SomeString = string.Empty, SomeDate = DateTime.Now, SomeEnum = ConnectorType.Postgresql }; var saveItem2 = new AllTypeMySqlThing { Id = Guid.NewGuid(), SomeDate = DateTime.Now, SomeString = string.Empty, SomeInt = 13 }; var saveItem3 = new AllTypeMySqlThing { Id = Guid.NewGuid(), SomeDate = DateTime.Now, SomeString = string.Empty, SomeInt = 13 }; saveItem1.Save(); saveItem2.Save(); saveItem3.Save(); Assert.AreEqual(2, AllTypeMySqlThing.Where(saveItem3.GetType().GetProperty("SomeInt"), "=", 13).Count); Assert.AreEqual(1, AllTypeMySqlThing.Where(saveItem3.GetType().GetProperty("Id"), "=", saveItem3.Id).Count); DatabaseSession.Instance.Connector.DeleteTable(allTypeThing); }
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.CreateTableWithColumns(fromObject, transaction); DatabaseSession.Instance.CommitTransaction(transaction); DatabaseSession.Instance.Connector.DeleteTable(fromObject); var allTypes = new AllTypeMySqlThing(); DatabaseSession.Instance.Connector.CreateTableWithColumns(allTypes); Assert.IsFalse(DatabaseSession.Instance.Connector.CheckTableExists(fromObject)); var transaction1 = DatabaseSession.Instance.CreateTransaction(); DatabaseSession.Instance.Connector.CreateTableWithColumns(fromObject, transaction1); Assert.Throws<InvalidDataException>(() => allTypes.Save(transaction: transaction1)); DatabaseSession.Instance.CommitTransaction(transaction1); DatabaseSession.Instance.Connector.DeleteTable(allTypes); // mysql CREATE TABLE ignores transactions Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(fromObject)); DatabaseSession.Instance.Connector.DeleteTable(fromObject); Assert.IsFalse(DatabaseSession.Instance.Connector.CheckTableExists(fromObject)); }
public void VerifyThatTableWithColumnsCanBeCreatedAndRemoved() { var template = new AllTypeMySqlThing(); Assert.Throws<InvalidDataException>(() => AllTypeMySqlThing.All()); DatabaseSession.Instance.Connector.CreateTableWithColumns(template); DatabaseSession.Instance.Connector.CreatePrimaryKeyConstraint(template); Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(template)); var saveItem1 = new AllTypeMySqlThing { Id = Guid.NewGuid(), SomeString = string.Empty, SomeDate = DateTime.Now, SomeEnum = ConnectorType.Postgresql }; var saveItem2 = new AllTypeMySqlThing { Id = Guid.NewGuid(), SomeString = string.Empty, SomeDate = DateTime.Now }; saveItem1.Save(); saveItem2.Save(); Assert.AreEqual(2, DatabaseSession.Instance.Connector.ReadRecords<AllTypeMySqlThing>().ToList().Count); Assert.AreEqual(1, DatabaseSession.Instance.Connector.ReadRecords<AllTypeMySqlThing>(limit: 1, offset: 1, orderBy: template.GetType().GetProperty(template.PrimaryKey)).ToList().Count); var newString = "IsSome"; saveItem1.SomeString = newString; saveItem1.Save(ignoreNull: true); var getSave1 = AllTypeMySqlThing.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<AllTypeMySqlThing>().ToList()); DatabaseSession.Instance.Connector.DeleteTable(new AllTypeMySqlThing()); }
public void VerifyThatTableCanBeCreatedFullAndRemoved() { var allTypeThing = new AllTypeMySqlThing(); DatabaseSession.Instance.Connector.CreateTableWithColumnsAndPrimaryKey(allTypeThing); Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(allTypeThing)); Assert.Throws<InvalidDataException>(() => DatabaseSession.Instance.Connector.CreateTableWithColumns(allTypeThing)); DatabaseSession.Instance.Connector.DeleteTable(allTypeThing); }