Expand test Site tests

This commit is contained in:
2026-09-04 11:06:39 +02:00
parent 7297adb966
commit f991d3b110
9 changed files with 164 additions and 1 deletions
+2
View File
@@ -0,0 +1,2 @@
name: Sections Test
template: plain
@@ -0,0 +1,8 @@
---
type: article
section: notes
slug: first-note
title: First Note
date: 2026-08-28
---
First note.
@@ -0,0 +1,8 @@
---
type: article
section: posts
slug: first-post
title: First Post
date: 2026-08-28
---
First post.
@@ -0,0 +1,8 @@
---
type: article
section: posts
slug: second-post
title: Second Post
date: 2026-08-28
---
Second post.
+2
View File
@@ -0,0 +1,2 @@
name: Tags Test
template: plain
+8
View File
@@ -0,0 +1,8 @@
---
type: article
section: posts
slug: no-tags
title: No Tags
date: 2026-08-28
---
No tags.
+9
View File
@@ -0,0 +1,9 @@
---
type: article
section: posts
slug: one-tag
title: One Tag
date: 2026-08-28
tags: [python]
---
One tag.
@@ -0,0 +1,9 @@
---
type: article
section: posts
slug: two-tags
title: Two Tags
date: 2026-08-28
tags: [python, testing]
---
Two tags.
+110 -1
View File
@@ -1,6 +1,6 @@
from pathlib import Path from pathlib import Path
import pytest import pytest
from omicron.ssg.output import ContentError, Directory from omicron.ssg.output import ContentError, Directory, OutputError
from omicron.ssg.site import ConfigError, Site from omicron.ssg.site import ConfigError, Site
@@ -98,3 +98,112 @@ def test_clean_removes_output_directory(make_site):
def test_resolve_template_path_raises_for_missing_template(): def test_resolve_template_path_raises_for_missing_template():
with pytest.raises(ConfigError, match="not found"): with pytest.raises(ConfigError, match="not found"):
Site.resolve_template_path("does-not-exist") Site.resolve_template_path("does-not-exist")
def test_home_url(site_dir):
path = site_dir("thin_site")
(path / "config.yml").write_text("name: test\ntemplate: plain\n")
assert Site(path).home_url() == "/"
(path / "config.yml").write_text(
"name: test\ntemplate: plain\nbase_url: http://example.com/blog\n"
)
assert Site(path).home_url() == "/blog"
def test_url_for(site_dir):
path = site_dir("thin_site")
(path / "config.yml").write_text(
"name: test\ntemplate: plain\nbase_url: http://example.com/blog\n"
)
site = Site(path)
assert site.url_for("assets/style.css") == "/blog/assets/style.css"
with pytest.raises(OutputError, match="must be relative"):
site.url_for("/assets/style.css")
def test_section_url(site_dir):
path = site_dir("sections")
site = Site(path)
site.discover()
assert site.section_url("posts") == "/posts"
assert site.section_url("notes") == "/notes"
(path / "config.yml").write_text("name: test\ntemplate: plain\nbase_url: /blog\n")
site = Site(path)
site.discover()
assert site.section_url("posts") == "/blog/posts"
assert site.section_url("notes") == "/blog/notes"
def test_add_by_section(make_site):
site = make_site("sections")
site.discover()
assert set(site.by_section) == {"posts", "notes"}
assert {c.title for c in site.by_section["posts"]} == {"First Post", "Second Post"}
assert {c.title for c in site.by_section["notes"]} == {"First Note"}
def test_feed_url(site_dir):
path = site_dir("tags")
(path / "config.yml").write_text(
"name: test\ntemplate: plain\nbase_url: http://example.com\n"
)
site = Site(path)
site.discover()
assert site.feed_url("root", None) == "/atom.xml"
(path / "config.yml").write_text("name: test\ntemplate: plain\n")
site = Site(path)
site.discover()
assert site.feed_url("root", None) is None
def test_tag_url(site_dir):
path = site_dir("tags")
site = Site(path)
site.discover()
assert site.tag_url("python") == "/tags/python"
(path / "config.yml").write_text("name: test\ntemplate: plain\nbase_url: /blog\n")
site = Site(path)
site.discover()
assert site.tag_url("python") == "/blog/tags/python"
def test_tags_url(make_site):
site = make_site("tags")
site.discover()
assert site.tags_url() == "/tags"
def test_add_by_source(make_site):
site = make_site("tags")
site.discover()
assert site.by_source
for content in site.content:
assert site.by_source[content.source] is content
def test_tags_by_count(make_site):
site = make_site("tags")
site.discover()
assert site.tags_by_count == [("python", 2), ("testing", 1)]
def test_add_by_tag(make_site):
site = make_site("tags")
site.discover()
assert set(site.by_tag) == {"python", "testing"}
assert {c.title for c in site.by_tag["python"]} == {"One Tag", "Two Tags"}
assert {c.title for c in site.by_tag["testing"]} == {"Two Tags"}