feat: initial release of volumen — a file-based Markdown blog engine
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "test_helper"
|
||||
require "tmpdir"
|
||||
require "fileutils"
|
||||
|
||||
class StoreTest < Minitest::Test
|
||||
def setup
|
||||
@dir = Dir.mktmpdir
|
||||
File.write(File.join(@dir, "hello.md"), "+++\ntitle = \"Hello\"\n+++\n\nBody\n")
|
||||
FileUtils.mkdir_p(File.join(@dir, "cs"))
|
||||
File.write(File.join(@dir, "cs", "ahoj.md"), "+++\ntitle = \"Ahoj\"\n+++\n\nTelo\n")
|
||||
end
|
||||
|
||||
def teardown
|
||||
FileUtils.remove_entry(@dir)
|
||||
end
|
||||
|
||||
def test_all_loads_every_post
|
||||
assert_equal 2, Volumen::Store.new(@dir).all.length
|
||||
end
|
||||
|
||||
def test_slug_falls_back_to_filename
|
||||
slugs = Volumen::Store.new(@dir).all.map(&:slug).sort
|
||||
assert_equal %w[ahoj hello], slugs
|
||||
end
|
||||
|
||||
def test_lang_derived_from_subdirectory
|
||||
store = Volumen::Store.new(@dir, default_lang: "en")
|
||||
assert_equal "cs", store.find("ahoj").lang
|
||||
assert_equal "en", store.find("hello").lang
|
||||
end
|
||||
|
||||
def test_find_returns_nil_when_missing
|
||||
assert_nil Volumen::Store.new(@dir).find("nope")
|
||||
end
|
||||
|
||||
def test_all_langs_post_is_visible_in_any_language
|
||||
File.write(File.join(@dir, "global.md"), <<~POST)
|
||||
+++
|
||||
title = "Global"
|
||||
lang = "en"
|
||||
all_langs = true
|
||||
+++
|
||||
|
||||
Visible everywhere.
|
||||
POST
|
||||
store = Volumen::Store.new(@dir, default_lang: "en")
|
||||
assert store.find("global", lang: "cs")
|
||||
assert store.find("global", lang: "en")
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user