import pytest import sqlite3 from datetime import datetime from controllers.database.product import ProductController from models.products.product import Product product = Product( "product", "brake-disks.bmp", "description", 10.00, 1, 1, datetime.now(), 1 ) # Tests a new product can be created def test_create_product(): db = ProductController() db.create(product) # Tests the database maintains integrity when we try # and add a product with the same details def test_duplicate_product(): test_create_product() # Tests that products can be refined by category def test_search_category(): db = ProductController() # Check each category for correct amount of test products assert len(db.read_all("Car Parts")) == 9 + 2 # Added in previous tests assert len(db.read_all("Books")) == 9 assert db.read_all("Phones") is None # Tests that products can be refined by search term def test_search_term(): db = ProductController() # Check each search term for correct amount of test products assert len(db.read_all(search_term="Alloy")) == 9 assert len(db.read_all("Car Parts", "tur")) == 2 assert len(db.read_all(search_term="fold")) == 8 assert db.read_all(search_term="Twin") is None # Test we the same product details get returned from the database def test_read_product(): db = ProductController() # Test the same product is returned new_product = db.read("product") assert isinstance(new_product, list) assert isinstance(new_product[0], Product) # Update the ID on the item as database assigns new id product.id = new_product[0].id assert new_product[0].__dict__ == product.__dict__