public async Task DeleteEntity_Test()
        {
            // arrange
            var logger   = Substitute.For <ILogger <IRepository <StubEntityString> > >();
            var mediator = Substitute.For <IMediator>();
            var sut      = new InMemoryRepository <StubEntityString>(logger, mediator, new InMemoryContext <StubEntityString>(this.entities));

            // act
            var entity = this.entities.FirstOrDefault(e => e.FirstName == this.entities.First().FirstName);
            await sut.DeleteAsync(entity).AnyContext();

            entity = await sut.FindOneAsync(entity.Id).AnyContext();

            // assert
            Assert.Null(entity);
            await mediator.Received().Publish(Arg.Any <IDomainEvent>());
        }
        public async Task DeleteEntityById_Test()
        {
            // arrange
            var mediator = Substitute.For <IMediator>();
            var sut      = new InMemoryRepository <StubEntityString>(o => o
                                                                     .Mediator(mediator)
                                                                     .Context(new InMemoryContext <StubEntityString>(this.entities)));

            // act
            var id = this.entities.First().Id;
            await sut.DeleteAsync(id).AnyContext();

            var entity = await sut.FindOneAsync(id).AnyContext();

            // assert
            Assert.Null(entity);
            await mediator.Received().Publish(Arg.Any <IDomainEvent>()).AnyContext();
        }