public void Test_CommitTransaction_WithAutoIncrementBo_ShouldUseNumberGeneratorsInDatastore() { //---------------Set up test pack------------------- ClassDef.ClassDefs.Clear(); IClassDef classDef = TestAutoInc.LoadClassDefWithAutoIncrementingID(); DataStoreInMemory dataStore = MockRepository.GeneratePartialMock <DataStoreInMemory>(); dataStore.Replay(); int nextAutoIncNumber = TestUtil.GetRandomInt(); dataStore.Stub(t => t.GetNextAutoIncrementingNumber(classDef)).Return(nextAutoIncNumber); ITransactionCommitter transactionCommitter = new TransactionCommitterInMemory(dataStore); TestAutoInc bo = new TestAutoInc(); bo.SetPropertyValue("testfield", "testing 123"); transactionCommitter.AddBusinessObject(bo); //---------------Assert Precondition---------------- Assert.IsFalse(bo.TestAutoIncID.HasValue); Assert.AreSame(classDef, bo.ClassDef); Assert.IsTrue(bo.Props.HasAutoIncrementingField); //---------------Execute Test ---------------------- transactionCommitter.CommitTransaction(); //---------------Test Result ----------------------- dataStore.AssertWasCalled(memory => memory.GetNextAutoIncrementingNumber(classDef)); Assert.IsNotNull(bo.TestAutoIncID); Assert.AreEqual(nextAutoIncNumber, bo.TestAutoIncID); Assert.IsFalse(bo.Status.IsDirty); }
public void Test_InitialiseProp_InvalidBusinessObject_IDNotGuid() { //---------------Set up test pack------------------- TestAutoInc.LoadClassDefWithAutoIncrementingID(); BOProp boProp = new BOProp(_propDef); //Use auto incrementing because it is the only bo prop that has TestAutoInc bo = new TestAutoInc(); bo.SetPropertyValue("testautoincid", 1); //---------------Assert Precondition---------------- Assert.IsNull(boProp.Value); //---------------Execute Test ---------------------- try { boProp.InitialiseProp(bo); Assert.Fail("expected Err"); } //---------------Test Result ----------------------- catch (HabaneroDeveloperException ex) { StringAssert.Contains(boProp.PropertyName + " cannot be set to " + bo.ToString(), ex.Message); StringAssert.Contains("It is not a type of ", ex.Message); StringAssert.Contains("Guid", ex.Message); Assert.AreEqual(null, boProp.Value); Assert.IsTrue(boProp.IsValid); } }
public void TestAutoIncrementObj() { ClassDef.ClassDefs.Clear(); TestAutoInc.LoadClassDefWithAutoIncrementingID(); TestAutoInc bo = new TestAutoInc(); InsertStatementGenerator gen = new InsertStatementGenerator(bo, DatabaseConnection.CurrentConnection); var statementCol = gen.Generate(); InsertSqlStatement statement = (InsertSqlStatement)statementCol.First(); Assert.AreSame(typeof(SupportsAutoIncrementingFieldBO), statement.SupportsAutoIncrementingField.GetType()); }
public void TestInsertStatementExcludesAutoField_MySql() { //---------------Set up test pack------------------- ClassDef.ClassDefs.Clear(); TestAutoInc.LoadClassDefWithAutoIncrementingID(); TestAutoInc bo = new TestAutoInc(); InsertStatementGenerator gen = CreateInsertStatementGenerator(bo, DatabaseConfig.MySql); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var statementCol = gen.Generate(); //---------------Test Result ----------------------- var statement = statementCol.First(); Assert.AreEqual("INSERT INTO `testautoinc` (`testfield`) VALUES (?Param0)", statement.Statement.ToString()); }
public void TestDelimitedTableNameWithSpaces() { ClassDef.ClassDefs.Clear(); TestAutoInc.LoadClassDefWithAutoIncrementingID(); TestAutoInc bo = new TestAutoInc(); ClassDef.ClassDefs[typeof(TestAutoInc)].TableName = "test autoinc"; DeleteStatementGenerator gen = new DeleteStatementGenerator(bo, DatabaseConnection.CurrentConnection); var statementCol = gen.Generate(); ISqlStatement statement = statementCol.First(); var tableName = DatabaseConnection.CurrentConnection.SqlFormatter.DelimitTable("test autoinc"); StringAssert.Contains(tableName, statement.Statement.ToString()); }
public void TestGetBusinessObjectByIDIntSavenewAutoIncNumber() { //---------------Set up test pack------------------- ClassDef.ClassDefs.Clear(); TestAutoInc.LoadClassDefWithAutoIncrementingID(); TestAutoInc autoInc = new TestAutoInc(); autoInc.Save(); //---------------Execute Test ---------------------- Criteria criteria = new Criteria("testautoincid", Criteria.ComparisonOp.Equals, autoInc.TestAutoIncID); TestAutoInc tai1 = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject <TestAutoInc>(criteria); TestAutoInc tai2 = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject <TestAutoInc>(tai1.ID); ////---------------Test Result ----------------------- Assert.AreSame(tai1, tai2); Assert.AreEqual("testing", tai2.TestField); }
public void TestDelimitedTableNameWithSpaces_SqlServer() { //---------------Set up test pack------------------- ClassDef.ClassDefs.Clear(); TestAutoInc.LoadClassDefWithAutoIncrementingID(); TestAutoInc bo = new TestAutoInc(); bo.Save(); ClassDef.ClassDefs[typeof(TestAutoInc)].TableName = "test autoinc"; bo.TestField = TestUtil.GetRandomString(); var gen = CreateUpdateStatementGenerator(bo, DatabaseConfig.SqlServer); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var statementCol = gen.Generate(); //---------------Test Result ----------------------- ISqlStatement statement = statementCol.First(); StringAssert.Contains("[test autoinc]", statement.Statement.ToString()); }
public void Test_CommitTransaction_WithAutoIncrementBo_ShouldAutoIncrementAfterInsert() { //---------------Set up test pack------------------- ClassDef.ClassDefs.Clear(); TestAutoInc.LoadClassDefWithAutoIncrementingID(); DataStoreInMemory dataStore = new DataStoreInMemory(); ITransactionCommitter transactionCommitter = new TransactionCommitterInMemory(dataStore); TestAutoInc bo = new TestAutoInc(); bo.SetPropertyValue("testfield", "testing 123"); transactionCommitter.AddBusinessObject(bo); //---------------Assert Precondition---------------- Assert.IsFalse(bo.TestAutoIncID.HasValue); //---------------Execute Test ---------------------- transactionCommitter.CommitTransaction(); //---------------Test Result ----------------------- Assert.IsNotNull(bo.TestAutoIncID); Assert.AreNotEqual(0, bo.TestAutoIncID); Assert.IsFalse(bo.Status.IsDirty); }
public void TestSaveUpdatesAutoIncrementingField() { //---------------Set up test pack------------------- ClassDef.ClassDefs.Clear(); TestAutoInc.LoadClassDefWithAutoIncrementingID(); var newIds = new ConcurrentBag <int?>(); //---------------Execute Test ---------------------- Parallel.For(0, 1000, i => { //---------------Set up test pack------------------- var bo = new TestAutoInc(); bo.SetPropertyValue("testfield", "testing 123"); //---------------Assert Precondition---------------- Assert.IsFalse(bo.TestAutoIncID.HasValue); //---------------Execute Test ---------------------- bo.Save(); //---------------Test Result ----------------------- newIds.Add(bo.TestAutoIncID); }); //---------------Test Result ----------------------- Assert.IsTrue(newIds.All(i => i.HasValue)); Assert.IsTrue(newIds.All(i => i > 0)); Assert.That(newIds.Distinct().Count(), Is.EqualTo(1000), "Every generated ID must be unique"); }