import json from src.py.builder import html_generator as hg def test_render_template_replaces_placeholders(tmp_path): template = tmp_path / "t.html" template.write_text("

{{ title }}

{{ missing }}

", encoding="utf-8") result = hg.render_template(template, {"title": "Hello", "missing": None}) assert result == "

Hello

" def test_render_template_leaves_unknown_placeholders(tmp_path): template = tmp_path / "t.html" template.write_text("

{{ title }}

", encoding="utf-8") result = hg.render_template(template, {}) assert result == "

{{ title }}

" def test_render_gallery_images_with_and_without_tags(): images = [ {"src": "gallery/a.jpg", "tags": ["nature", "sky"], "alt": "A photo"}, {"src": "gallery/b.jpg"}, ] html = hg.render_gallery_images(images) assert 'data-tags="nature sky"' in html assert '#nature' in html assert '#sky' in html assert 'data-src="/img/gallery/a.jpg"' in html assert 'alt="A photo"' in html assert 'data-tags=""' in html assert 'data-src="/img/gallery/b.jpg"' in html assert 'alt=""' in html def test_render_gallery_images_adds_photo_id_when_present(): html = hg.render_gallery_images( [{"src": "gallery/a.jpg", "photo_id": "abc123"}, {"src": "gallery/b.jpg"}] ) assert html.count("data-photo-id=") == 1 assert 'data-photo-id="abc123"' in html def _photo_page(**overrides): kwargs = { "photo_id": "ab12", "site_title": "My photos", "description": "A gallery", "alt": "Sunset", "page_url": "https://example.com/photo/ab12/", "image_url": "https://example.com/img/share/ab12.jpg", "image_size": (1200, 800), "signature": "", } kwargs.update(overrides) return hg.render_photo_page(**kwargs) def test_render_photo_page_preview_tags_and_noindex(): page = _photo_page() assert '' in page assert '' in page assert '' in page assert '' in page assert "Sunset - My photos" in page assert 'rel="canonical"' not in page def test_render_photo_page_redirects_to_gallery(): page = _photo_page() assert 'location.replace("/?photo=ab12")' in page assert '' in page def test_render_photo_page_escapes_text(): page = _photo_page(alt="", site_title='">') assert "