cob: Add missing `verdict` field to `review.edit`
This is generally useful, and required when constructing a review without knowing the verdict ahead of time.
This commit is contained in:
parent
152be65053
commit
54cc92cc83
|
|
@ -687,8 +687,12 @@ async fn patch_update_handler(
|
||||||
} => {
|
} => {
|
||||||
patch.edit_revision(revision, description, &signer)?;
|
patch.edit_revision(revision, description, &signer)?;
|
||||||
}
|
}
|
||||||
patch::Action::ReviewEdit { review, summary } => {
|
patch::Action::ReviewEdit {
|
||||||
patch.edit_review(review, summary, &signer)?;
|
review,
|
||||||
|
summary,
|
||||||
|
verdict,
|
||||||
|
} => {
|
||||||
|
patch.edit_review(review, summary, verdict, &signer)?;
|
||||||
}
|
}
|
||||||
patch::Action::ReviewComment {
|
patch::Action::ReviewComment {
|
||||||
review,
|
review,
|
||||||
|
|
|
||||||
|
|
@ -157,6 +157,8 @@ pub enum Action {
|
||||||
ReviewEdit {
|
ReviewEdit {
|
||||||
review: ReviewId,
|
review: ReviewId,
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||||
|
verdict: Option<Verdict>,
|
||||||
|
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||||
summary: Option<String>,
|
summary: Option<String>,
|
||||||
},
|
},
|
||||||
#[serde(rename = "review.redact")]
|
#[serde(rename = "review.redact")]
|
||||||
|
|
@ -585,7 +587,11 @@ impl store::FromHistory for Patch {
|
||||||
return Err(Error::Missing(revision.into_inner()));
|
return Err(Error::Missing(revision.into_inner()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Action::ReviewEdit { review, summary } => {
|
Action::ReviewEdit {
|
||||||
|
review,
|
||||||
|
summary,
|
||||||
|
verdict,
|
||||||
|
} => {
|
||||||
let Some(Some((revision, author))) =
|
let Some(Some((revision, author))) =
|
||||||
self.reviews.get(&review) else {
|
self.reviews.get(&review) else {
|
||||||
return Err(Error::Missing(review.into_inner()));
|
return Err(Error::Missing(review.into_inner()));
|
||||||
|
|
@ -601,6 +607,7 @@ impl store::FromHistory for Patch {
|
||||||
};
|
};
|
||||||
if let Some(review) = review {
|
if let Some(review) = review {
|
||||||
review.summary = summary;
|
review.summary = summary;
|
||||||
|
review.verdict = verdict;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1185,8 +1192,13 @@ impl store::Transaction<Patch> {
|
||||||
&mut self,
|
&mut self,
|
||||||
review: ReviewId,
|
review: ReviewId,
|
||||||
summary: Option<String>,
|
summary: Option<String>,
|
||||||
|
verdict: Option<Verdict>,
|
||||||
) -> Result<(), store::Error> {
|
) -> Result<(), store::Error> {
|
||||||
self.push(Action::ReviewEdit { review, summary })
|
self.push(Action::ReviewEdit {
|
||||||
|
review,
|
||||||
|
summary,
|
||||||
|
verdict,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Redact the revision.
|
/// Redact the revision.
|
||||||
|
|
@ -1431,9 +1443,12 @@ where
|
||||||
&mut self,
|
&mut self,
|
||||||
review: ReviewId,
|
review: ReviewId,
|
||||||
summary: Option<String>,
|
summary: Option<String>,
|
||||||
|
verdict: Option<Verdict>,
|
||||||
signer: &G,
|
signer: &G,
|
||||||
) -> Result<EntryId, Error> {
|
) -> Result<EntryId, Error> {
|
||||||
self.transaction("Edit review", signer, |tx| tx.edit_review(review, summary))
|
self.transaction("Edit review", signer, |tx| {
|
||||||
|
tx.edit_review(review, summary, verdict)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Redact a revision.
|
/// Redact a revision.
|
||||||
|
|
@ -2137,12 +2152,17 @@ mod test {
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
patch
|
patch
|
||||||
.edit_review(review, Some("Whoops!".to_owned()), &alice.signer)
|
.edit_review(
|
||||||
|
review,
|
||||||
|
Some("Whoops!".to_owned()),
|
||||||
|
Some(Verdict::Reject),
|
||||||
|
&alice.signer,
|
||||||
|
)
|
||||||
.unwrap(); // Overwrite the comment.
|
.unwrap(); // Overwrite the comment.
|
||||||
//
|
//
|
||||||
let (_, revision) = patch.latest();
|
let (_, revision) = patch.latest();
|
||||||
let review = revision.review(alice.signer.public_key()).unwrap();
|
let review = revision.review(alice.signer.public_key()).unwrap();
|
||||||
assert_eq!(review.verdict(), Some(Verdict::Accept));
|
assert_eq!(review.verdict(), Some(Verdict::Reject));
|
||||||
assert_eq!(review.summary(), Some("Whoops!"));
|
assert_eq!(review.summary(), Some("Whoops!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2213,7 +2233,9 @@ mod test {
|
||||||
let review = patch
|
let review = patch
|
||||||
.review(rid, None, Some("Nah".to_owned()), vec![], &alice.signer)
|
.review(rid, None, Some("Nah".to_owned()), vec![], &alice.signer)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
patch.edit_review(review, None, &alice.signer).unwrap();
|
patch
|
||||||
|
.edit_review(review, None, None, &alice.signer)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
let id = patch.id;
|
let id = patch.id;
|
||||||
let patch = patches.get_mut(&id).unwrap();
|
let patch = patches.get_mut(&id).unwrap();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue