nutricore / tests /test_database.py
GitHub Actions
Deploy: fd7352bd4a3722db55d92a07f0e5e9dd211faf54
0d8c5a5
Raw
History Blame Contribute Delete
3.08 kB
"""
Tests for Nutricore database initialization and data
"""
import pytest
import sys, os
sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
import database
@pytest.fixture(autouse=True)
def setup_db(tmp_path):
database.DB_PATH = str(tmp_path / "test.db")
database.init_db()
yield
def test_db_has_12_products():
conn = database.get_db()
count = conn.execute("SELECT COUNT(*) FROM products").fetchone()[0]
conn.close()
assert count == 12
def test_db_has_3_categories():
conn = database.get_db()
cats = conn.execute("SELECT DISTINCT category FROM products").fetchall()
conn.close()
assert len(cats) == 3
def test_db_has_fruit_powders():
conn = database.get_db()
rows = conn.execute("SELECT * FROM products WHERE category = 'Fruit Powders'").fetchall()
conn.close()
assert len(rows) == 5
def test_db_has_vegetable_powders():
conn = database.get_db()
rows = conn.execute("SELECT * FROM products WHERE category = 'Vegetable Powders'").fetchall()
conn.close()
assert len(rows) == 4
def test_db_has_green_leaf_powders():
conn = database.get_db()
rows = conn.execute("SELECT * FROM products WHERE category = 'Green Leaf Powders'").fetchall()
conn.close()
assert len(rows) == 3
def test_products_have_prices():
conn = database.get_db()
rows = conn.execute("SELECT * FROM products WHERE price IS NULL OR price <= 0").fetchall()
conn.close()
assert len(rows) == 0
def test_products_have_images():
conn = database.get_db()
rows = conn.execute("SELECT * FROM products WHERE image IS NULL OR image = ''").fetchall()
conn.close()
assert len(rows) == 0
def test_products_have_health_goals():
conn = database.get_db()
rows = conn.execute("SELECT * FROM products WHERE health_goals IS NULL OR health_goals = ''").fetchall()
conn.close()
assert len(rows) == 0
def test_moringa_is_superfood():
conn = database.get_db()
row = conn.execute("SELECT * FROM products WHERE name = 'Moringa Powder'").fetchone()
conn.close()
assert row is not None
assert row["price"] == 900
assert "immunity" in row["health_goals"]
def test_banana_powder_energy():
conn = database.get_db()
row = conn.execute("SELECT * FROM products WHERE name = 'Banana Powder'").fetchone()
conn.close()
assert row is not None
assert row["price"] == 850
assert "energy" in row["health_goals"]
def test_orders_table_exists():
conn = database.get_db()
row = conn.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='orders'").fetchone()
conn.close()
assert row is not None
def test_delivery_info_has_major_cities():
assert "lahore" in database.DELIVERY_INFO
assert "karachi" in database.DELIVERY_INFO
assert "islamabad" in database.DELIVERY_INFO
def test_recipes_exist_for_all_products():
from database import RECIPES
assert len(RECIPES) == 12
for product_id in range(1, 13):
assert product_id in RECIPES, f"No recipe for product {product_id}"