63 lines
1.8 KiB
Ruby
63 lines
1.8 KiB
Ruby
|
|
require_relative "test_helper"
|
||
|
|
|
||
|
|
class RepositoryTest < Minitest::Test
|
||
|
|
include AdrTestHelpers
|
||
|
|
|
||
|
|
def test_next_id_on_empty_dir_is_0001
|
||
|
|
with_project do |root|
|
||
|
|
assert_equal "0001", Adr::Repository.new(root: root).next_id
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
def test_next_id_is_max_plus_one
|
||
|
|
with_project("0001-a.md" => sample_adr(id: "0001"),
|
||
|
|
"0002-b.md" => sample_adr(id: "0002")) do |root|
|
||
|
|
assert_equal "0003", Adr::Repository.new(root: root).next_id
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
def test_next_id_ignores_missing_index
|
||
|
|
with_project("0007-x.md" => sample_adr(id: "0007")) do |root|
|
||
|
|
repo = Adr::Repository.new(root: root)
|
||
|
|
refute File.exist?(repo.index_path)
|
||
|
|
assert_equal "0008", repo.next_id
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
def test_next_id_ignores_stale_index
|
||
|
|
with_project("0007-x.md" => sample_adr(id: "0007")) do |root|
|
||
|
|
repo = Adr::Repository.new(root: root)
|
||
|
|
File.write(repo.index_path, "| 0042 | stale row |")
|
||
|
|
assert_equal "0008", repo.next_id
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
def test_exists_requires_dir_and_index
|
||
|
|
with_project do |root|
|
||
|
|
repo = Adr::Repository.new(root: root)
|
||
|
|
refute repo.exists?
|
||
|
|
File.write(repo.index_path, "index")
|
||
|
|
assert repo.exists?
|
||
|
|
end
|
||
|
|
Dir.mktmpdir do |root|
|
||
|
|
refute Adr::Repository.new(root: root).exists?
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
def test_find_by_id
|
||
|
|
with_project("0002-b.md" => sample_adr(id: "0002", title: "B")) do |root|
|
||
|
|
entry = Adr::Repository.new(root: root).find("0002")
|
||
|
|
assert_equal "B", entry.record.title
|
||
|
|
assert entry.path.end_with?("0002-b.md")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
def test_non_adr_files_are_ignored
|
||
|
|
with_project("0001-a.md" => sample_adr, "notes.md" => "# notes") do |root|
|
||
|
|
repo = Adr::Repository.new(root: root)
|
||
|
|
assert_equal 1, repo.entries.size
|
||
|
|
assert_equal "0002", repo.next_id
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|