| from pathlib import Path |
|
|
| import fitz |
| from ai_module.nlp.profile_generator import ProfileGenerator |
| from app.services.cv_extractor import extract_text_from_pdf, save_text_as_txt |
|
|
|
|
| def test_generate_profile_from_job_description(): |
| text = ( |
| "Senior Python developer with 5 years of experience in FastAPI, Docker, and SQL. " |
| "Strong communication and teamwork skills are required. " |
| "Bachelor degree in Computer Science. Fluent in English and French." |
| ) |
|
|
| profile = ProfileGenerator.generate_from_text(text) |
|
|
| assert profile["ideal_experience_years"] >= 5 |
| assert any(skill["name"].lower() == "python" for skill in profile["ideal_skills"]) |
| assert any(skill["name"].lower() == "fastapi" for skill in profile["ideal_skills"]) |
| assert "Bachelor" in profile["ideal_education"] |
| assert "English" in profile["ideal_languages"] |
| assert "French" in profile["ideal_languages"] |
|
|
|
|
| def test_extract_text_from_pdf_and_save_txt(tmp_path: Path): |
| pdf_path = tmp_path / "sample_cv.pdf" |
| doc = fitz.open() |
| page = doc.new_page() |
| page.insert_text((72, 72), "Hello world from CV extraction test") |
| doc.save(str(pdf_path)) |
| doc.close() |
|
|
| extracted_text = extract_text_from_pdf(str(pdf_path)) |
| assert "Hello world from CV extraction test" in extracted_text |
|
|
| txt_dir = tmp_path / "txt" |
| txt_path = save_text_as_txt(extracted_text, str(txt_dir), pdf_path.name) |
| assert Path(txt_path).exists() |
| assert Path(txt_path).read_text(encoding="utf-8").strip() == extracted_text.strip() |
|
|