public void Delete_Method() { Assert.Throws <ArgumentNullException>(() => new MemoryRepository <TestEntity>().Delete(null)); var entity = new TestEntity(); using (var repository = new MemoryRepository <TestEntity>()) { repository.Transaction(() => Assert.True(ReferenceEquals(repository.Delete(entity), repository))); repository.Transaction(() => repository.Persist(entity)); repository.Transaction(() => repository.Delete(new TestEntity())); Assert.True(ReferenceEquals(repository.Single(), entity)); repository.Transaction(() => repository.Delete(entity)); Assert.False(repository.Any()); } }
public void Dispose_Method() { var entity = new TestEntity(); using (var repository = new MemoryRepository <TestEntity>()) { repository.Persist(entity).Dispose(); Assert.True(ReferenceEquals(repository.Single(), entity)); repository.Delete(entity).Dispose(); Assert.False(repository.Any()); } }
public void Transaction_Method() { var entity = new TestEntity(); using (var repository = new MemoryRepository <TestEntity>()) { using (repository.Transaction()) { repository.Persist(entity); } Assert.Equal(1, repository.Count()); using (var transaction = repository.Transaction()) { repository.Persist(entity); transaction.Rollback(); } Assert.Equal(1, repository.Count()); try { using (repository.Transaction()) { repository.Persist(entity); throw new Exception(); } } catch { Assert.True(true); } Assert.Equal(1, repository.Count()); using (var transaction = repository.Transaction()) { repository.Persist(entity); transaction.Commit(); } Assert.Equal(1, repository.Count()); using (repository.Transaction()) { repository.Delete(entity); } Assert.Equal(0, repository.Count()); using (var transaction = repository.Transaction()) { repository.Delete(entity); transaction.Rollback(); } Assert.Equal(0, repository.Count()); try { using (repository.Transaction()) { repository.Delete(entity); throw new Exception(); } } catch { Assert.True(true); } Assert.Equal(0, repository.Count()); using (var transaction = repository.Transaction()) { repository.Delete(entity); transaction.Commit(); } Assert.Equal(0, repository.Count()); } }