mirror of
https://github.com/samsonjs/samhuri.net.git
synced 2026-03-25 09:05:47 +00:00
Move Minitest files from spec/ to test/ and update bake tasks to discover and run tests from test/**/*_test.rb. Update README and AGENTS guidance to reference test/ and tests, and drop the obsolete spec/examples.txt ignore entry.
108 lines
3 KiB
Ruby
108 lines
3 KiB
Ruby
require "test_helper"
|
|
require "fileutils"
|
|
require "tmpdir"
|
|
|
|
class Pressa::Posts::PostRepoTest < Minitest::Test
|
|
def repo
|
|
@repo ||= Pressa::Posts::PostRepo.new
|
|
end
|
|
|
|
def test_read_posts_reads_and_organizes_posts_by_year_and_month
|
|
Dir.mktmpdir do |tmpdir|
|
|
posts_dir = File.join(tmpdir, "posts", "2025", "11")
|
|
FileUtils.mkdir_p(posts_dir)
|
|
|
|
post_content = <<~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
|
|
|
|
File.write(File.join(posts_dir, "shredding.md"), post_content)
|
|
|
|
posts_by_year = repo.read_posts(File.join(tmpdir, "posts"))
|
|
|
|
assert_equal(1, posts_by_year.all_posts.length)
|
|
|
|
post = posts_by_year.all_posts.first
|
|
assert_equal("Shredding in November", post.title)
|
|
assert_equal("Shaun White", post.author)
|
|
assert_equal("shredding", post.slug)
|
|
assert_equal(2025, post.year)
|
|
assert_equal(11, post.month)
|
|
assert_equal("/posts/2025/11/shredding", post.path)
|
|
end
|
|
end
|
|
|
|
def test_read_posts_generates_excerpts_from_post_content
|
|
Dir.mktmpdir do |tmpdir|
|
|
posts_dir = File.join(tmpdir, "posts", "2025", "11")
|
|
FileUtils.mkdir_p(posts_dir)
|
|
|
|
post_content = <<~MARKDOWN
|
|
---
|
|
Title: Test Post
|
|
Author: Greg Graffin
|
|
Date: 5th November, 2025
|
|
Timestamp: 2025-11-05T10:00:00-08:00
|
|
---
|
|
|
|
This is a test post with some content. It should generate an excerpt.
|
|
|
|

|
|
|
|
More content with a [link](https://example.net).
|
|
MARKDOWN
|
|
|
|
File.write(File.join(posts_dir, "test.md"), post_content)
|
|
|
|
posts_by_year = repo.read_posts(File.join(tmpdir, "posts"))
|
|
post = posts_by_year.all_posts.first
|
|
|
|
assert_includes(post.excerpt, "test post")
|
|
refute_includes(post.excerpt, "![")
|
|
assert_includes(post.excerpt, "link")
|
|
refute_includes(post.excerpt, "[link]")
|
|
end
|
|
end
|
|
|
|
def test_read_posts_merges_multiple_posts_in_same_month
|
|
Dir.mktmpdir do |tmpdir|
|
|
posts_dir = File.join(tmpdir, "posts", "2025", "11")
|
|
FileUtils.mkdir_p(posts_dir)
|
|
|
|
File.write(File.join(posts_dir, "first.md"), <<~MARKDOWN)
|
|
---
|
|
Title: First Post
|
|
Author: Sami Samhuri
|
|
Date: 5th November, 2025
|
|
Timestamp: 2025-11-05T10:00:00-08:00
|
|
---
|
|
|
|
First
|
|
MARKDOWN
|
|
|
|
File.write(File.join(posts_dir, "second.md"), <<~MARKDOWN)
|
|
---
|
|
Title: Second Post
|
|
Author: Sami Samhuri
|
|
Date: 6th November, 2025
|
|
Timestamp: 2025-11-06T10:00:00-08:00
|
|
---
|
|
|
|
Second
|
|
MARKDOWN
|
|
|
|
posts_by_year = repo.read_posts(File.join(tmpdir, "posts"))
|
|
month_posts = posts_by_year.by_year.fetch(2025).by_month.fetch(11)
|
|
|
|
assert_equal(2, month_posts.posts.length)
|
|
assert_equal(["Second Post", "First Post"], month_posts.sorted_posts.map(&:title))
|
|
end
|
|
end
|
|
end
|