Files
mesh-catalog/modules/mesh-knowledge/cmd/mesh-knowledge/writers_test.go
T
jschoubben 10ab959d0f
mesh/merge-gate pass: builds new: modules/mesh-knowledge, sent nowhere; no bus step; every machine composes with the change as it did without (4 of 4 compo…
mesh/repo-check pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
mesh/delivery superseded: a newer head of the same pull request
Tighten who writes and reviews a record, date the rules, bound history (review of #206)
A revision came from anyone and a review was refused only to the first author,
so a co-writer could approve, and a record proposed before callers are proven
would later be reviewable by its own unproven author. Now a revision is taken
only from the proven author, a reserved number only from whoever reserved it,
and a review is refused from any writer of any version or for any record with
an unproven writer. The rules held records from no date, so a correction to an
older record was refused by rules hq never held it to; each dated rule now holds
from hq's own start date, and a new record cannot be dated before its
reservation. history and the question to ask are bounded like the other answers.
2026-10-11 05:10:02 +02:00

83 lines
3.3 KiB
Go

package main
import (
"strings"
"testing"
)
// Who may write and review (the review of mesh-catalog#206): a proposal is revised only by its author, proven; a
// number reserved by a proven caller is proposed only by that caller; a review is refused from anyone who wrote
// any version of the record, and for a record whose author was never proven.
func TestARevisionIsTakenOnlyFromTheRecordsAuthor(t *testing.T) {
w := imported(t, newMemStore())
n := proposed(t, w, "author@g14", false)
p := valid(n)
p.Sections[2].Text = "Merges land a little sooner."
if _, err := w.k.Propose("other@novox", p); err == nil || !strings.Contains(err.Error(), "only its author") {
t.Fatalf("a revision by someone else: %v", err)
}
if _, err := w.k.Propose(Unproven, p); err == nil || !strings.Contains(err.Error(), "only its author") {
t.Fatalf("a revision by an unproven caller: %v", err)
}
if mustGet(t, w.k.Store, Key{KindDecision, n}).Versions != 2 {
t.Fatal("a refused revision wrote a version")
}
if _, err := w.k.Propose("author@g14", p); err != nil {
t.Fatalf("the author's revision: %v", err)
}
}
func TestAReservedNumberIsProposedOnlyByWhoReservedIt(t *testing.T) {
w := imported(t, newMemStore())
n := w.reserved(t, "author@g14")
if _, err := w.k.Propose("other@novox", valid(n)); err == nil || !strings.Contains(err.Error(), "reserved by author@g14") {
t.Fatalf("a proposal under another's number: %v", err)
}
if _, err := w.k.Propose("author@g14", valid(n)); err != nil {
t.Fatal(err)
}
}
// A writer of any version, not only the first, does not review it.
func TestAReviewByAnyoneWhoWroteAVersionIsRefused(t *testing.T) {
w := imported(t, newMemStore())
n := w.reserved(t, "author@g14")
if _, err := w.k.Propose("author@g14", valid(n)); err != nil {
t.Fatal(err)
}
// An insight to an accepted record: its writers are the record's and the insight's.
if _, err := w.k.Review("reviewer@novox", ReviewAsk{Kind: KindDecision, Number: n, Verdict: VerdictApprove}); err != nil {
t.Fatal(err)
}
p := valid(n)
p.Sections[2].Text = "Merges land sooner, by a minute."
p.Insight = "it said only that merges land sooner"
if _, err := w.k.Propose("corrector@ace", p); err != nil {
t.Fatal(err)
}
for _, writer := range []string{"author@g14", "corrector@ace"} {
if _, err := w.k.Review(writer, ReviewAsk{Kind: KindDecision, Number: n, Verdict: VerdictApprove}); err == nil ||
!strings.Contains(err.Error(), "wrote") {
t.Fatalf("a review by %s, who wrote a version: %v", writer, err)
}
}
if _, err := w.k.Review("reviewer@novox", ReviewAsk{Kind: KindDecision, Number: n, Verdict: VerdictApprove}); err != nil {
t.Fatal(err)
}
}
// A record proposed while callers were unproven is never reviewable, even once callers are proven: its real
// author cannot be told from its reviewer. It is proposed again.
func TestARecordProposedUnprovenIsNeverReviewed(t *testing.T) {
w := imported(t, newMemStore())
n := proposed(t, w, Unproven, false)
_, err := w.k.Review("reviewer@novox", ReviewAsk{Kind: KindDecision, Number: n, Verdict: VerdictApprove})
if err == nil || !strings.Contains(err.Error(), "propose it again") {
t.Fatalf("a review of a record whose author is unproven: %v", err)
}
if mustGet(t, w.k.Store, Key{KindDecision, n}).Current.Status != StatusProposed {
t.Fatal("accepted")
}
}