Skip to content

Commit a24cd84

Browse files
authored
Create /posts/<post_id>/autosaves endpoint (#867)
1 parent 6cbf17c commit a24cd84

File tree

5 files changed

+40
-2
lines changed

5 files changed

+40
-2
lines changed

wp_api/src/api_client.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ use crate::{
1010
application_passwords_endpoint::{
1111
ApplicationPasswordsRequestBuilder, ApplicationPasswordsRequestExecutor,
1212
},
13-
autosaves_endpoint::{AutosavesRequestBuilder, AutosavesRequestExecutor},
1413
categories_endpoint::{CategoriesRequestBuilder, CategoriesRequestExecutor},
1514
comments_endpoint::{CommentsRequestBuilder, CommentsRequestExecutor},
1615
media_endpoint::{MediaRequestBuilder, MediaRequestExecutor},
1716
plugins_endpoint::{PluginsRequestBuilder, PluginsRequestExecutor},
17+
post_autosaves_endpoint::{AutosavesRequestBuilder, AutosavesRequestExecutor},
1818
post_revisions_endpoint::{PostRevisionsRequestBuilder, PostRevisionsRequestExecutor},
1919
post_types_endpoint::{PostTypesRequestBuilder, PostTypesRequestExecutor},
2020
posts_endpoint::{PostsRequestBuilder, PostsRequestExecutor},

wp_api/src/request/endpoint.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ use strum_macros::EnumIter;
44
use url::Url;
55

66
pub mod application_passwords_endpoint;
7-
pub mod autosaves_endpoint;
87
pub mod categories_endpoint;
98
pub mod comments_endpoint;
109
pub mod media_endpoint;
1110
pub mod plugins_endpoint;
11+
pub mod post_autosaves_endpoint;
1212
pub mod post_revisions_endpoint;
1313
pub mod post_types_endpoint;
1414
pub mod posts_endpoint;

wp_api/src/request/endpoint/autosaves_endpoint.rs renamed to wp_api/src/request/endpoint/post_autosaves_endpoint.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ enum AutosavesRequest {
88
List,
99
#[contextual_get(url = "/posts/<post_id>/autosaves/<post_revision_id>", output = crate::post_revisions::SparsePostRevision, filter_by = crate::post_revisions::SparsePostRevisionField)]
1010
Retrieve,
11+
#[post(url = "/posts/<post_id>/autosaves", params = &crate::posts::PostCreateParams, output = crate::post_revisions::PostRevisionWithEditContext)]
12+
Create,
1113
}
1214

1315
impl DerivedRequest for AutosavesRequest {
@@ -66,6 +68,14 @@ mod tests {
6668
);
6769
}
6870

71+
#[rstest]
72+
fn create_autosave(endpoint: AutosavesRequestEndpoint) {
73+
let post_id = PostId(777);
74+
let expected_path = format!("/posts/{post_id}/autosaves");
75+
76+
validate_wp_v2_endpoint(endpoint.create(&post_id), &expected_path);
77+
}
78+
6979
#[fixture]
7080
fn endpoint(
7181
fixture_wp_org_site_api_url_resolver: Arc<dyn ApiUrlResolver>,
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
use wp_api::{posts::PostCreateParams, posts::PostId};
2+
use wp_api_integration_tests::prelude::*;
3+
4+
#[tokio::test]
5+
async fn create_autosave() {
6+
let title = "Test Autosave Title".to_string();
7+
let content = "Test autosave content created by integration test".to_string();
8+
let params = PostCreateParams {
9+
title: Some(title.clone()),
10+
content: Some(content.clone()),
11+
..Default::default()
12+
};
13+
14+
let autosave = api_client()
15+
.autosaves()
16+
.create(&autosaved_post_id(), &params)
17+
.await
18+
.assert_response()
19+
.data;
20+
21+
// Verify the autosave was created successfully
22+
assert_eq!(autosave.title.raw, Some(title));
23+
assert_eq!(autosave.content.raw, Some(content));
24+
}
25+
26+
fn autosaved_post_id() -> PostId {
27+
PostId(TestCredentials::instance().autosaved_post_id)
28+
}
File renamed without changes.

0 commit comments

Comments
 (0)