public async Task GivenDatabaseError()
        {
            var ex = new Exception(Faker.Random.String());

            var database = CreateMock <IDatabase>();

            database
            .Setup(x => x.FetchAsync <Product>(It.IsNotNull <Sql>()))
            .Throws(ex);

            GetDependency <INPocoDatabaseFactory>().Setup(x => x.CreateDatabase()).Returns(database.Object);

            Should.Throw <DataException>(async() => await TestInstance.ListAsync())
            .InnerException.ShouldBe(ex);
        }
        public async Task GivenAtLeastOneProductInDatabase()
        {
            var product = new Product
            {
                Id            = Faker.Random.Guid(),
                Name          = Faker.Random.String(),
                Description   = Faker.Random.String(),
                DeliveryPrice = Faker.Random.Decimal()
            };

            var database = CreateMock <IDatabase>();

            database
            .Setup(x => x.FetchAsync <Product>(It.IsNotNull <Sql>()))
            .Returns(Task.FromResult(new List <Product> {
                product
            }));

            GetDependency <INPocoDatabaseFactory>().Setup(x => x.CreateDatabase()).Returns(database.Object);

            var products = await TestInstance.ListAsync();

            products.ShouldContain(product);
        }