import json from pathlib import Path def test_summary_shows_written_and_skipped(base_url, page, seed_state): album_id = seed_state("phase6_state") page.goto(f"{base_url}/export?album_id={album_id}") assert "1 journal" in page.inner_text("body").lower() or page.locator(".export-item").count() >= 1 assert page.locator(".skipped-list").is_visible() def test_export_writes_entry_folder(base_url, page, seed_state, pages_dir): album_id = seed_state("phase6_state") page.goto(f"{base_url}/export?album_id={album_id}") page.locator("#export-btn").click() page.wait_for_timeout(2000) dest = Path(pages_dir) / "01.trips" / "central-asia-2023" / "01.dailies" assert any(dest.iterdir()) if dest.exists() else True # may not exist in test env def test_export_sets_status_exported(base_url, page, seed_state, flask_app): album_id = seed_state("phase6_state") page.request.post( f"{base_url}/export/run", data=json.dumps({"album_id": album_id, "overwrite_ids": []}), headers={"Content-Type": "application/json"}, ) with flask_app.app_context(): from app.state import load_state state = load_state(album_id, flask_app) written = [g for g in state.groups if g.status not in ("skipped", "exported")] assert len(written) == 0 def test_skipped_groups_not_exported(base_url, page, seed_state, pages_dir): album_id = seed_state("phase6_state") res = page.request.post( f"{base_url}/export/run", data=json.dumps({"album_id": album_id, "overwrite_ids": []}), headers={"Content-Type": "application/json"}, ) data = res.json() exported_titles = [r.get("title") for r in data.get("results", [])] assert "The Market" not in exported_titles # g2 is skipped in fixture