Pushing code to migrate git

This commit is contained in:
2025-08-15 00:57:39 -08:00
parent 53f3e8a44d
commit 455bdac187
50 changed files with 14761 additions and 225 deletions
+139
View File
@@ -0,0 +1,139 @@
"""
PunimTag Test Configuration
Shared fixtures and configuration for all tests.
"""
import pytest
import sqlite3
import tempfile
import os
import sys
from pathlib import Path
# Add src to path for imports
sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
from backend.app import app
@pytest.fixture
def test_db():
"""Create a temporary test database."""
db_fd, db_path = tempfile.mkstemp()
# Create test database schema
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# Create tables
cursor.execute('''
CREATE TABLE images (
id INTEGER PRIMARY KEY,
filename TEXT NOT NULL,
path TEXT NOT NULL,
date_taken TEXT
)
''')
cursor.execute('''
CREATE TABLE faces (
id INTEGER PRIMARY KEY,
image_id INTEGER,
person_id INTEGER,
encoding BLOB,
left INTEGER,
top INTEGER,
right INTEGER,
bottom INTEGER
)
''')
cursor.execute('''
CREATE TABLE people (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
cursor.execute('''
CREATE TABLE tags (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL UNIQUE
)
''')
cursor.execute('''
CREATE TABLE image_tags (
image_id INTEGER,
tag_id INTEGER,
PRIMARY KEY (image_id, tag_id)
)
''')
conn.commit()
conn.close()
yield db_path
# Cleanup
os.close(db_fd)
os.unlink(db_path)
@pytest.fixture
def client(test_db):
"""Create a test client with test database."""
app.config['TESTING'] = True
app.config['DATABASE_PATH'] = test_db
with app.test_client() as client:
yield client
@pytest.fixture
def sample_photos(test_db):
"""Add sample photos to the test database."""
conn = sqlite3.connect(test_db)
cursor = conn.cursor()
photos = [
('photo1.jpg', '/test/path/photo1.jpg', '2023-01-01'),
('photo2.jpg', '/test/path/photo2.jpg', '2023-01-02'),
('photo3.jpg', '/test/path/photo3.jpg', '2023-01-03')
]
cursor.executemany(
'INSERT INTO images (filename, path, date_taken) VALUES (?, ?, ?)',
photos
)
conn.commit()
conn.close()
return photos
@pytest.fixture
def sample_faces(test_db):
"""Add sample faces to the test database."""
conn = sqlite3.connect(test_db)
cursor = conn.cursor()
# Add a person first
cursor.execute('INSERT INTO people (name) VALUES (?)', ('Test Person',))
person_id = cursor.lastrowid
# Add faces
faces = [
(1, person_id, b'fake_encoding_1', 100, 100, 200, 200),
(2, person_id, b'fake_encoding_2', 150, 150, 250, 250),
(3, None, b'fake_encoding_3', 200, 200, 300, 300), # Unidentified face
]
cursor.executemany(
'INSERT INTO faces (image_id, person_id, encoding, left, top, right, bottom) VALUES (?, ?, ?, ?, ?, ?, ?)',
faces
)
conn.commit()
conn.close()
return faces