feat: separate draft pull requests into their own tab

This commit is contained in:
Valdemar Lorenzen
2026-10-21 10:25:08 +02:00
parent cce3b1e469
commit 6a359cc351
9 changed files with 179 additions and 22 deletions
+36
View File
@@ -7,6 +7,42 @@ fn parse(url: &str, provider: Option<&str>) -> Result<Forge, String> {
})
}
#[test]
fn draft_summaries_keep_open_closed_and_merged_states_distinct() {
for provider in [Provider::Github, Provider::Gitlab, Provider::Gitea] {
for (closed, merged, expected) in [
(false, false, "draft"),
(true, false, "closed"),
(true, true, "merged"),
] {
let mut value = json!({
"number": 7, "iid": 7, "title": "Unfinished work", "draft": true,
"state": if merged && provider == Provider::Gitlab { "merged" }
else if closed { "closed" }
else if provider == Provider::Gitlab { "opened" } else { "open" },
"merged": merged,
"merged_at": if merged { Some("2024-01-02T00:00:00Z") } else { None },
"user": null, "author": null, "created_at": "2024-01-01T00:00:00Z"
});
let entry = summary(provider, &value, Some((1, 2))).unwrap();
assert!(entry.draft);
assert_eq!(entry.closed, closed);
assert_eq!(
entry.description,
format!("deleted user · {expected} · +1 -2")
);
if !closed {
value["draft"] = json!(false);
assert!(!summary(provider, &value, None).unwrap().draft);
value.as_object_mut().unwrap().remove("draft");
assert!(!summary(provider, &value, None).unwrap().draft);
value["draft"] = json!("true");
assert!(summary(provider, &value, None).is_err());
}
}
}
}
#[test]
fn pull_request_sizes_include_zero_and_preserve_unknown_statistics() {
for (url, provider) in [