huskies: merge 945
This commit is contained in:
@@ -300,6 +300,9 @@ fn supersede_from_any_active_or_done() {
|
||||
|
||||
#[test]
|
||||
fn review_hold_from_active_stages() {
|
||||
// Story 945: `ReviewHold` transitions to `Stage::ReviewHold { resume_to }`
|
||||
// with the resume_to set to the originating stage, replacing the legacy
|
||||
// boolean flag.
|
||||
for s in [Stage::Backlog, Stage::Coding, Stage::Qa] {
|
||||
let result = transition(
|
||||
s.clone(),
|
||||
@@ -307,13 +310,14 @@ fn review_hold_from_active_stages() {
|
||||
reason: "review".into(),
|
||||
},
|
||||
);
|
||||
assert!(matches!(
|
||||
result,
|
||||
Ok(Stage::Archived {
|
||||
reason: ArchiveReason::ReviewHeld { .. },
|
||||
..
|
||||
})
|
||||
));
|
||||
let resumed = match result {
|
||||
Ok(Stage::ReviewHold { resume_to, .. }) => *resume_to,
|
||||
other => panic!("ReviewHold should produce Stage::ReviewHold; got {other:?}"),
|
||||
};
|
||||
assert_eq!(
|
||||
resumed, s,
|
||||
"resume_to should preserve the originating stage"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -578,7 +582,9 @@ fn cannot_reject_from_archived() {
|
||||
/// to "restore". Tests the freeze/unfreeze API on the apply layer, since
|
||||
/// freeze/unfreeze are no longer pure stage transitions.
|
||||
#[test]
|
||||
fn freeze_sets_flag_without_changing_stage() {
|
||||
fn freeze_transitions_to_frozen_variant_with_resume_to() {
|
||||
// Story 945: freeze/unfreeze move the typed stage to `Stage::Frozen
|
||||
// { resume_to }` and back, replacing the orthogonal boolean flag.
|
||||
crate::crdt_state::init_for_test();
|
||||
crate::db::ensure_content_store();
|
||||
|
||||
@@ -597,24 +603,26 @@ fn freeze_sets_flag_without_changing_stage() {
|
||||
super::apply::transition_to_frozen(story_id).expect("freeze should succeed");
|
||||
|
||||
let item = read_typed(story_id).unwrap().unwrap();
|
||||
assert!(
|
||||
matches!(item.stage, Stage::Coding),
|
||||
"stage register stays at Coding after freeze: {:?}",
|
||||
item.stage
|
||||
);
|
||||
assert!(item.is_frozen(), "frozen flag should be set after freeze");
|
||||
match &item.stage {
|
||||
Stage::Frozen { resume_to } => assert!(
|
||||
matches!(**resume_to, Stage::Coding),
|
||||
"resume_to should preserve the previous stage; got {resume_to:?}"
|
||||
),
|
||||
other => panic!("stage should be Stage::Frozen after freeze; got {other:?}"),
|
||||
}
|
||||
assert!(item.is_frozen(), "is_frozen() should be true after freeze");
|
||||
|
||||
super::apply::transition_to_unfrozen(story_id).expect("unfreeze should succeed");
|
||||
|
||||
let item = read_typed(story_id).unwrap().unwrap();
|
||||
assert!(
|
||||
matches!(item.stage, Stage::Coding),
|
||||
"stage register still at Coding after unfreeze: {:?}",
|
||||
"stage should return to Coding after unfreeze: {:?}",
|
||||
item.stage
|
||||
);
|
||||
assert!(
|
||||
!item.is_frozen(),
|
||||
"frozen flag should be cleared after unfreeze"
|
||||
"is_frozen() should be false after unfreeze"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user