89 lines
3 KiB
Python
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"]
|