public void Tester_ShouldBeAbleToShareATempDb() { //---------------Set up test pack------------------- var tempDb = new TempDbWithCallInformation(); using (new AutoResetter(() => { }, () => tempDb.Dispose())) { //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- EntityPersistenceTester.CreateFor <COMBlockListReason>() .WithContext <CommunicatorContext>() .WithSharedDatabase(tempDb) .WithDbMigrator(connectionString => new DbSchemaImporter(connectionString, TestResources.dbscript)) .ShouldPersistAndRecall(); Assert.AreEqual(0, tempDb.DisposeCalls); using (var ctx = new CommunicatorContext(tempDb.CreateConnection())) { ctx.BlockListReasons.Clear(); // required to allow the persistence test to complete ctx.SaveChangesWithErrorReporting(); } EntityPersistenceTester.CreateFor <COMBlockListReason>() .WithContext <CommunicatorContext>() .WithSharedDatabase(tempDb) .WithDbMigrator(connectionString => new DbSchemaImporter(connectionString, TestResources.dbscript)) .ShouldPersistAndRecall(); //---------------Test Result ----------------------- Assert.AreEqual(0, tempDb.DisposeCalls); } }
public void Tester_ShouldBeAbleToBeGivenAFuncToCreateTheTempDb() { //---------------Set up test pack------------------- var beforePersistingCalled = false; var afterPersistingCalled = false; var tempDb = new TempDbWithCallInformation(); using (new AutoResetter(() => { }, () => tempDb.ActualDispose())) { Assert.AreEqual(0, tempDb.DisposeCalls); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- EntityPersistenceTester.CreateFor <COMBlockListReason>() .WithContext <CommunicatorContext>() .WithTempDbFactory(() => tempDb) .WithDbMigrator(connectionString => new DbSchemaImporter(connectionString, TestResources.dbscript)) .BeforePersisting((ctx, entity) => { beforePersistingCalled = true; Assert.IsNotNull(ctx); Assert.IsInstanceOf <CommunicatorContext>(ctx); Assert.IsNotNull(entity); Assert.IsInstanceOf <COMBlockListReason>(entity); }) .AfterPersisting((before, after) => { afterPersistingCalled = true; Assert.IsNotNull(before); Assert.IsNotNull(after); Assert.AreNotEqual(before, after); before.GetType().ShouldBeAssignableFrom <COMBlockListReason>(); }) .ShouldPersistAndRecall(); //---------------Test Result ----------------------- Assert.IsTrue(beforePersistingCalled); Assert.IsTrue(afterPersistingCalled); Assert.AreEqual(1, tempDb.DisposeCalls); // test that the provided tempdb was actually used AssertHasTable(tempDb, "COMBlockListReason"); AssertTableIsNotEmpty(tempDb, "COMBlockListReason"); } }