peregrine/tests/test_db_resumes.py

89 lines
3 KiB
Python

"""Tests for resume library db helpers."""
import sqlite3
import tempfile
from pathlib import Path
import pytest
from scripts.db_migrate import migrate_db
@pytest.fixture
def db(tmp_path):
path = tmp_path / "test.db"
migrate_db(path)
return path
def test_create_and_get_resume(db):
from scripts.db import create_resume, get_resume
r = create_resume(db, name="Q1 2026", text="Software engineer with 5 years experience.")
assert r["id"] > 0
assert r["name"] == "Q1 2026"
assert r["word_count"] == 6
assert r["source"] == "manual"
assert r["is_default"] == 0
fetched = get_resume(db, r["id"])
assert fetched["name"] == "Q1 2026"
def test_list_resumes(db):
from scripts.db import create_resume, list_resumes
create_resume(db, name="A", text="alpha beta")
create_resume(db, name="B", text="gamma delta")
results = list_resumes(db)
assert len(results) == 2
def test_update_resume(db):
from scripts.db import create_resume, update_resume
r = create_resume(db, name="Old name", text="old text here")
updated = update_resume(db, r["id"], name="New name", text="new text content here updated")
assert updated["name"] == "New name"
assert updated["word_count"] == 5
def test_delete_resume(db):
from scripts.db import create_resume, delete_resume, get_resume
r = create_resume(db, name="Temp", text="temp text")
delete_resume(db, r["id"])
assert get_resume(db, r["id"]) is None
def test_set_default_resume(db):
from scripts.db import create_resume, set_default_resume, list_resumes
a = create_resume(db, name="A", text="text a")
b = create_resume(db, name="B", text="text b")
set_default_resume(db, a["id"])
set_default_resume(db, b["id"])
resumes = {r["id"]: r for r in list_resumes(db)}
assert resumes[a["id"]]["is_default"] == 0
assert resumes[b["id"]]["is_default"] == 1
def test_get_job_resume_default_fallback(db):
from scripts.db import create_resume, set_default_resume, get_job_resume
# Insert a minimal job row
conn = sqlite3.connect(db)
conn.execute("INSERT INTO jobs (id, title, company, source) VALUES (1, 'Eng', 'Co', 'test')")
conn.commit()
conn.close()
r = create_resume(db, name="Default", text="default resume text")
set_default_resume(db, r["id"])
result = get_job_resume(db, 1)
assert result["id"] == r["id"]
def test_get_job_resume_job_specific_override(db):
from scripts.db import create_resume, set_default_resume, get_job_resume, set_job_resume
conn = sqlite3.connect(db)
conn.execute("INSERT INTO jobs (id, title, company, source) VALUES (1, 'Eng', 'Co', 'test')")
conn.commit()
conn.close()
default_r = create_resume(db, name="Default", text="default resume text")
set_default_resume(db, default_r["id"])
specific_r = create_resume(db, name="Specific", text="job specific resume text")
set_job_resume(db, job_id=1, resume_id=specific_r["id"])
result = get_job_resume(db, 1)
assert result["id"] == specific_r["id"]