Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import org.junit.Assert
import org.junit.Test
import rs.wordpress.api.kotlin.WpApiClient
import rs.wordpress.api.kotlin.WpRequestSuccess
import uniffi.wp_api.UserListParams
import uniffi.wp_api.wpAuthenticationFromUsernameAndPassword

private const val FIRST_USER_EMAIL = "test@example.com"
Expand All @@ -21,7 +22,7 @@ class UsersEndpointAndroidTest {
@Test
fun testUserListRequest() = runTest {
val result = client.request { requestBuilder ->
requestBuilder.users().listWithEditContext(params = null)
requestBuilder.users().listWithEditContext(params = UserListParams())
}
assert(result is WpRequestSuccess)
val userList = (result as WpRequestSuccess).data
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class UsersEndpointTest {
@Test
fun testUserListRequest() = runTest {
val result = client.request { requestBuilder ->
requestBuilder.users().listWithEditContext(params = null)
requestBuilder.users().listWithEditContext(params = UserListParams())
}
assert(result is WpRequestSuccess)
val userList = (result as WpRequestSuccess).data
Expand All @@ -48,7 +48,7 @@ class UsersEndpointTest {
val result = client.request { requestBuilder ->
requestBuilder.users().filterList(
context = WpContext.EDIT,
params = null,
params = UserListParams(),
fields = listOf(SparseUserField.EMAIL, SparseUserField.NAME)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import rs.wordpress.api.kotlin.WpApiClient
import rs.wordpress.api.kotlin.WpRequestSuccess
import rs.wordpress.example.shared.domain.AuthenticatedSite
import rs.wordpress.example.shared.repository.AuthenticationRepository
import uniffi.wp_api.PluginListParams
import uniffi.wp_api.PluginWithEditContext

class PluginListViewModel(private val authRepository: AuthenticationRepository) {
Expand All @@ -21,7 +22,7 @@ class PluginListViewModel(private val authRepository: AuthenticationRepository)
apiClient?.let { apiClient ->
val pluginsResult = runBlocking {
apiClient.request { requestBuilder ->
requestBuilder.plugins().listWithEditContext(params = null)
requestBuilder.plugins().listWithEditContext(params = PluginListParams())
}
}
return when (pluginsResult) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import rs.wordpress.api.kotlin.WpApiClient
import rs.wordpress.api.kotlin.WpRequestSuccess
import rs.wordpress.example.shared.domain.AuthenticatedSite
import rs.wordpress.example.shared.repository.AuthenticationRepository
import uniffi.wp_api.UserListParams
import uniffi.wp_api.UserWithEditContext

class UserListViewModel(private val authRepository: AuthenticationRepository) {
Expand All @@ -21,7 +22,7 @@ class UserListViewModel(private val authRepository: AuthenticationRepository) {
apiClient?.let { apiClient ->
val usersResult = runBlocking {
apiClient.request { requestBuilder ->
requestBuilder.users().listWithEditContext(params = null)
requestBuilder.users().listWithEditContext(params = UserListParams())
}
}
return when (usersResult) {
Expand Down
2 changes: 2 additions & 0 deletions wp_api/src/plugins.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@ use crate::SparseField;
#[derive(Debug, Default, uniffi::Record)]
pub struct PluginListParams {
/// Limit results to those matching a string.
#[uniffi(default = None)]
pub search: Option<String>,
/// Limits results to plugins with the given status.
#[uniffi(default = None)]
pub status: Option<PluginStatus>,
}

Expand Down
14 changes: 7 additions & 7 deletions wp_api/src/request/endpoint/plugins_endpoint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,18 @@ impl PluginsEndpoint {
self.plugins_url_with_slug(plugin).into()
}

pub fn list(&self, context: WpContext, params: Option<&PluginListParams>) -> ApiEndpointUrl {
pub fn list(&self, context: WpContext, params: &PluginListParams) -> ApiEndpointUrl {
let mut url = self.plugins_base_url();
url.query_pairs_mut()
.append_pair("context", context.as_str());
if let Some(params) = params {
url.query_pairs_mut().extend_pairs(params.query_pairs());
}
url.query_pairs_mut().extend_pairs(params.query_pairs());
url.into()
}

pub fn filter_list(
&self,
context: WpContext,
params: Option<&PluginListParams>,
params: &PluginListParams,
fields: &[SparsePluginField],
) -> ApiEndpointUrl {
self.list(context, params)
Expand Down Expand Up @@ -112,6 +110,7 @@ mod tests {
}

#[rstest]
#[case(WpContext::Edit, PluginListParams::default(), "/plugins?context=edit")]
#[case(WpContext::Edit, generate!(PluginListParams, (search, Some("foo".to_string()))), "/plugins?context=edit&search=foo")]
#[case(WpContext::Embed, generate!(PluginListParams, (status, Some(PluginStatus::Active))), "/plugins?context=embed&status=active")]
#[case(WpContext::View, generate!(PluginListParams, (search, Some("foo".to_string())), (status, Some(PluginStatus::Inactive))), "/plugins?context=view&search=foo&status=inactive")]
Expand All @@ -121,10 +120,11 @@ mod tests {
#[case] params: PluginListParams,
#[case] expected_path: &str,
) {
validate_endpoint(plugins_endpoint.list(context, Some(&params)), expected_path);
validate_endpoint(plugins_endpoint.list(context, &params), expected_path);
}

#[rstest]
#[case(WpContext::Edit, PluginListParams::default(), &[], "/plugins?context=edit&_fields=")]
#[case(
WpContext::Edit,
generate!(PluginListParams, (search, Some("foo".to_string()))),
Expand Down Expand Up @@ -157,7 +157,7 @@ mod tests {
#[case] expected_path: &str,
) {
validate_endpoint(
plugins_endpoint.filter_list(context, Some(&params), fields),
plugins_endpoint.filter_list(context, &params, fields),
expected_path,
);
}
Expand Down
30 changes: 22 additions & 8 deletions wp_api/src/request/endpoint/users_endpoint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,18 @@ impl UsersEndpoint {
url.into()
}

pub fn list(&self, context: WpContext, params: Option<&UserListParams>) -> ApiEndpointUrl {
pub fn list(&self, context: WpContext, params: &UserListParams) -> ApiEndpointUrl {
let mut url = self.api_base_url.by_appending("users");
url.query_pairs_mut()
.append_pair("context", context.as_str());
if let Some(params) = params {
url.query_pairs_mut().extend_pairs(params.query_pairs());
}
url.query_pairs_mut().extend_pairs(params.query_pairs());
url.into()
}

pub fn filter_list(
&self,
context: WpContext,
params: Option<&UserListParams>,
params: &UserListParams,
fields: &[SparseUserField],
) -> ApiEndpointUrl {
self.list(context, params)
Expand Down Expand Up @@ -144,7 +142,15 @@ mod tests {
#[rstest]
fn list_users(users_endpoint: UsersEndpoint) {
validate_endpoint(
users_endpoint.list(WpContext::Edit, None),
users_endpoint.list(WpContext::Edit, &UserListParams::default()),
"/users?context=edit",
);
}

#[rstest]
fn list_users_default_params_empty_fields(users_endpoint: UsersEndpoint) {
validate_endpoint(
users_endpoint.list(WpContext::Edit, &UserListParams::default()),
"/users?context=edit",
);
}
Expand All @@ -167,11 +173,19 @@ mod tests {
has_published_posts: Some(WpApiParamUsersHasPublishedPosts::True),
};
validate_endpoint(
users_endpoint.list(WpContext::Edit, Some(&params)),
users_endpoint.list(WpContext::Edit, &params),
"/users?context=edit&page=2&per_page=60&search=foo&slug=bar%2Cbaz&has_published_posts=true",
);
}

#[rstest]
fn filter_list_users_default_params_empty_fields(users_endpoint: UsersEndpoint) {
validate_endpoint(
users_endpoint.filter_list(WpContext::Edit, &UserListParams::default(), &[]),
"/users?context=edit&_fields=",
);
}

#[rstest]
fn filter_list_users_with_params(users_endpoint: UsersEndpoint) {
let params = UserListParams {
Expand All @@ -193,7 +207,7 @@ mod tests {
])),
};
validate_endpoint(
users_endpoint.filter_list(WpContext::Edit, Some(&params), &[SparseUserField::Name, SparseUserField::Email]),
users_endpoint.filter_list(WpContext::Edit, &params, &[SparseUserField::Name, SparseUserField::Email]),
"/users?context=edit&page=2&per_page=60&search=foo&slug=bar%2Cbaz&has_published_posts=post%2Cpage&_fields=name%2Cemail",
);
}
Expand Down
16 changes: 8 additions & 8 deletions wp_api/src/request/plugins_request_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,39 +30,39 @@ impl PluginsRequestBuilder {
impl PluginsRequestBuilder {
pub async fn list_with_edit_context(
&self,
params: &Option<PluginListParams>, // UniFFI doesn't support Option<&T>
params: &PluginListParams,
) -> Result<Vec<PluginWithEditContext>, WpApiError> {
self.request_builder
.get(self.endpoint.list(WpContext::Edit, params.as_ref()))
.get(self.endpoint.list(WpContext::Edit, params))
.await
}

pub async fn list_with_embed_context(
&self,
params: &Option<PluginListParams>, // UniFFI doesn't support Option<&T>
params: &PluginListParams,
) -> Result<Vec<PluginWithEmbedContext>, WpApiError> {
self.request_builder
.get(self.endpoint.list(WpContext::Embed, params.as_ref()))
.get(self.endpoint.list(WpContext::Embed, params))
.await
}

pub async fn list_with_view_context(
&self,
params: &Option<PluginListParams>, // UniFFI doesn't support Option<&T>
params: &PluginListParams,
) -> Result<Vec<PluginWithViewContext>, WpApiError> {
self.request_builder
.get(self.endpoint.list(WpContext::View, params.as_ref()))
.get(self.endpoint.list(WpContext::View, params))
.await
}

pub async fn filter_list(
&self,
context: WpContext,
params: &Option<PluginListParams>, // UniFFI doesn't support Option<&T>
params: &PluginListParams,
fields: &[SparsePluginField],
) -> Result<Vec<SparsePlugin>, WpApiError> {
self.request_builder
.get(self.endpoint.filter_list(context, params.as_ref(), fields))
.get(self.endpoint.filter_list(context, params, fields))
.await
}

Expand Down
16 changes: 8 additions & 8 deletions wp_api/src/request/users_request_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,39 +30,39 @@ impl UsersRequestBuilder {
impl UsersRequestBuilder {
pub async fn list_with_edit_context(
&self,
params: &Option<UserListParams>, // UniFFI doesn't support Option<&T>
params: &UserListParams,
) -> Result<Vec<UserWithEditContext>, WpApiError> {
self.request_builder
.get(self.endpoint.list(WpContext::Edit, params.as_ref()))
.get(self.endpoint.list(WpContext::Edit, params))
.await
}

pub async fn list_with_embed_context(
&self,
params: &Option<UserListParams>, // UniFFI doesn't support Option<&T>
params: &UserListParams,
) -> Result<Vec<UserWithEmbedContext>, WpApiError> {
self.request_builder
.get(self.endpoint.list(WpContext::Embed, params.as_ref()))
.get(self.endpoint.list(WpContext::Embed, params))
.await
}

pub async fn list_with_view_context(
&self,
params: &Option<UserListParams>, // UniFFI doesn't support Option<&T>
params: &UserListParams,
) -> Result<Vec<UserWithViewContext>, WpApiError> {
self.request_builder
.get(self.endpoint.list(WpContext::View, params.as_ref()))
.get(self.endpoint.list(WpContext::View, params))
.await
}

pub async fn filter_list(
&self,
context: WpContext,
params: &Option<UserListParams>, // UniFFI doesn't support Option<&T>
params: &UserListParams,
fields: &[SparseUserField],
) -> Result<Vec<SparseUser>, WpApiError> {
self.request_builder
.get(self.endpoint.filter_list(context, params.as_ref(), fields))
.get(self.endpoint.filter_list(context, params, fields))
.await
}

Expand Down
4 changes: 2 additions & 2 deletions wp_api/tests/test_plugins_err.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use wp_api::plugins::{PluginCreateParams, PluginStatus, PluginUpdateParams};
use wp_api::plugins::{PluginCreateParams, PluginListParams, PluginStatus, PluginUpdateParams};
use wp_api::WpRestErrorCode;

use crate::integration_test_common::{
Expand Down Expand Up @@ -33,7 +33,7 @@ async fn delete_plugin_err_cannot_delete_active_plugin() {
async fn list_plugins_err_cannot_view_plugins() {
request_builder_as_subscriber()
.plugins()
.list_with_edit_context(&None)
.list_with_edit_context(&PluginListParams::default())
.await
.assert_wp_error(WpRestErrorCode::CannotViewPlugins);
}
Expand Down
Loading