cc-os/plugins/os-adr/tests/repository_test.rb

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