From 9bd5a77db4e581a261c5f58e144c89c0996ca6c4 Mon Sep 17 00:00:00 2001 From: Oguz Kocer Date: Thu, 2 May 2024 17:48:46 -0400 Subject: [PATCH] Parametrize list users integration tests --- wp_api/src/users.rs | 23 ++- wp_networking/tests/test_users_immut.rs | 254 +++++------------------- 2 files changed, 67 insertions(+), 210 deletions(-) diff --git a/wp_api/src/users.rs b/wp_api/src/users.rs index 85270562f..0268b93f5 100644 --- a/wp_api/src/users.rs +++ b/wp_api/src/users.rs @@ -447,22 +447,23 @@ impl SparseUserField { } } +#[macro_export] +macro_rules! user_list_params { + () => { + UserListParams::default() + }; + ($(($f:ident, $v:expr)), *) => {{ + let mut params = UserListParams::default(); + $(params.$f = $v;)* + params + }}; +} + #[cfg(test)] mod tests { use super::*; use rstest::*; - macro_rules! user_list_params { - () => { - UserListParams::default() - }; - ($(($f:ident, $v:expr)), *) => {{ - let mut params = UserListParams::default(); - $(params.$f = $v;)* - params - }}; - } - #[rstest] #[case(user_list_params!(), &[])] #[case(user_list_params!((page, Some(1))), &[("page", "1")])] diff --git a/wp_networking/tests/test_users_immut.rs b/wp_networking/tests/test_users_immut.rs index 84fbe530c..94d65ad45 100644 --- a/wp_networking/tests/test_users_immut.rs +++ b/wp_networking/tests/test_users_immut.rs @@ -1,8 +1,8 @@ use rstest::*; use rstest_reuse::{self, apply, template}; use wp_api::{ - SparseUser, SparseUserField, UserListParams, WPApiParamOrder, WPApiParamUsersOrderBy, - WPApiParamUsersWho, WPContext, + user_list_params, SparseUser, SparseUserField, UserListParams, WPApiParamOrder, + WPApiParamUsersOrderBy, WPApiParamUsersWho, WPContext, }; use crate::test_helpers::{ @@ -53,191 +53,61 @@ async fn filter_retrieve_current_user(#[case] fields: &[SparseUserField]) { validate_sparse_user_fields(&user_result.unwrap(), fields); } -#[tokio::test] -async fn list_users_with_edit_context() { - assert!(api() - .list_users_request(WPContext::Edit, &None) - .execute() - .await - .unwrap() - .parse(wp_api::parse_list_users_response_with_edit_context) - .is_ok()); -} - -#[tokio::test] -async fn list_users_with_embed_context() { - assert!(api() - .list_users_request(WPContext::Embed, &None) - .execute() - .await - .unwrap() - .parse(wp_api::parse_list_users_response_with_embed_context) - .is_ok()); -} - -#[tokio::test] -async fn list_users_with_view_context() { - assert!(api() - .list_users_request(WPContext::View, &None) +#[rstest] +#[case(user_list_params!())] +#[case(user_list_params!((page, Some(1))))] +#[case(user_list_params!((page, Some(2)), (per_page, Some(5))))] +#[case(user_list_params!((search, Some("foo".to_string()))))] +#[case(user_list_params!((exclude, vec![FIRST_USER_ID, SECOND_USER_ID])))] +#[case(user_list_params!((include, vec![FIRST_USER_ID])))] +#[case(user_list_params!((per_page, Some(100)), (offset, Some(20))))] +#[case(user_list_params!((order, Some(WPApiParamOrder::Asc))))] +#[case(user_list_params!((orderby, Some(WPApiParamUsersOrderBy::Id))))] +#[case(user_list_params!((order, Some(WPApiParamOrder::Desc)), (orderby, Some(WPApiParamUsersOrderBy::Email))))] +#[case(user_list_params!((slug, vec!["foo".to_string(), "bar".to_string()])))] +#[case(user_list_params!((roles, vec!["author".to_string(), "editor".to_string()])))] +#[case(user_list_params!((slug, vec!["foo".to_string(), "bar".to_string()]), (roles, vec!["author".to_string(), "editor".to_string()])))] +#[case(user_list_params!((capabilities, vec!["edit_themes".to_string(), "delete_pages".to_string()])))] +#[case::who_all_param_should_be_empty(user_list_params!((who, Some(WPApiParamUsersWho::All))))] +#[case(user_list_params!((who, Some(WPApiParamUsersWho::Authors))))] +#[case(user_list_params!((has_published_posts, Some(true))))] +#[trace] +#[tokio::test] +async fn test_user_list_params_parametrized( + #[case] params: UserListParams, + #[values(WPContext::Edit, WPContext::Embed, WPContext::View)] context: WPContext, +) { + let response = api() + .list_users_request(context, &Some(params)) .execute() .await - .unwrap() - .parse(wp_api::parse_list_users_response_with_view_context) - .is_ok()); -} - -#[tokio::test] -async fn list_users_param_page() { - let mut params = UserListParams::default(); - params.page = Some(2); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_per_page() { - let mut params = UserListParams::default(); - params.per_page = Some(2); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_search() { - let mut params = UserListParams::default(); - params.search = Some("foo".to_string()); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_exclude() { - let mut params = UserListParams::default(); - params.exclude = vec![FIRST_USER_ID]; - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_include() { - let mut params = UserListParams::default(); - params.include = vec![SECOND_USER_ID]; - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_offset() { - let mut params = UserListParams::default(); - params.offset = Some(2); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_order_asc() { - let mut params = UserListParams::default(); - params.order = Some(WPApiParamOrder::Asc); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_order_desc() { - let mut params = UserListParams::default(); - params.order = Some(WPApiParamOrder::Desc); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_orderby_id() { - let mut params = UserListParams::default(); - params.orderby = Some(WPApiParamUsersOrderBy::Id); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_orderby_include() { - let mut params = UserListParams::default(); - params.orderby = Some(WPApiParamUsersOrderBy::Include); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_orderby_name() { - let mut params = UserListParams::default(); - params.orderby = Some(WPApiParamUsersOrderBy::Name); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_orderby_registered_date() { - let mut params = UserListParams::default(); - params.orderby = Some(WPApiParamUsersOrderBy::RegisteredDate); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_orderby_slug() { - let mut params = UserListParams::default(); - params.orderby = Some(WPApiParamUsersOrderBy::Slug); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_orderby_include_slugs() { - let mut params = UserListParams::default(); - params.orderby = Some(WPApiParamUsersOrderBy::IncludeSlugs); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_orderby_email() { - let mut params = UserListParams::default(); - params.orderby = Some(WPApiParamUsersOrderBy::Email); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_orderby_url() { - let mut params = UserListParams::default(); - params.orderby = Some(WPApiParamUsersOrderBy::Url); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_slug() { - let mut params = UserListParams::default(); - params.slug = vec!["foo".to_string()]; - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_roles_edit_posts() { - let mut params = UserListParams::default(); - params.roles = vec!["edit_posts".to_string()]; - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_capabilities() { - let mut params = UserListParams::default(); - params.capabilities = vec!["foo".to_string()]; - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_who_all() { - let mut params = UserListParams::default(); - params.who = Some(WPApiParamUsersWho::All); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_who_authors() { - let mut params = UserListParams::default(); - params.who = Some(WPApiParamUsersWho::Authors); - test_user_list_params(params).await; -} - -#[tokio::test] -async fn list_users_param_has_published_posts() { - let mut params = UserListParams::default(); - params.has_published_posts = Some(true); - test_user_list_params(params).await; + .unwrap(); + match context { + WPContext::Edit => { + let parsed_response = wp_api::parse_list_users_response_with_edit_context(&response); + assert!( + parsed_response.is_ok(), + "Response was: '{:?}'", + parsed_response + ); + } + WPContext::Embed => { + let parsed_response = wp_api::parse_list_users_response_with_embed_context(&response); + assert!( + parsed_response.is_ok(), + "Response was: '{:?}'", + parsed_response + ); + } + WPContext::View => { + let parsed_response = wp_api::parse_list_users_response_with_view_context(&response); + assert!( + parsed_response.is_ok(), + "Response was: '{:?}'", + parsed_response + ); + } + }; } #[tokio::test] @@ -306,20 +176,6 @@ async fn retrieve_current_user_with_view_context() { .is_ok()); } -async fn test_user_list_params(params: UserListParams) { - let parsed_response = api() - .list_users_request(WPContext::Edit, &Some(params)) - .execute() - .await - .unwrap() - .parse(wp_api::parse_list_users_response_with_edit_context); - assert!( - parsed_response.is_ok(), - "Response was: '{:?}'", - parsed_response - ); -} - fn validate_sparse_user_fields(user: &SparseUser, fields: &[SparseUserField]) { assert_eq!(user.id.is_some(), fields.contains(&SparseUserField::Id)); assert_eq!(