157 lines
4.9 KiB
Python
Executable File
157 lines
4.9 KiB
Python
Executable File
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
import didactopus.main as main_module
|
|
|
|
|
|
def test_main_doclift_bundle_subcommand(monkeypatch, capsys, tmp_path: Path) -> None:
|
|
captured: dict = {}
|
|
|
|
def _fake_run_doclift_bundle_demo(bundle_dir, course_title, pack_dir, author, license_name):
|
|
captured.update(
|
|
{
|
|
"bundle_dir": str(bundle_dir),
|
|
"course_title": course_title,
|
|
"pack_dir": str(pack_dir),
|
|
"author": author,
|
|
"license_name": license_name,
|
|
}
|
|
)
|
|
return {"pack_dir": str(pack_dir), "course_title": course_title}
|
|
|
|
monkeypatch.setattr(main_module, "run_doclift_bundle_demo", _fake_run_doclift_bundle_demo)
|
|
monkeypatch.setattr(
|
|
main_module.sys,
|
|
"argv",
|
|
[
|
|
"didactopus",
|
|
"doclift-bundle",
|
|
str(tmp_path / "bundle"),
|
|
str(tmp_path / "pack"),
|
|
"--course-title",
|
|
"Example Course",
|
|
],
|
|
)
|
|
|
|
main_module.main()
|
|
out = capsys.readouterr().out
|
|
|
|
assert captured["course_title"] == "Example Course"
|
|
assert "Example Course" in out
|
|
|
|
|
|
def test_main_doclift_bundle_groundrecall_subcommand(monkeypatch, capsys, tmp_path: Path) -> None:
|
|
captured: dict = {}
|
|
|
|
def _fake_run_doclift_bundle_with_groundrecall(**kwargs):
|
|
captured.update({key: str(value) for key, value in kwargs.items()})
|
|
return {"pack_dir": str(kwargs["pack_dir"]), "course_title": kwargs["course_title"]}
|
|
|
|
monkeypatch.setattr(main_module, "run_doclift_bundle_with_groundrecall", _fake_run_doclift_bundle_with_groundrecall)
|
|
monkeypatch.setattr(
|
|
main_module.sys,
|
|
"argv",
|
|
[
|
|
"didactopus",
|
|
"doclift-bundle-groundrecall",
|
|
str(tmp_path / "store"),
|
|
"channel-capacity",
|
|
str(tmp_path / "bundle"),
|
|
str(tmp_path / "pack"),
|
|
"--course-title",
|
|
"Example Course",
|
|
],
|
|
)
|
|
|
|
main_module.main()
|
|
out = capsys.readouterr().out
|
|
|
|
assert captured["groundrecall_concept_ref"] == "channel-capacity"
|
|
assert captured["course_title"] == "Example Course"
|
|
assert "Example Course" in out
|
|
|
|
|
|
def test_main_legacy_review_mode_uses_review_parser(monkeypatch, tmp_path: Path) -> None:
|
|
called: dict = {}
|
|
|
|
def _fake_run_review_workflow(args):
|
|
called["draft_pack"] = args.draft_pack
|
|
called["output_dir"] = args.output_dir
|
|
|
|
monkeypatch.setattr(main_module, "run_review_workflow", _fake_run_review_workflow)
|
|
monkeypatch.setattr(
|
|
main_module.sys,
|
|
"argv",
|
|
[
|
|
"didactopus",
|
|
"--draft-pack",
|
|
str(tmp_path / "draft"),
|
|
"--output-dir",
|
|
str(tmp_path / "out"),
|
|
],
|
|
)
|
|
|
|
main_module.main()
|
|
|
|
assert called["draft_pack"] == str(tmp_path / "draft")
|
|
assert called["output_dir"] == str(tmp_path / "out")
|
|
|
|
|
|
def test_main_notebook_page_subcommand(monkeypatch, capsys, tmp_path: Path) -> None:
|
|
captured: dict = {}
|
|
|
|
def _fake_export_notebook_page_from_groundrecall_bundle(bundle_path, out_path):
|
|
captured["bundle_path"] = str(bundle_path)
|
|
captured["out_path"] = str(out_path)
|
|
return {"page_path": str(out_path)}
|
|
|
|
monkeypatch.setattr(main_module, "export_notebook_page_from_groundrecall_bundle", _fake_export_notebook_page_from_groundrecall_bundle)
|
|
monkeypatch.setattr(
|
|
main_module.sys,
|
|
"argv",
|
|
[
|
|
"didactopus",
|
|
"notebook-page",
|
|
str(tmp_path / "groundrecall_query_bundle.json"),
|
|
str(tmp_path / "notebook_page.json"),
|
|
],
|
|
)
|
|
|
|
main_module.main()
|
|
out = capsys.readouterr().out
|
|
|
|
assert captured["bundle_path"].endswith("groundrecall_query_bundle.json")
|
|
assert captured["out_path"].endswith("notebook_page.json")
|
|
assert "page_path" in out
|
|
|
|
|
|
def test_main_notebook_page_groundrecall_subcommand(monkeypatch, capsys, tmp_path: Path) -> None:
|
|
captured: dict = {}
|
|
|
|
def _fake_export_notebook_page_from_groundrecall_store(store_dir, concept_ref, out_dir):
|
|
captured["store_dir"] = str(store_dir)
|
|
captured["concept_ref"] = concept_ref
|
|
captured["out_dir"] = str(out_dir)
|
|
return {"page_path": str(Path(out_dir) / "notebook_page.json")}
|
|
|
|
monkeypatch.setattr(main_module, "export_notebook_page_from_groundrecall_store", _fake_export_notebook_page_from_groundrecall_store)
|
|
monkeypatch.setattr(
|
|
main_module.sys,
|
|
"argv",
|
|
[
|
|
"didactopus",
|
|
"notebook-page-groundrecall",
|
|
str(tmp_path / "store"),
|
|
"natural-selection",
|
|
str(tmp_path / "out"),
|
|
],
|
|
)
|
|
|
|
main_module.main()
|
|
out = capsys.readouterr().out
|
|
|
|
assert captured["concept_ref"] == "natural-selection"
|
|
assert captured["out_dir"].endswith("out")
|
|
assert "page_path" in out
|