mirror of
https://github.com/samsonjs/samhuri.net.git
synced 2026-03-25 09:05:47 +00:00
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.
82 lines
2.9 KiB
Ruby
82 lines
2.9 KiB
Ruby
require "test_helper"
|
|
|
|
class Pressa::Posts::ModelsTest < Minitest::Test
|
|
def regular_post
|
|
@regular_post ||= Pressa::Posts::Post.new(
|
|
slug: "regular",
|
|
title: "Regular",
|
|
author: "Sami Samhuri",
|
|
date: DateTime.parse("2025-11-05T10:00:00-08:00"),
|
|
formatted_date: "5th November, 2025",
|
|
body: "<p>regular</p>",
|
|
excerpt: "regular...",
|
|
path: "/posts/2025/11/regular"
|
|
)
|
|
end
|
|
|
|
def link_post
|
|
@link_post ||= Pressa::Posts::Post.new(
|
|
slug: "linked",
|
|
title: "Linked",
|
|
author: "Sami Samhuri",
|
|
date: DateTime.parse("2024-10-01T10:00:00-07:00"),
|
|
formatted_date: "1st October, 2024",
|
|
link: "https://example.net/post",
|
|
body: "<p>linked</p>",
|
|
excerpt: "linked...",
|
|
path: "/posts/2024/10/linked"
|
|
)
|
|
end
|
|
|
|
def test_post_helpers_report_date_parts_and_link_state
|
|
assert_equal(2025, regular_post.year)
|
|
assert_equal(11, regular_post.month)
|
|
assert_equal("November", regular_post.formatted_month)
|
|
assert_equal("11", regular_post.padded_month)
|
|
refute(regular_post.link_post?)
|
|
assert(link_post.link_post?)
|
|
end
|
|
|
|
def test_month_from_date_creates_expected_values
|
|
month = Pressa::Posts::Month.from_date(DateTime.parse("2025-02-14T08:00:00-08:00"))
|
|
assert_equal("February", month.name)
|
|
assert_equal(2, month.number)
|
|
assert_equal("02", month.padded)
|
|
end
|
|
|
|
def test_month_posts_sorted_posts_returns_descending_by_date
|
|
month_posts = Pressa::Posts::MonthPosts.new(
|
|
month: Pressa::Posts::Month.new(name: "November", number: 11, padded: "11"),
|
|
posts: [link_post, regular_post]
|
|
)
|
|
|
|
assert_equal([regular_post, link_post], month_posts.sorted_posts)
|
|
end
|
|
|
|
def test_year_posts_and_posts_by_year_sorting_helpers
|
|
oct_posts = Pressa::Posts::MonthPosts.new(
|
|
month: Pressa::Posts::Month.new(name: "October", number: 10, padded: "10"),
|
|
posts: [link_post]
|
|
)
|
|
nov_posts = Pressa::Posts::MonthPosts.new(
|
|
month: Pressa::Posts::Month.new(name: "November", number: 11, padded: "11"),
|
|
posts: [regular_post]
|
|
)
|
|
|
|
year_2025 = Pressa::Posts::YearPosts.new(year: 2025, by_month: {11 => nov_posts, 10 => oct_posts})
|
|
year_2024 = Pressa::Posts::YearPosts.new(year: 2024, by_month: {10 => oct_posts})
|
|
posts_by_year = Pressa::Posts::PostsByYear.new(by_year: {2024 => year_2024, 2025 => year_2025})
|
|
|
|
assert_equal([11, 10], year_2025.sorted_months.map { |mp| mp.month.number })
|
|
assert_equal([regular_post, link_post], year_2025.all_posts)
|
|
assert_equal([2025, 2024], posts_by_year.sorted_years)
|
|
assert_equal(2024, posts_by_year.earliest_year)
|
|
assert_equal(3, posts_by_year.all_posts.length)
|
|
assert_equal([regular_post], posts_by_year.recent_posts(1))
|
|
end
|
|
|
|
def test_posts_by_year_earliest_year_is_nil_for_empty_collection
|
|
posts_by_year = Pressa::Posts::PostsByYear.new(by_year: {})
|
|
assert_nil(posts_by_year.earliest_year)
|
|
end
|
|
end
|