Reopen canonical drafts after manual translation edits.

This commit is contained in:
2026-07-21 22:13:36 +02:00
parent 89a07c885a
commit b0e9223158
4 changed files with 180 additions and 56 deletions

View File

@@ -10766,6 +10766,59 @@ mod tests {
assert_eq!(saved.tags, vec!["rust".to_string(), "lua".to_string()]);
}
#[test]
fn manual_translation_save_reopens_and_refreshes_published_canonical_editor() {
let (db, project, tmp) = setup();
let created = post::create_post(
db.conn(),
tmp.path(),
&project.id,
"Canonical",
Some("Canonical body"),
Vec::new(),
vec!["article".to_string()],
None,
Some("en"),
None,
)
.unwrap();
post::upsert_translation(
db.conn(),
tmp.path(),
&created.id,
"de",
"Kanonisch",
None,
Some("Deutscher Inhalt"),
)
.unwrap();
let published = post::publish_post(db.conn(), tmp.path(), &created.id).unwrap();
let mut app = make_app(db, project, &tmp);
open_post_editor(&mut app, &published);
let editor = app.post_editors.get_mut(&created.id).unwrap();
editor.switch_language("de");
editor.title = "Neu formuliert".to_string();
editor.content = "Neuer Entwurf".to_string();
editor.is_dirty = true;
app.persist_post_editor_state(&created.id).unwrap();
let reopened = bds_core::db::queries::post::get_post_by_id(
app.db.as_ref().unwrap().conn(),
&created.id,
)
.unwrap();
assert_eq!(reopened.status, PostStatus::Draft);
assert_eq!(reopened.content.as_deref(), Some("Canonical body"));
let _ = app.update(Message::DomainEventsTick);
let refreshed = &app.post_editors[&created.id];
assert_eq!(refreshed.status, PostStatus::Draft);
assert_eq!(refreshed.active_language, "de");
assert_eq!(refreshed.title, "Neu formuliert");
assert_eq!(refreshed.content, "Neuer Entwurf");
}
#[test]
fn persist_post_editor_state_allows_published_posts_without_slug_conflict() {
let (db, project, tmp) = setup();