public void VerifyThatUniquenessConstraintWorks() { var fromObject = new User { Id = Guid.NewGuid(), Name = "John Doe" }; fromObject.Usergroup_Id = 3; DatabaseSession.Instance.Connector.CreateTableWithColumns(fromObject); Assert.Throws<InvalidDataException>( () => DatabaseSession.Instance.Connector.DeleteUniquenessConstraint(new[] { fromObject.GetType().GetProperty("Usergroup_Id") }, fromObject)); Assert.Throws<ArgumentException>( () => DatabaseSession.Instance.Connector.CreateUniquenessConstraint(null, fromObject)); Assert.Throws<ArgumentException>( () => DatabaseSession.Instance.Connector.DeleteUniquenessConstraint(null, fromObject)); DatabaseSession.Instance.Connector.CreateUniquenessConstraint(new []{ fromObject.GetType().GetProperty("Usergroup_Id") }, fromObject ); Assert.Throws<InvalidDataException>( () => DatabaseSession.Instance.Connector.CreateUniquenessConstraint(new[] { fromObject.GetType().GetProperty("Usergroup_Id") }, fromObject)); Assert.DoesNotThrow(() => DatabaseSession.Instance.Connector.DeleteUniquenessConstraint(new[] { fromObject.GetType().GetProperty("Usergroup_Id") }, fromObject)); Assert.DoesNotThrow(() => fromObject.Save()); DatabaseSession.Instance.Connector.DeleteTable(new User()); }
public void VerifyThatTransactionSafeDeleteTableWorks() { var fromObject = new User { Id = Guid.NewGuid(), Name = "John Doe" }; var toObject = new Usergroup(); Assert.Throws<InvalidDataException>(() => DatabaseSession.Instance.Connector.DeleteTable(fromObject)); DatabaseSession.Instance.Connector.CreateTableWithColumns(fromObject); DatabaseSession.Instance.Connector.CreateTableWithColumns(toObject); DatabaseSession.Instance.Connector.CreatePrimaryKeyConstraint(fromObject); DatabaseSession.Instance.Connector.CreatePrimaryKeyConstraint(toObject); var transaction = DatabaseSession.Instance.CreateTransaction(); DatabaseSession.Instance.Connector.CreateForeignKeyConstraint(fromObject.GetType().GetProperty("Usergroup_Id"), fromObject, toObject.GetType().GetProperty(toObject.PrimaryKey), toObject, transaction); DatabaseSession.Instance.Connector.DeleteForeignKeyConstraint(fromObject.GetType().GetProperty("Usergroup_Id"), fromObject, toObject.GetType().GetProperty(toObject.PrimaryKey), toObject, transaction); DatabaseSession.Instance.Connector.DeleteTable(fromObject, transaction); Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(fromObject)); DatabaseSession.Instance.Connector.DeleteTable(toObject, transaction); Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(toObject)); DatabaseSession.Instance.CommitTransaction(transaction); Assert.IsFalse(DatabaseSession.Instance.Connector.CheckTableExists(fromObject)); Assert.IsFalse(DatabaseSession.Instance.Connector.CheckTableExists(toObject)); }
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 VerifyThatOverridesAndForeignKeyConstraintsWork() { var fromObject = new User { Id = Guid.NewGuid(), Name = "John Doe" }; var toObject = new Usergroup { Iid = 1, Name = "Admin" }; fromObject.Usergroup_Id = toObject.Iid; DatabaseSession.Instance.Connector.CreateTableWithColumns(toObject); DatabaseSession.Instance.Connector.CreateTableWithColumns(fromObject); Assert.Throws<InvalidDataException>(() => DatabaseSession.Instance.Connector.CreateForeignKeyConstraint(fromObject.GetType().GetProperty("Usergroup_Id"), fromObject, toObject.GetType().GetProperty(toObject.PrimaryKey), toObject)); DatabaseSession.Instance.Connector.CreatePrimaryKeyConstraint(toObject); Assert.Throws<InvalidDataException>( () => DatabaseSession.Instance.Connector.DeleteForeignKeyConstraint( fromObject.GetType().GetProperty("Usergroup_Id"), fromObject, toObject.GetType().GetProperty(toObject.PrimaryKey), toObject)); Assert.DoesNotThrow(() => DatabaseSession.Instance.Connector.CreateForeignKeyConstraint(fromObject.GetType().GetProperty("Usergroup_Id"), fromObject, toObject.GetType().GetProperty(toObject.PrimaryKey), toObject)); Assert.Throws<InvalidDataException>(() => fromObject.Save()); toObject.Save(); Assert.DoesNotThrow(() => fromObject.Save()); Assert.Throws<InvalidDataException>(() => toObject.Delete()); DatabaseSession.Instance.Connector.DeleteForeignKeyConstraint(fromObject.GetType().GetProperty("Usergroup_Id"), fromObject, toObject.GetType().GetProperty(toObject.PrimaryKey), toObject); Assert.DoesNotThrow(() => toObject.Delete()); DatabaseSession.Instance.Connector.DeleteTable(new User()); DatabaseSession.Instance.Connector.DeleteTable(new Usergroup()); }
public void VerifyThatNotNullConstraintWorks() { var fromObject = new User { Id = Guid.NewGuid(), Name = "John Doe" }; fromObject.Usergroup_Id = 3; DatabaseSession.Instance.Connector.CreateTableWithColumns(fromObject); DatabaseSession.Instance.Connector.CreatePrimaryKeyConstraint(fromObject); Assert.Throws<ArgumentNullException>( () => DatabaseSession.Instance.Connector.CreateNotNullConstraint(null, fromObject)); Assert.Throws<ArgumentNullException>( () => DatabaseSession.Instance.Connector.DeleteNotNullConstraint(null, fromObject)); fromObject.Name = null; fromObject.Save(); Assert.Throws<InvalidDataException>( () => DatabaseSession.Instance.Connector.CreateNotNullConstraint(fromObject.GetType().GetProperty("Name"), fromObject)); fromObject.Name = "somename"; fromObject.Save(); DatabaseSession.Instance.Connector.CreateNotNullConstraint(fromObject.GetType().GetProperty("Name"), fromObject); fromObject.Name = null; Assert.Throws<InvalidDataException>(() => fromObject.Save()); Assert.DoesNotThrow(() => DatabaseSession.Instance.Connector.DeleteNotNullConstraint(fromObject.GetType().GetProperty("Name"), fromObject)); fromObject.Name = null; Assert.DoesNotThrow(() => fromObject.Save()); DatabaseSession.Instance.Connector.DeleteTable(new User()); }
public void VerifyThatDefaultWorks() { var fromObject = new User { Id = Guid.NewGuid(), Name = null }; fromObject.Usergroup_Id = 3; var testname = "James"; Assert.Throws<ArgumentNullException>(()=> DatabaseSession.Instance.Connector.SetDefault(null, testname, fromObject)); Assert.Throws<ArgumentNullException>(() => DatabaseSession.Instance.Connector.DeleteDefault(null, fromObject)); DatabaseSession.Instance.Connector.CreateTableWithColumns(fromObject); DatabaseSession.Instance.Connector.SetDefault(fromObject.GetType().GetProperty("Name"), testname , fromObject); // save some names fromObject.Save(ignoreNull: true); var object2 = new User { Id = Guid.NewGuid(), Name = null }; object2.Save(ignoreNull: true); Assert.AreEqual(2, User.All().Where(x => x.Name == testname).ToList().Count); DatabaseSession.Instance.Connector.DeleteDefault(fromObject.GetType().GetProperty("Name"), fromObject); var object3 = new User { Id = Guid.NewGuid(), Name = null }; object3.Save(ignoreNull: true); Assert.AreEqual(2, User.All().Where(x => x.Name == testname).ToList().Count); Assert.AreEqual(3, User.All().ToList().Count); Assert.AreEqual(2, User.Subset(2,1, fromObject.GetType().GetProperty("Name")).ToList().Count); DatabaseSession.Instance.Connector.DeleteTable(new User()); }