feat: configure personal pull request review indicators

This commit is contained in:
Valdemar Lorenzen
2026-10-21 11:14:50 +02:00
parent bd71d463a4
commit 0202644efa
18 changed files with 901 additions and 88 deletions
+46
View File
@@ -433,6 +433,7 @@ fn pull_page(closed: bool, rows: &[(u64, &str, &str)], has_more: bool) -> Outcom
},
),
date.into(),
PullRequestReviewState::None,
)
})
.collect(),
@@ -440,6 +441,51 @@ fn pull_page(closed: bool, rows: &[(u64, &str, &str)], has_more: bool) -> Outcom
}
}
#[test]
fn pull_request_review_refresh_preserves_identity_sorting_and_raw_search_labels() {
let mut state = DiffState::pull_requests("origin".into());
state.take_request();
state.apply_result(
1,
Ok(pull_page(
false,
&[(1, "First", "1"), (2, "Second", "2")],
true,
)),
);
state.handle(Input::End);
for review_state in [
PullRequestReviewState::Approved,
PullRequestReviewState::Requested,
PullRequestReviewState::None,
] {
let mut page = pull_page(false, &[(1, "First updated", "3")], true);
if let Outcome::PullRequestPage {
result: Ok(page), ..
} = &mut page
{
page.entries[0].2 = review_state;
}
state.apply_result(1, Ok(page));
let selected = state.entries().nth(state.selected).unwrap();
assert_eq!(selected.label, "#1 First updated");
assert_eq!(state.pull_request_review_state(selected), review_state);
assert_eq!(state.entries().count(), 2);
assert_eq!(state.entries().next().unwrap().target, selected.target);
}
state.handle(Input::Char('🙏'));
assert_eq!(state.entries().count(), 0);
state.handle(Input::Backspace);
for ch in "#1 First updated".chars() {
state.handle(Input::Char(ch));
}
assert_eq!(state.entries().count(), 1);
assert_eq!(
state.pull_request_review_state(&catalog().entries[0]),
PullRequestReviewState::None
);
}
#[test]
fn pull_request_categories_keep_query_and_select_loaded_rows_before_completion() {
let mut state = DiffState::pull_requests("origin".into());