samhuri.net/test/posts/plugin_test.rb
Sami Samhuri 007b1058b6
Migrate from Swift to Ruby (#33)
Replace the Swift site generator with a Ruby and Phlex implementation.
Loads site and projects from TOML, derive site metadata from posts.

Migrate from make to bake and add standardrb and code coverage tasks.

Update CI and docs to match the new workflow, and remove unused
assets/dependencies plus obsolete tooling.
2026-02-07 21:19:03 -08:00

67 lines
2.1 KiB
Ruby

require "test_helper"
require "fileutils"
require "tmpdir"
class Pressa::Posts::PluginTest < Minitest::Test
def site
@site ||= Pressa::Site.new(
author: "Sami Samhuri",
email: "sami@samhuri.net",
title: "samhuri.net",
description: "blog",
url: "https://samhuri.net"
)
end
def test_setup_skips_when_posts_directory_does_not_exist
Dir.mktmpdir do |source_path|
plugin = Pressa::Posts::Plugin.new
plugin.setup(site:, source_path:)
assert_nil(plugin.posts_by_year)
end
end
def test_render_skips_when_setup_did_not_load_posts
Dir.mktmpdir do |target_path|
plugin = Pressa::Posts::Plugin.new
plugin.render(site:, target_path:)
refute(File.exist?(File.join(target_path, "index.html")))
refute(File.exist?(File.join(target_path, "feed.json")))
refute(File.exist?(File.join(target_path, "feed.xml")))
end
end
def test_setup_and_render_write_post_indexes_and_feeds
Dir.mktmpdir do |root|
source_path = File.join(root, "source")
target_path = File.join(root, "target")
posts_dir = File.join(source_path, "posts", "2025", "11")
FileUtils.mkdir_p(posts_dir)
File.write(File.join(posts_dir, "shredding.md"), <<~MARKDOWN)
---
Title: Shredding in November
Author: Shaun White
Date: 5th November, 2025
Timestamp: 2025-11-05T10:00:00-08:00
---
Had an epic day at Whistler. The powder was deep and the lines were short.
MARKDOWN
plugin = Pressa::Posts::Plugin.new
plugin.setup(site:, source_path:)
plugin.render(site:, target_path:)
assert(File.exist?(File.join(target_path, "index.html")))
assert(File.exist?(File.join(target_path, "posts/index.html")))
assert(File.exist?(File.join(target_path, "posts/2025/index.html")))
assert(File.exist?(File.join(target_path, "posts/2025/11/index.html")))
assert(File.exist?(File.join(target_path, "posts/2025/11/shredding/index.html")))
assert(File.exist?(File.join(target_path, "feed.json")))
assert(File.exist?(File.join(target_path, "feed.xml")))
end
end
end