53 lines
1.1 KiB
Ruby
53 lines
1.1 KiB
Ruby
require "minitest/autorun"
|
|
require "tmpdir"
|
|
require "fileutils"
|
|
require_relative "../lib/adr"
|
|
|
|
module AdrTestHelpers
|
|
PLUGIN_ROOT = File.expand_path("..", __dir__)
|
|
FIXTURES = File.join(__dir__, "fixtures")
|
|
|
|
# Yields a tmp project root containing an initialized docs/adr/ populated
|
|
# with the given ADR fixture contents (id => full file body).
|
|
def with_project(adrs = {})
|
|
Dir.mktmpdir do |root|
|
|
dir = File.join(root, "docs", "adr")
|
|
FileUtils.mkdir_p(dir)
|
|
adrs.each { |filename, body| File.write(File.join(dir, filename), body) }
|
|
yield root
|
|
end
|
|
end
|
|
|
|
def sample_adr(id: "0001", title: "Use Postgres", status: "Accepted", extra_frontmatter: "")
|
|
<<~MD
|
|
---
|
|
id: "#{id}"
|
|
date: 2026-07-03
|
|
status: #{status}
|
|
supersedes:
|
|
superseded-by:
|
|
affected-paths: [db/, lib/storage]
|
|
affected-components: [storage]
|
|
#{extra_frontmatter}---
|
|
|
|
# #{id} — #{title}
|
|
|
|
## Context
|
|
|
|
We need a database.
|
|
|
|
## Decision
|
|
|
|
Use Postgres.
|
|
|
|
## Consequences
|
|
|
|
Ops burden.
|
|
|
|
## Alternatives rejected
|
|
|
|
SQLite — no concurrent writers.
|
|
MD
|
|
end
|
|
end
|