public async Task DeleteProduct_Deletes_Product_Correctly()
        {
            //Arrange
            Mock <ILogger <SqliteProductRepository> > mockLogger = new Mock <ILogger <SqliteProductRepository> >();

            SqliteProductRepository sqliteProductRepository = new SqliteProductRepository(BuildConfiguration(), mockLogger.Object);

            Product newProduct1 = new Product
            {
                DeliveryPrice = 20,
                Description   = "Test Desc",
                Name          = "Test Product",
                Price         = 1000
            };

            await sqliteProductRepository.CreateProduct(newProduct1);

            var products = await sqliteProductRepository.GetAllProducts();

            //Act
            await sqliteProductRepository.DeleteProduct(products[0].Id);

            var result = await sqliteProductRepository.GetAllProducts();

            //Assert
            Assert.Empty(result);
        }
        public async Task GetProductById_Returns_Correct_Product()
        {
            //Arrange
            Mock <ILogger <SqliteProductRepository> > mockLogger = new Mock <ILogger <SqliteProductRepository> >();

            SqliteProductRepository sqliteProductRepository = new SqliteProductRepository(BuildConfiguration(), mockLogger.Object);

            Product newProduct1 = new Product
            {
                DeliveryPrice = 20,
                Description   = "Test Desc",
                Name          = "Test Product",
                Price         = 1000
            };

            await sqliteProductRepository.CreateProduct(newProduct1);

            var products = await sqliteProductRepository.GetAllProducts();

            //Act
            var result = await sqliteProductRepository.GetProductById(products[0].Id);

            //Assert
            Assert.Equal(newProduct1.Name, result.Name);
            Assert.Equal(newProduct1.Description, result.Description);
            Assert.Equal(newProduct1.Price, result.Price);
            Assert.Equal(newProduct1.DeliveryPrice, result.DeliveryPrice);
        }
        public async Task GetProductsLikeName_Returns_Correct_Product()
        {
            //Arrange
            Mock <ILogger <SqliteProductRepository> > mockLogger = new Mock <ILogger <SqliteProductRepository> >();

            SqliteProductRepository sqliteProductRepository = new SqliteProductRepository(BuildConfiguration(), mockLogger.Object);

            Product newProduct1 = new Product
            {
                DeliveryPrice = 20,
                Description   = "Test Desc",
                Name          = "Macbook",
                Price         = 1000
            };

            Product newProduct2 = new Product
            {
                DeliveryPrice = 50,
                Description   = "Test Desc 2",
                Name          = "Samsung",
                Price         = 300
            };

            await sqliteProductRepository.CreateProduct(newProduct1);

            await sqliteProductRepository.CreateProduct(newProduct2);

            //Act
            var result = await sqliteProductRepository.GetProductsLikeName("Sam");

            //Assert
            Assert.Equal(newProduct2.Name, result[0].Name);
            Assert.Equal(newProduct2.Description, result[0].Description);
            Assert.Equal(newProduct2.Price, result[0].Price);
            Assert.Equal(newProduct2.DeliveryPrice, result[0].DeliveryPrice);
        }
        public async Task UpdateProduct_Updates_Product_Correctly()
        {
            //Arrange
            Mock <ILogger <SqliteProductRepository> > mockLogger = new Mock <ILogger <SqliteProductRepository> >();

            SqliteProductRepository sqliteProductRepository = new SqliteProductRepository(BuildConfiguration(), mockLogger.Object);

            Product newProduct1 = new Product
            {
                DeliveryPrice = 20,
                Description   = "Test Desc",
                Name          = "Test Product",
                Price         = 1000
            };

            await sqliteProductRepository.CreateProduct(newProduct1);

            var products = await sqliteProductRepository.GetAllProducts();

            Product updatedProduct = new Product
            {
                Id            = products[0].Id,
                DeliveryPrice = 200,
                Description   = "Test Desc 1",
                Name          = "Test Product 1",
                Price         = 3000
            };

            //Act
            await sqliteProductRepository.UpdateProduct(updatedProduct);

            var result = await sqliteProductRepository.GetProductById(updatedProduct.Id);

            //Assert
            Assert.Equal(updatedProduct.Id, result.Id);
            Assert.Equal(updatedProduct.Name, result.Name);
            Assert.Equal(updatedProduct.Description, result.Description);
            Assert.Equal(updatedProduct.Price, result.Price);
            Assert.Equal(updatedProduct.DeliveryPrice, result.DeliveryPrice);
        }