feat: translation flows, revision conflicts, delete scopes, article moves and a target site for new articles

This commit is contained in:
Florian Sylvain committed 2026-11-03 00:12:29 +01:00
1 parent 339e646eb8
commit 45fbbc33b1
93 files changed
+7630 -294

No files matched your search

+4 -4
View File
@@ -27,7 +27,7 @@ Feature: Editor screen — load, edit and save an article's body
And Save is enabled only when useArticleDraft's state is "dirty", the request is not already
in flight, and the app is not offline, whatever the body's length; it is disabled in every
other case
And Save (a click, or Ctrl/⌘ S) sends PATCH /v1/article/{id} with JSON {"body": "..."},
And Save (a click, or Ctrl/⌘ S) sends PATCH /v1/article/{id} with JSON {"body": "...", "if_revision": <the loaded revision>},
the same contract features/edit_article_body.feature already gives the API: 200 with the
updated article.Article (any body length, including empty), 404 for an id absent from
the repository, 401 with no valid session
@@ -118,14 +118,14 @@ Feature: Editor screen — load, edit and save an article's body
Scenario: Saving — Save sends the PATCH and disables itself while in flight
Given the user is on /article/12/edit with unsaved changes to the body
When the user activates Save
Then PATCH /v1/article/12 is sent with JSON {"body": "<the edited body>"}
Then PATCH /v1/article/12 is sent with JSON {"body": "<the edited body>", "if_revision": <the loaded revision>}
And SaveStatus reads "Saving…"
And the Save button is disabled
Scenario: Ctrl/⌘ S saves the same way as clicking Save
Given the user is on /article/12/edit with unsaved changes to the body
When the user presses Ctrl+S (or ⌘+S)
Then PATCH /v1/article/12 is sent with JSON {"body": "<the edited body>"}
Then PATCH /v1/article/12 is sent with JSON {"body": "<the edited body>", "if_revision": <the loaded revision>}
And SaveStatus reads "Saving…"
Scenario: A successful save returns to the Saved state with the new time
@@ -157,7 +157,7 @@ Feature: Editor screen — load, edit and save an article's body
Given the user is on /article/12/edit in the Save failed state, with unsaved body "Revised
opening paragraph." and PATCH /v1/article/12 having failed with a 500
When the user activates "Try saving again"
Then PATCH /v1/article/12 is sent again with JSON {"body": "Revised opening paragraph."}
Then PATCH /v1/article/12 is sent again with JSON {"body": "Revised opening paragraph.", "if_revision": <the loaded revision>}
When it resolves 200 with the updated article
Then SaveStatus reads "Saved at {current time}"