samhuri.net/test/site_test.rb
Sami Samhuri 9a0b182879
Publish a Gemini site and link to it from the website (#36)
* Publish on gemini in addition to the web

* Publish gemini feeds, add link from web, tweak things
2026-02-14 17:18:09 -08:00

106 lines
3.2 KiB
Ruby

require "test_helper"
require "tmpdir"
class Pressa::SiteTest < Minitest::Test
def test_url_helpers
site = Pressa::Site.new(
author: "Sami Samhuri",
email: "sami@samhuri.net",
title: "samhuri.net",
description: "blog",
url: "https://samhuri.net",
image_url: "https://images.example.net"
)
assert_equal("https://samhuri.net/posts", site.url_for("/posts"))
assert_equal("https://images.example.net/avatar.png", site.image_url_for("/avatar.png"))
end
def test_image_url_for_returns_nil_when_image_url_not_configured
site = Pressa::Site.new(
author: "Sami Samhuri",
email: "sami@samhuri.net",
title: "samhuri.net",
description: "blog",
url: "https://samhuri.net"
)
assert_nil(site.image_url_for("/avatar.png"))
end
def test_site_defaults_to_html_output_options
site = Pressa::Site.new(
author: "Sami Samhuri",
email: "sami@samhuri.net",
title: "samhuri.net",
description: "blog",
url: "https://samhuri.net"
)
assert_equal("html", site.output_format)
assert_instance_of(Pressa::HTMLOutputOptions, site.output_options)
assert_equal([], site.html_output_options&.remote_links)
assert_nil(site.gemini_output_options)
end
def test_output_option_helpers_match_gemini_site
site = Pressa::Site.new(
author: "Sami Samhuri",
email: "sami@samhuri.net",
title: "samhuri.net",
description: "blog",
url: "https://samhuri.net",
output_format: "gemini",
output_options: Pressa::GeminiOutputOptions.new(
public_excludes: ["tweets/**"],
recent_posts_limit: 12,
home_links: [Pressa::OutputLink.new(label: "About", href: "/about/")]
)
)
assert_nil(site.html_output_options)
assert_instance_of(Pressa::GeminiOutputOptions, site.gemini_output_options)
assert_equal(["tweets/**"], site.public_excludes)
assert_equal(12, site.gemini_output_options&.recent_posts_limit)
end
def test_create_site_builds_site_using_loader
Dir.mktmpdir do |dir|
File.write(File.join(dir, "site.toml"), <<~TOML)
author = "Sami Samhuri"
email = "sami@samhuri.net"
title = "samhuri.net"
description = "blog"
url = "https://samhuri.net"
TOML
File.write(File.join(dir, "projects.toml"), <<~TOML)
[[projects]]
name = "demo"
title = "demo"
description = "demo project"
url = "https://github.com/samsonjs/demo"
TOML
site = Pressa.create_site(source_path: dir, url_override: "https://beta.samhuri.net")
assert_equal("https://beta.samhuri.net", site.url)
end
end
def test_create_site_accepts_output_format
Dir.mktmpdir do |dir|
File.write(File.join(dir, "site.toml"), <<~TOML)
author = "Sami Samhuri"
email = "sami@samhuri.net"
title = "samhuri.net"
description = "blog"
url = "https://samhuri.net"
TOML
File.write(File.join(dir, "projects.toml"), <<~TOML)
projects = []
TOML
site = Pressa.create_site(source_path: dir, output_format: "gemini")
assert_equal("gemini", site.output_format)
end
end
end