53 lines
1.3 KiB
Ruby
53 lines
1.3 KiB
Ruby
# 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
|