47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
from app.ingest.metadata import parse_path, PathMetadata
|
|
|
|
|
|
ROOT = "Documents/THB/Studium"
|
|
|
|
|
|
def test_parse_path_with_typ():
|
|
md = parse_path("Documents/THB/Studium/2.Semester/Databases/Vorlesungen/DBS1.pdf", ROOT)
|
|
assert md == PathMetadata(semester="2.Semester", fach="Databases", typ="Vorlesungen")
|
|
|
|
|
|
def test_parse_path_without_typ():
|
|
md = parse_path("Documents/THB/Studium/2.Semester/Databases/DBS1.pdf", ROOT)
|
|
assert md == PathMetadata(semester="2.Semester", fach="Databases", typ=None)
|
|
|
|
|
|
def test_parse_path_deep_nested_keeps_first_subdir_as_typ():
|
|
md = parse_path("Documents/THB/Studium/2.Semester/Databases/Uebungen/01/sheet.pdf", ROOT)
|
|
assert md == PathMetadata(semester="2.Semester", fach="Databases", typ="Uebungen")
|
|
|
|
|
|
def test_parse_path_outside_root_returns_none():
|
|
assert parse_path("Documents/Other/file.pdf", ROOT) is None
|
|
|
|
|
|
def test_parse_path_loose_file_in_thb_returns_none():
|
|
assert parse_path("Documents/THB/Studienbescheinigung.pdf", ROOT) is None
|
|
|
|
|
|
def test_parse_path_loose_file_under_root_returns_none():
|
|
# File directly under Studium with no semester folder
|
|
assert parse_path("Documents/THB/Studium/readme.txt", ROOT) is None
|
|
|
|
|
|
def test_parse_path_invalid_semester_pattern_returns_none():
|
|
assert parse_path("Documents/THB/Studium/Sommersemester/Databases/x.pdf", ROOT) is None
|
|
|
|
|
|
def test_parse_path_no_fach_returns_none():
|
|
# File directly in Semester folder with no fach subdir
|
|
assert parse_path("Documents/THB/Studium/2.Semester/loose.pdf", ROOT) is None
|
|
|
|
|
|
def test_parse_path_with_leading_slash_normalizes():
|
|
md = parse_path("/Documents/THB/Studium/2.Semester/Databases/x.pdf", ROOT)
|
|
assert md == PathMetadata(semester="2.Semester", fach="Databases", typ=None)
|