public void TestDatabaseDeleteByInstance() { var testModel = TestModel.MakeTestModel(); Func <int> countKeys = () => _databaseInstance.Query <TestModel, int>().Count(); Func <int> countIndex = () => _databaseInstance.Query <TestModel, string, int>(TestDatabaseInstance.DATAINDEX).Count(); Assert.Equal(0, countKeys()); //,"Database initialized with invalid key count."); Assert.Equal(0, countIndex()); //Database initialized with invalid index count."); var key = _databaseInstance.SaveAsync(testModel).Result; Assert.Equal(1, countKeys()); //Keys not updated with save."); Assert.Equal(1, countIndex()); //Index count not updated with save."); var actual = _databaseInstance.LoadAsync <TestModel>(key).Result; Assert.NotNull(actual); //Test model did not re-load."); _databaseInstance.DeleteAsync(actual).Wait(); Assert.Equal(0, countKeys()); //Database updated with invalid key count after delete."); Assert.Equal(0, countIndex()); //Database updated with invalid index count after delete."); actual = _databaseInstance.LoadAsync <TestModel>(key).Result; Assert.Null(actual); //Delete failed: loaded actual value after delete."); }
public void TestTriggerBeforeDelete() { var instance1 = new TriggerClass { Data = Guid.NewGuid().ToString() }; _databaseInstance.SaveAsync <TriggerClass, int>(instance1).Wait(); var key2 = _databaseInstance.SaveAsync <TriggerClass, int>(new TriggerClass { Id = TriggerClassTestTrigger.BADDELETE, Data = Guid.NewGuid().ToString() }).Result; _databaseInstance.DeleteAsync(instance1).Wait(); // should be no problem var handled = false; try { _databaseInstance.DeleteAsync(typeof(TriggerClass), key2).Wait(); } catch (AggregateException ex) { if (ex.InnerExceptions.Single() is SterlingTriggerException) { handled = true; } } Assert.True(handled); //Trigger failed to throw exception for delete operation on key = 5."); }