huskies: merge 868
This commit is contained in:
@@ -655,4 +655,57 @@ fn regression_freeze_unfreeze_restores_crdt_stage() {
|
||||
);
|
||||
}
|
||||
|
||||
// ── Story 868: MergeFailure regression ─────────────────────────────
|
||||
|
||||
/// Regression test (story 868): applying `PipelineEvent::MergeFailed` to a story
|
||||
/// in `Stage::Merge` transitions it to `Stage::MergeFailure` and the emitted
|
||||
/// `TransitionFired` event carries the full reason string in its payload.
|
||||
#[test]
|
||||
fn merge_failure_transition_emits_event_with_full_reason() {
|
||||
crate::crdt_state::init_for_test();
|
||||
crate::db::ensure_content_store();
|
||||
|
||||
let story_id = "99868_story_merge_failure_event";
|
||||
crate::db::write_item_with_content(
|
||||
story_id,
|
||||
"4_merge",
|
||||
"---\nname: Merge Failure Event Test\n---\n# Story\n",
|
||||
);
|
||||
|
||||
let reason = "Conflict in server/src/main.rs: both modified";
|
||||
let fired = super::apply::apply_transition(
|
||||
story_id,
|
||||
PipelineEvent::MergeFailed {
|
||||
reason: reason.to_string(),
|
||||
},
|
||||
None,
|
||||
)
|
||||
.expect("MergeFailed transition should succeed");
|
||||
|
||||
// The emitted event payload carries the full reason string.
|
||||
match &fired.event {
|
||||
PipelineEvent::MergeFailed { reason: r } => {
|
||||
assert_eq!(r, reason, "emitted event should carry the full reason");
|
||||
}
|
||||
other => panic!("expected MergeFailed event, got: {other:?}"),
|
||||
}
|
||||
|
||||
// The story transitioned to MergeFailure.
|
||||
assert!(
|
||||
matches!(fired.after, Stage::MergeFailure { .. }),
|
||||
"after-stage should be MergeFailure: {:?}",
|
||||
fired.after
|
||||
);
|
||||
|
||||
// Verify CRDT reflects the new stage.
|
||||
let item = read_typed(story_id)
|
||||
.expect("CRDT read should succeed")
|
||||
.expect("item should exist");
|
||||
assert_eq!(
|
||||
item.stage.dir_name(),
|
||||
"4_merge_failure",
|
||||
"CRDT stage should be 4_merge_failure"
|
||||
);
|
||||
}
|
||||
|
||||
// ── ProjectionError Display ─────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user