diff --git a/src/cmd/issue/attachment/delete.rs b/src/cmd/issue/attachment/delete.rs index 4d6297f..9bdf135 100644 --- a/src/cmd/issue/attachment/delete.rs +++ b/src/cmd/issue/attachment/delete.rs @@ -40,27 +40,9 @@ pub fn delete_with(args: &IssueAttachmentDeleteArgs, api: &dyn BacklogApi) -> Re #[cfg(test)] mod tests { use super::*; - use crate::api::issue::{IssueAttachment, IssueUser}; + use crate::api::issue::IssueAttachment; + use crate::cmd::issue::attachment::sample_attachment; use anyhow::anyhow; - use std::collections::BTreeMap; - - fn sample_attachment() -> IssueAttachment { - IssueAttachment { - id: 1, - name: "file.txt".to_string(), - size: 1024, - created_user: IssueUser { - id: 1, - user_id: Some("john".to_string()), - name: "John Doe".to_string(), - role_type: 1, - lang: None, - mail_address: None, - extra: BTreeMap::new(), - }, - created: "2024-01-01T00:00:00Z".to_string(), - } - } struct MockApi { attachment: Option, diff --git a/src/cmd/issue/attachment/list.rs b/src/cmd/issue/attachment/list.rs index a9f659e..4368e0f 100644 --- a/src/cmd/issue/attachment/list.rs +++ b/src/cmd/issue/attachment/list.rs @@ -43,31 +43,9 @@ pub fn list_with(args: &IssueAttachmentListArgs, api: &dyn BacklogApi) -> Result #[cfg(test)] mod tests { use super::*; - use crate::api::issue::{IssueAttachment, IssueUser}; + use crate::api::issue::IssueAttachment; + use crate::cmd::issue::attachment::sample_attachment; use anyhow::anyhow; - use std::collections::BTreeMap; - - fn sample_user() -> IssueUser { - IssueUser { - id: 1, - user_id: Some("john".to_string()), - name: "John Doe".to_string(), - role_type: 1, - lang: None, - mail_address: None, - extra: BTreeMap::new(), - } - } - - fn sample_attachment() -> IssueAttachment { - IssueAttachment { - id: 1, - name: "file.txt".to_string(), - size: 1024, - created_user: sample_user(), - created: "2024-01-01T00:00:00Z".to_string(), - } - } struct MockApi { attachments: Option>, diff --git a/src/cmd/issue/attachment/mod.rs b/src/cmd/issue/attachment/mod.rs index 88624b2..a862bba 100644 --- a/src/cmd/issue/attachment/mod.rs +++ b/src/cmd/issue/attachment/mod.rs @@ -5,3 +5,24 @@ mod list; pub use delete::{IssueAttachmentDeleteArgs, delete}; pub use get::{IssueAttachmentGetArgs, get}; pub use list::{IssueAttachmentListArgs, list}; + +#[cfg(test)] +pub(crate) fn sample_attachment() -> crate::api::issue::IssueAttachment { + use std::collections::BTreeMap; + let user = crate::api::issue::IssueUser { + id: 1, + user_id: Some("john".to_string()), + name: "John Doe".to_string(), + role_type: 1, + lang: None, + mail_address: None, + extra: BTreeMap::new(), + }; + crate::api::issue::IssueAttachment { + id: 1, + name: "file.txt".to_string(), + size: 1024, + created_user: user, + created: "2024-01-01T00:00:00Z".to_string(), + } +} diff --git a/src/cmd/project/admin.rs b/src/cmd/project/admin.rs index 48465e7..da70980 100644 --- a/src/cmd/project/admin.rs +++ b/src/cmd/project/admin.rs @@ -99,8 +99,8 @@ pub fn delete_with(args: &ProjectAdminDeleteArgs, api: &dyn BacklogApi) -> Resul mod tests { use super::*; use crate::api::project::ProjectUser; + use crate::cmd::project::sample_project_user; use anyhow::anyhow; - use std::collections::BTreeMap; struct MockApi { users: Option>, @@ -129,23 +129,10 @@ mod tests { } } - fn sample_user() -> ProjectUser { - ProjectUser { - id: 1, - user_id: Some("john".to_string()), - name: "John Doe".to_string(), - role_type: 1, - lang: Some("ja".to_string()), - mail_address: Some("john@example.com".to_string()), - last_login_time: None, - extra: BTreeMap::new(), - } - } - #[test] fn list_with_text_output_succeeds() { let api = MockApi { - users: Some(vec![sample_user()]), + users: Some(vec![sample_project_user()]), user: None, }; assert!(list_with(&ProjectAdminListArgs::new("TEST".to_string(), false), &api).is_ok()); @@ -154,7 +141,7 @@ mod tests { #[test] fn list_with_json_output_succeeds() { let api = MockApi { - users: Some(vec![sample_user()]), + users: Some(vec![sample_project_user()]), user: None, }; assert!(list_with(&ProjectAdminListArgs::new("TEST".to_string(), true), &api).is_ok()); @@ -175,7 +162,7 @@ mod tests { fn add_with_text_output_succeeds() { let api = MockApi { users: None, - user: Some(sample_user()), + user: Some(sample_project_user()), }; assert!( add_with( @@ -190,7 +177,7 @@ mod tests { fn add_with_json_output_succeeds() { let api = MockApi { users: None, - user: Some(sample_user()), + user: Some(sample_project_user()), }; assert!(add_with(&ProjectAdminAddArgs::new("TEST".to_string(), 1, true), &api).is_ok()); } @@ -213,7 +200,7 @@ mod tests { fn delete_with_text_output_succeeds() { let api = MockApi { users: None, - user: Some(sample_user()), + user: Some(sample_project_user()), }; assert!( delete_with( @@ -228,7 +215,7 @@ mod tests { fn delete_with_json_output_succeeds() { let api = MockApi { users: None, - user: Some(sample_user()), + user: Some(sample_project_user()), }; assert!( delete_with( diff --git a/src/cmd/project/create.rs b/src/cmd/project/create.rs index 8ac29cf..1d57221 100644 --- a/src/cmd/project/create.rs +++ b/src/cmd/project/create.rs @@ -74,8 +74,8 @@ fn format_project(p: &Project) -> String { #[cfg(test)] mod tests { use super::*; + use crate::cmd::project::sample_project; use anyhow::anyhow; - use std::collections::BTreeMap; struct MockApi { project: Option, @@ -87,20 +87,6 @@ mod tests { } } - fn sample_project() -> Project { - Project { - id: 1, - project_key: "TEST".to_string(), - name: "Test Project".to_string(), - chart_enabled: false, - subtasking_enabled: false, - project_leader_can_edit_project_leader: false, - text_formatting_rule: "markdown".to_string(), - archived: false, - extra: BTreeMap::new(), - } - } - fn args(json: bool) -> ProjectCreateArgs { ProjectCreateArgs::new( "Test Project".to_string(), diff --git a/src/cmd/project/delete.rs b/src/cmd/project/delete.rs index 65ed7e1..78af2be 100644 --- a/src/cmd/project/delete.rs +++ b/src/cmd/project/delete.rs @@ -36,8 +36,8 @@ pub fn delete_with(args: &ProjectDeleteArgs, api: &dyn BacklogApi) -> Result<()> mod tests { use super::*; use crate::api::project::Project; + use crate::cmd::project::sample_project; use anyhow::anyhow; - use std::collections::BTreeMap; struct MockApi { project: Option, @@ -49,20 +49,6 @@ mod tests { } } - fn sample_project() -> Project { - Project { - id: 1, - project_key: "TEST".to_string(), - name: "Test Project".to_string(), - chart_enabled: false, - subtasking_enabled: false, - project_leader_can_edit_project_leader: false, - text_formatting_rule: "markdown".to_string(), - archived: false, - extra: BTreeMap::new(), - } - } - fn args(json: bool) -> ProjectDeleteArgs { ProjectDeleteArgs::new("TEST".to_string(), json) } diff --git a/src/cmd/project/list.rs b/src/cmd/project/list.rs index 7d26d6e..0cd696e 100644 --- a/src/cmd/project/list.rs +++ b/src/cmd/project/list.rs @@ -43,8 +43,8 @@ pub fn list_with(args: &ProjectListArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use crate::api::project::Project; + use crate::cmd::project::sample_project; use anyhow::anyhow; - use std::collections::BTreeMap; fn format_project_row(p: &Project) -> String { let archived = if p.archived { " [archived]" } else { "" }; @@ -61,20 +61,6 @@ mod tests { } } - fn sample_project() -> Project { - Project { - id: 1, - project_key: "TEST".to_string(), - name: "Test Project".to_string(), - chart_enabled: false, - subtasking_enabled: false, - project_leader_can_edit_project_leader: false, - text_formatting_rule: "markdown".to_string(), - archived: false, - extra: BTreeMap::new(), - } - } - fn sample_archived_project() -> Project { Project { archived: true, diff --git a/src/cmd/project/mod.rs b/src/cmd/project/mod.rs index 9084c36..b9351ca 100644 --- a/src/cmd/project/mod.rs +++ b/src/cmd/project/mod.rs @@ -29,3 +29,34 @@ pub(crate) fn format_project_user_row(u: &crate::api::project::ProjectUser) -> S _ => format!("[{}] {}", u.id, u.name), } } + +#[cfg(test)] +pub(crate) fn sample_project() -> crate::api::project::Project { + use std::collections::BTreeMap; + crate::api::project::Project { + id: 1, + project_key: "TEST".to_string(), + name: "Test Project".to_string(), + chart_enabled: false, + subtasking_enabled: false, + project_leader_can_edit_project_leader: false, + text_formatting_rule: "markdown".to_string(), + archived: false, + extra: BTreeMap::new(), + } +} + +#[cfg(test)] +pub(crate) fn sample_project_user() -> crate::api::project::ProjectUser { + use std::collections::BTreeMap; + crate::api::project::ProjectUser { + id: 1, + user_id: Some("john".to_string()), + name: "John Doe".to_string(), + role_type: 1, + lang: Some("ja".to_string()), + mail_address: Some("john@example.com".to_string()), + last_login_time: None, + extra: BTreeMap::new(), + } +} diff --git a/src/cmd/project/show.rs b/src/cmd/project/show.rs index bd98815..e651b9c 100644 --- a/src/cmd/project/show.rs +++ b/src/cmd/project/show.rs @@ -42,8 +42,8 @@ fn format_project_detail(p: &Project) -> String { #[cfg(test)] mod tests { use super::*; + use crate::cmd::project::sample_project; use anyhow::anyhow; - use std::collections::BTreeMap; struct MockApi { project: Option, @@ -55,20 +55,6 @@ mod tests { } } - fn sample_project() -> Project { - Project { - id: 1, - project_key: "TEST".to_string(), - name: "Test Project".to_string(), - chart_enabled: false, - subtasking_enabled: false, - project_leader_can_edit_project_leader: false, - text_formatting_rule: "markdown".to_string(), - archived: false, - extra: BTreeMap::new(), - } - } - #[test] fn show_with_text_output_succeeds() { let api = MockApi { diff --git a/src/cmd/project/update.rs b/src/cmd/project/update.rs index f887c97..ab683e2 100644 --- a/src/cmd/project/update.rs +++ b/src/cmd/project/update.rs @@ -100,8 +100,8 @@ pub fn update_with(args: &ProjectUpdateArgs, api: &dyn BacklogApi) -> Result<()> mod tests { use super::*; use crate::api::project::Project; + use crate::cmd::project::sample_project; use anyhow::anyhow; - use std::collections::BTreeMap; struct MockApi { project: Option, @@ -117,20 +117,6 @@ mod tests { } } - fn sample_project() -> Project { - Project { - id: 1, - project_key: "TEST".to_string(), - name: "Test Project".to_string(), - chart_enabled: false, - subtasking_enabled: false, - project_leader_can_edit_project_leader: false, - text_formatting_rule: "markdown".to_string(), - archived: false, - extra: BTreeMap::new(), - } - } - fn args(json: bool) -> ProjectUpdateArgs { ProjectUpdateArgs::try_new( "TEST".to_string(), diff --git a/src/cmd/project/user.rs b/src/cmd/project/user.rs index aac1937..2f04b4d 100644 --- a/src/cmd/project/user.rs +++ b/src/cmd/project/user.rs @@ -99,8 +99,8 @@ pub fn delete_with(args: &ProjectUserDeleteArgs, api: &dyn BacklogApi) -> Result mod tests { use super::*; use crate::api::project::ProjectUser; + use crate::cmd::project::sample_project_user; use anyhow::anyhow; - use std::collections::BTreeMap; struct MockApi { users: Option>, @@ -121,29 +121,16 @@ mod tests { } } - fn sample_user() -> ProjectUser { - ProjectUser { - id: 1, - user_id: Some("john".to_string()), - name: "John Doe".to_string(), - role_type: 1, - lang: Some("ja".to_string()), - mail_address: Some("john@example.com".to_string()), - last_login_time: None, - extra: BTreeMap::new(), - } - } - #[test] fn format_project_user_row_with_user_id() { - let text = format_project_user_row(&sample_user()); + let text = format_project_user_row(&sample_project_user()); assert!(text.contains("[john]")); assert!(text.contains("John Doe")); } #[test] fn format_project_user_row_without_user_id() { - let mut u = sample_user(); + let mut u = sample_project_user(); u.user_id = None; let text = format_project_user_row(&u); assert!(text.contains("[1]")); @@ -153,7 +140,7 @@ mod tests { #[test] fn list_with_text_output_succeeds() { let api = MockApi { - users: Some(vec![sample_user()]), + users: Some(vec![sample_project_user()]), user: None, }; assert!(list_with(&ProjectUserListArgs::new("TEST".to_string(), false), &api).is_ok()); @@ -162,7 +149,7 @@ mod tests { #[test] fn list_with_json_output_succeeds() { let api = MockApi { - users: Some(vec![sample_user()]), + users: Some(vec![sample_project_user()]), user: None, }; assert!(list_with(&ProjectUserListArgs::new("TEST".to_string(), true), &api).is_ok()); @@ -183,7 +170,7 @@ mod tests { fn add_with_text_output_succeeds() { let api = MockApi { users: None, - user: Some(sample_user()), + user: Some(sample_project_user()), }; assert!(add_with(&ProjectUserAddArgs::new("TEST".to_string(), 1, false), &api).is_ok()); } @@ -192,7 +179,7 @@ mod tests { fn add_with_json_output_succeeds() { let api = MockApi { users: None, - user: Some(sample_user()), + user: Some(sample_project_user()), }; assert!(add_with(&ProjectUserAddArgs::new("TEST".to_string(), 1, true), &api).is_ok()); } @@ -212,7 +199,7 @@ mod tests { fn delete_with_text_output_succeeds() { let api = MockApi { users: None, - user: Some(sample_user()), + user: Some(sample_project_user()), }; assert!( delete_with( @@ -227,7 +214,7 @@ mod tests { fn delete_with_json_output_succeeds() { let api = MockApi { users: None, - user: Some(sample_user()), + user: Some(sample_project_user()), }; assert!( delete_with( diff --git a/src/cmd/space/mod.rs b/src/cmd/space/mod.rs index fb9821a..2b2636b 100644 --- a/src/cmd/space/mod.rs +++ b/src/cmd/space/mod.rs @@ -6,6 +6,14 @@ mod show; mod update_notification; pub use activities::{SpaceActivitiesArgs, activities}; + +#[cfg(test)] +pub(crate) fn sample_notification() -> crate::api::space_notification::SpaceNotification { + crate::api::space_notification::SpaceNotification { + content: "Scheduled maintenance on 2024-07-01.".to_string(), + updated: Some("2024-06-18T07:55:37Z".to_string()), + } +} pub use disk_usage::{SpaceDiskUsageArgs, disk_usage}; pub use licence::{SpaceLicenceArgs, licence}; pub use notification::{SpaceNotificationArgs, notification}; diff --git a/src/cmd/space/notification.rs b/src/cmd/space/notification.rs index c23a12f..ff04368 100644 --- a/src/cmd/space/notification.rs +++ b/src/cmd/space/notification.rs @@ -44,6 +44,7 @@ fn format_notification_text(n: &SpaceNotification) -> String { #[cfg(test)] mod tests { use super::*; + use crate::cmd::space::sample_notification; use anyhow::anyhow; struct MockApi { @@ -58,13 +59,6 @@ mod tests { } } - fn sample_notification() -> SpaceNotification { - SpaceNotification { - content: "Scheduled maintenance on 2024-07-01.".to_string(), - updated: Some("2024-06-18T07:55:37Z".to_string()), - } - } - #[test] fn notification_with_text_output_succeeds() { let api = MockApi { diff --git a/src/cmd/space/update_notification.rs b/src/cmd/space/update_notification.rs index 3f9c317..77505f9 100644 --- a/src/cmd/space/update_notification.rs +++ b/src/cmd/space/update_notification.rs @@ -48,6 +48,7 @@ fn format_notification_text(n: &SpaceNotification) -> String { #[cfg(test)] mod tests { use super::*; + use crate::cmd::space::sample_notification; use anyhow::anyhow; use std::cell::RefCell; @@ -75,13 +76,6 @@ mod tests { } } - fn sample_notification() -> SpaceNotification { - SpaceNotification { - content: "Hello world.".to_string(), - updated: Some("2024-07-01T00:00:00Z".to_string()), - } - } - #[test] fn update_notification_with_text_output_succeeds() { let api = MockApi::new(Some(sample_notification())); @@ -128,7 +122,7 @@ mod tests { #[test] fn format_notification_text_contains_fields() { let text = format_notification_text(&sample_notification()); - assert!(text.contains("2024-07-01T00:00:00Z")); - assert!(text.contains("Hello world.")); + assert!(text.contains("2024-06-18T07:55:37Z")); + assert!(text.contains("Scheduled maintenance on 2024-07-01.")); } } diff --git a/src/cmd/team/add.rs b/src/cmd/team/add.rs index a171291..84212ad 100644 --- a/src/cmd/team/add.rs +++ b/src/cmd/team/add.rs @@ -46,9 +46,9 @@ pub fn add_with(args: &TeamAddArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use anyhow::anyhow; - use std::collections::BTreeMap; - use crate::api::team::{Team, TeamMember}; + use crate::api::team::Team; + use crate::cmd::team::sample_team; struct MockApi { team: Option, @@ -60,31 +60,6 @@ mod tests { } } - fn sample_member() -> TeamMember { - TeamMember { - id: 2, - user_id: Some("dev".to_string()), - name: "Developer".to_string(), - role_type: 2, - lang: None, - mail_address: None, - last_login_time: None, - extra: BTreeMap::new(), - } - } - - fn sample_team() -> Team { - Team { - id: 1, - name: "dev-team".to_string(), - members: vec![sample_member()], - display_order: None, - created: "2024-01-01T00:00:00Z".to_string(), - updated: "2024-01-01T00:00:00Z".to_string(), - extra: BTreeMap::new(), - } - } - fn args(json: bool) -> TeamAddArgs { TeamAddArgs::new("dev-team".to_string(), vec![2], json) } diff --git a/src/cmd/team/delete.rs b/src/cmd/team/delete.rs index 010c53d..061562e 100644 --- a/src/cmd/team/delete.rs +++ b/src/cmd/team/delete.rs @@ -37,9 +37,9 @@ pub fn delete_with(args: &TeamDeleteArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use anyhow::anyhow; - use std::collections::BTreeMap; - use crate::api::team::{Team, TeamMember}; + use crate::api::team::Team; + use crate::cmd::team::sample_team; struct MockApi { team: Option, @@ -51,31 +51,6 @@ mod tests { } } - fn sample_member() -> TeamMember { - TeamMember { - id: 2, - user_id: Some("dev".to_string()), - name: "Developer".to_string(), - role_type: 2, - lang: None, - mail_address: None, - last_login_time: None, - extra: BTreeMap::new(), - } - } - - fn sample_team() -> Team { - Team { - id: 1, - name: "dev-team".to_string(), - members: vec![sample_member()], - display_order: None, - created: "2024-01-01T00:00:00Z".to_string(), - updated: "2024-01-01T00:00:00Z".to_string(), - extra: BTreeMap::new(), - } - } - fn args(json: bool) -> TeamDeleteArgs { TeamDeleteArgs::new(1, json) } diff --git a/src/cmd/team/list.rs b/src/cmd/team/list.rs index 938049f..ad76439 100644 --- a/src/cmd/team/list.rs +++ b/src/cmd/team/list.rs @@ -61,9 +61,9 @@ pub fn list_with(args: &TeamListArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use anyhow::anyhow; - use std::collections::BTreeMap; - use crate::api::team::{Team, TeamMember}; + use crate::api::team::Team; + use crate::cmd::team::sample_team; struct MockApi { teams: Option>, @@ -75,31 +75,6 @@ mod tests { } } - fn sample_member() -> TeamMember { - TeamMember { - id: 2, - user_id: Some("dev".to_string()), - name: "Developer".to_string(), - role_type: 2, - lang: None, - mail_address: Some("dev@example.com".to_string()), - last_login_time: None, - extra: BTreeMap::new(), - } - } - - fn sample_team() -> Team { - Team { - id: 1, - name: "dev-team".to_string(), - members: vec![sample_member()], - display_order: None, - created: "2024-01-01T00:00:00Z".to_string(), - updated: "2024-06-01T00:00:00Z".to_string(), - extra: BTreeMap::new(), - } - } - #[test] fn format_team_row_shows_id_name_member_count() { let text = format_team_row(&sample_team()); diff --git a/src/cmd/team/mod.rs b/src/cmd/team/mod.rs index 14865bb..1870ed0 100644 --- a/src/cmd/team/mod.rs +++ b/src/cmd/team/mod.rs @@ -15,3 +15,32 @@ pub use update::{TeamUpdateArgs, update}; pub(crate) fn format_team_row(t: &crate::api::team::Team) -> String { format!("[{}] {} ({} members)", t.id, t.name, t.members.len()) } + +#[cfg(test)] +pub(crate) fn sample_member() -> crate::api::team::TeamMember { + use std::collections::BTreeMap; + crate::api::team::TeamMember { + id: 2, + user_id: Some("dev".to_string()), + name: "Developer".to_string(), + role_type: 2, + lang: None, + mail_address: None, + last_login_time: None, + extra: BTreeMap::new(), + } +} + +#[cfg(test)] +pub(crate) fn sample_team() -> crate::api::team::Team { + use std::collections::BTreeMap; + crate::api::team::Team { + id: 1, + name: "dev-team".to_string(), + members: vec![sample_member()], + display_order: None, + created: "2024-01-01T00:00:00Z".to_string(), + updated: "2024-01-01T00:00:00Z".to_string(), + extra: BTreeMap::new(), + } +} diff --git a/src/cmd/team/show.rs b/src/cmd/team/show.rs index 81d09b3..3e4295c 100644 --- a/src/cmd/team/show.rs +++ b/src/cmd/team/show.rs @@ -59,9 +59,9 @@ fn format_team_text(t: &Team) -> String { mod tests { use super::*; use anyhow::anyhow; - use std::collections::BTreeMap; - use crate::api::team::{Team, TeamMember}; + use crate::api::team::Team; + use crate::cmd::team::sample_team; struct MockApi { team: Option, @@ -73,31 +73,6 @@ mod tests { } } - fn sample_member() -> TeamMember { - TeamMember { - id: 2, - user_id: Some("dev".to_string()), - name: "Developer".to_string(), - role_type: 2, - lang: None, - mail_address: None, - last_login_time: None, - extra: BTreeMap::new(), - } - } - - fn sample_team() -> Team { - Team { - id: 1, - name: "dev-team".to_string(), - members: vec![sample_member()], - display_order: None, - created: "2024-01-01T00:00:00Z".to_string(), - updated: "2024-06-01T00:00:00Z".to_string(), - extra: BTreeMap::new(), - } - } - #[test] fn show_with_text_output_succeeds() { let api = MockApi { diff --git a/src/cmd/team/update.rs b/src/cmd/team/update.rs index 9516350..57fa1b4 100644 --- a/src/cmd/team/update.rs +++ b/src/cmd/team/update.rs @@ -63,9 +63,9 @@ pub fn update_with(args: &TeamUpdateArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use anyhow::anyhow; - use std::collections::BTreeMap; - use crate::api::team::{Team, TeamMember}; + use crate::api::team::Team; + use crate::cmd::team::sample_team; struct MockApi { team: Option, @@ -77,31 +77,6 @@ mod tests { } } - fn sample_member() -> TeamMember { - TeamMember { - id: 2, - user_id: Some("dev".to_string()), - name: "Developer".to_string(), - role_type: 2, - lang: None, - mail_address: None, - last_login_time: None, - extra: BTreeMap::new(), - } - } - - fn sample_team() -> Team { - Team { - id: 1, - name: "dev-team".to_string(), - members: vec![sample_member()], - display_order: None, - created: "2024-01-01T00:00:00Z".to_string(), - updated: "2024-01-01T00:00:00Z".to_string(), - extra: BTreeMap::new(), - } - } - fn args(json: bool) -> TeamUpdateArgs { TeamUpdateArgs::try_new(1, Some("dev-team".to_string()), None, json).unwrap() } diff --git a/src/cmd/user/add.rs b/src/cmd/user/add.rs index ef58668..1ddd4b7 100644 --- a/src/cmd/user/add.rs +++ b/src/cmd/user/add.rs @@ -66,8 +66,8 @@ pub fn add_with(args: &UserAddArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use crate::api::user::User; + use crate::cmd::user::sample_user; use anyhow::anyhow; - use std::collections::BTreeMap; struct MockApi { user: Option, @@ -79,19 +79,6 @@ mod tests { } } - fn sample_user() -> User { - User { - id: 1, - user_id: Some("john".to_string()), - name: "John Doe".to_string(), - mail_address: Some("john@example.com".to_string()), - role_type: 2, - lang: None, - last_login_time: None, - extra: BTreeMap::new(), - } - } - fn args(json: bool) -> UserAddArgs { UserAddArgs::new( "john".to_string(), diff --git a/src/cmd/user/delete.rs b/src/cmd/user/delete.rs index bca4243..9a501f4 100644 --- a/src/cmd/user/delete.rs +++ b/src/cmd/user/delete.rs @@ -40,8 +40,8 @@ pub fn delete_with(args: &UserDeleteArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use crate::api::user::User; + use crate::cmd::user::sample_user; use anyhow::anyhow; - use std::collections::BTreeMap; struct MockApi { user: Option, @@ -53,19 +53,6 @@ mod tests { } } - fn sample_user() -> User { - User { - id: 1, - user_id: Some("john".to_string()), - name: "John Doe".to_string(), - mail_address: Some("john@example.com".to_string()), - role_type: 2, - lang: None, - last_login_time: None, - extra: BTreeMap::new(), - } - } - fn args(json: bool) -> UserDeleteArgs { UserDeleteArgs::new(1, json) } diff --git a/src/cmd/user/list.rs b/src/cmd/user/list.rs index 6250025..555bfde 100644 --- a/src/cmd/user/list.rs +++ b/src/cmd/user/list.rs @@ -44,7 +44,8 @@ fn format_user_row(u: &User) -> String { mod tests { use super::*; use anyhow::anyhow; - use std::collections::BTreeMap; + + use crate::cmd::user::sample_user; struct MockApi { users: Option>, @@ -56,19 +57,6 @@ mod tests { } } - fn sample_user() -> User { - User { - id: 1, - user_id: Some("john".to_string()), - name: "John Doe".to_string(), - mail_address: Some("john@example.com".to_string()), - role_type: 1, - lang: None, - last_login_time: None, - extra: BTreeMap::new(), - } - } - #[test] fn format_user_row_with_user_id() { let text = format_user_row(&sample_user()); diff --git a/src/cmd/user/mod.rs b/src/cmd/user/mod.rs index db4b6a3..f0c37c8 100644 --- a/src/cmd/user/mod.rs +++ b/src/cmd/user/mod.rs @@ -10,6 +10,21 @@ pub mod star; mod update; pub use activities::{UserActivitiesArgs, activities}; + +#[cfg(test)] +pub(crate) fn sample_user() -> crate::api::user::User { + use std::collections::BTreeMap; + crate::api::user::User { + id: 1, + user_id: Some("john".to_string()), + name: "John Doe".to_string(), + mail_address: Some("john@example.com".to_string()), + role_type: 1, + lang: None, + last_login_time: None, + extra: BTreeMap::new(), + } +} pub use add::{UserAddArgs, add}; pub use delete::{UserDeleteArgs, delete}; pub use list::{UserListArgs, list}; diff --git a/src/cmd/user/show.rs b/src/cmd/user/show.rs index 8f9b04c..3526af9 100644 --- a/src/cmd/user/show.rs +++ b/src/cmd/user/show.rs @@ -53,9 +53,11 @@ fn format_user_text(u: &User) -> String { #[cfg(test)] mod tests { use super::*; - use anyhow::anyhow; use std::collections::BTreeMap; + use crate::cmd::user::sample_user; + use anyhow::anyhow; + struct MockApi { user: Option, } @@ -66,19 +68,6 @@ mod tests { } } - fn sample_user() -> User { - User { - id: 123, - user_id: Some("john".to_string()), - name: "John Doe".to_string(), - mail_address: Some("john@example.com".to_string()), - role_type: 1, - lang: Some("ja".to_string()), - last_login_time: Some("2024-01-01T00:00:00Z".to_string()), - extra: BTreeMap::new(), - } - } - #[test] fn show_with_text_output_succeeds() { let api = MockApi { @@ -105,7 +94,7 @@ mod tests { #[test] fn format_user_text_contains_fields() { let text = format_user_text(&sample_user()); - assert!(text.contains("123")); + assert!(text.contains("User ID: john")); assert!(text.contains("john")); assert!(text.contains("John Doe")); assert!(text.contains("john@example.com")); diff --git a/src/cmd/user/update.rs b/src/cmd/user/update.rs index 65ac660..b7eda2e 100644 --- a/src/cmd/user/update.rs +++ b/src/cmd/user/update.rs @@ -77,8 +77,8 @@ pub fn update_with(args: &UserUpdateArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use crate::api::user::User; + use crate::cmd::user::sample_user; use anyhow::anyhow; - use std::collections::BTreeMap; struct MockApi { user: Option, @@ -90,19 +90,6 @@ mod tests { } } - fn sample_user() -> User { - User { - id: 1, - user_id: Some("john".to_string()), - name: "John Doe".to_string(), - mail_address: Some("john@example.com".to_string()), - role_type: 2, - lang: None, - last_login_time: None, - extra: BTreeMap::new(), - } - } - fn args(json: bool) -> UserUpdateArgs { UserUpdateArgs::try_new(1, Some("John Doe".to_string()), None, None, None, json).unwrap() } diff --git a/src/cmd/watch/add.rs b/src/cmd/watch/add.rs index cb9e7b7..853eba5 100644 --- a/src/cmd/watch/add.rs +++ b/src/cmd/watch/add.rs @@ -49,6 +49,7 @@ pub fn add_with(args: &WatchAddArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use crate::api::watch::Watching; + use crate::cmd::watch::sample_watching; use anyhow::anyhow; struct MockApi { @@ -61,29 +62,6 @@ mod tests { } } - fn sample_watching() -> Watching { - serde_json::from_value(serde_json::json!({ - "id": 1, "resourceAlreadyRead": false, "note": null, "type": "issue", - "issue": { - "id": 10, "projectId": 1, "issueKey": "TEST-1", "keyId": 1, - "issueType": {"id":1,"projectId":1,"name":"Bug","color":"#990000","displayOrder":0}, - "summary": "Test issue", "description": null, "resolution": null, - "priority": {"id":3,"name":"Normal"}, - "status": {"id":1,"projectId":1,"name":"Open","color":"#ed8077","displayOrder":1000}, - "assignee": null, "startDate": null, "dueDate": null, - "estimatedHours": null, "actualHours": null, "parentIssueId": null, - "createdUser": {"id":1,"userId":"alice","name":"Alice","roleType":1,"lang":null,"mailAddress":null,"lastLoginTime":null}, - "created": "2024-01-01T00:00:00Z", - "updatedUser": {"id":1,"userId":"alice","name":"Alice","roleType":1,"lang":null,"mailAddress":null,"lastLoginTime":null}, - "updated": "2024-01-01T00:00:00Z" - }, - "lastContentUpdated": null, - "created": "2024-01-01T00:00:00Z", - "updated": "2024-01-01T00:00:00Z" - })) - .unwrap() - } - fn args(json: bool) -> WatchAddArgs { WatchAddArgs::new("TEST-1".to_string(), None, json) } diff --git a/src/cmd/watch/delete.rs b/src/cmd/watch/delete.rs index 08b8873..7b8facf 100644 --- a/src/cmd/watch/delete.rs +++ b/src/cmd/watch/delete.rs @@ -39,6 +39,7 @@ pub fn delete_with(args: &WatchDeleteArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use crate::api::watch::Watching; + use crate::cmd::watch::sample_watching; use anyhow::anyhow; struct MockApi { @@ -53,29 +54,6 @@ mod tests { } } - fn sample_watching() -> Watching { - serde_json::from_value(serde_json::json!({ - "id": 1, "resourceAlreadyRead": false, "note": null, "type": "issue", - "issue": { - "id": 10, "projectId": 1, "issueKey": "TEST-1", "keyId": 1, - "issueType": {"id":1,"projectId":1,"name":"Bug","color":"#990000","displayOrder":0}, - "summary": "Test issue", "description": null, "resolution": null, - "priority": {"id":3,"name":"Normal"}, - "status": {"id":1,"projectId":1,"name":"Open","color":"#ed8077","displayOrder":1000}, - "assignee": null, "startDate": null, "dueDate": null, - "estimatedHours": null, "actualHours": null, "parentIssueId": null, - "createdUser": {"id":1,"userId":"alice","name":"Alice","roleType":1,"lang":null,"mailAddress":null,"lastLoginTime":null}, - "created": "2024-01-01T00:00:00Z", - "updatedUser": {"id":1,"userId":"alice","name":"Alice","roleType":1,"lang":null,"mailAddress":null,"lastLoginTime":null}, - "updated": "2024-01-01T00:00:00Z" - }, - "lastContentUpdated": null, - "created": "2024-01-01T00:00:00Z", - "updated": "2024-01-01T00:00:00Z" - })) - .unwrap() - } - fn args(json: bool) -> WatchDeleteArgs { WatchDeleteArgs::new(1, json) } diff --git a/src/cmd/watch/list.rs b/src/cmd/watch/list.rs index 26b14fc..ff32470 100644 --- a/src/cmd/watch/list.rs +++ b/src/cmd/watch/list.rs @@ -83,6 +83,7 @@ pub fn list_with(args: &WatchListArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use crate::api::watch::Watching; + use crate::cmd::watch::sample_watching; use anyhow::anyhow; struct MockApi { @@ -101,35 +102,6 @@ mod tests { } } - fn sample_watching() -> Watching { - serde_json::from_value(sample_watching_json()).unwrap() - } - - fn sample_watching_json() -> serde_json::Value { - serde_json::json!({ - "id": 1, - "resourceAlreadyRead": false, - "note": "test note", - "type": "issue", - "issue": { - "id": 10, "projectId": 1, "issueKey": "TEST-1", "keyId": 1, - "issueType": {"id":1,"projectId":1,"name":"Bug","color":"#990000","displayOrder":0}, - "summary": "Test issue", "description": null, "resolution": null, - "priority": {"id":3,"name":"Normal"}, - "status": {"id":1,"projectId":1,"name":"Open","color":"#ed8077","displayOrder":1000}, - "assignee": null, "startDate": null, "dueDate": null, - "estimatedHours": null, "actualHours": null, "parentIssueId": null, - "createdUser": {"id":1,"userId":"alice","name":"Alice","roleType":1,"lang":null,"mailAddress":null,"lastLoginTime":null}, - "created": "2024-01-01T00:00:00Z", - "updatedUser": {"id":1,"userId":"alice","name":"Alice","roleType":1,"lang":null,"mailAddress":null,"lastLoginTime":null}, - "updated": "2024-01-01T00:00:00Z" - }, - "lastContentUpdated": "2024-01-01T00:00:00Z", - "created": "2024-01-01T00:00:00Z", - "updated": "2024-01-01T00:00:00Z" - }) - } - fn args(json: bool) -> WatchListArgs { WatchListArgs::try_new(1, None, None, 20, None, None, vec![], json).unwrap() } diff --git a/src/cmd/watch/mod.rs b/src/cmd/watch/mod.rs index 7e1a5ac..1800699 100644 --- a/src/cmd/watch/mod.rs +++ b/src/cmd/watch/mod.rs @@ -7,6 +7,30 @@ mod show; mod update; pub use add::{WatchAddArgs, add}; + +#[cfg(test)] +pub(crate) fn sample_watching() -> crate::api::watch::Watching { + serde_json::from_value(serde_json::json!({ + "id": 1, "resourceAlreadyRead": false, "note": null, "type": "issue", + "issue": { + "id": 10, "projectId": 1, "issueKey": "TEST-1", "keyId": 1, + "issueType": {"id":1,"projectId":1,"name":"Bug","color":"#990000","displayOrder":0}, + "summary": "Test issue", "description": null, "resolution": null, + "priority": {"id":3,"name":"Normal"}, + "status": {"id":1,"projectId":1,"name":"Open","color":"#ed8077","displayOrder":1000}, + "assignee": null, "startDate": null, "dueDate": null, + "estimatedHours": null, "actualHours": null, "parentIssueId": null, + "createdUser": {"id":1,"userId":"alice","name":"Alice","roleType":1,"lang":null,"mailAddress":null,"lastLoginTime":null}, + "created": "2024-01-01T00:00:00Z", + "updatedUser": {"id":1,"userId":"alice","name":"Alice","roleType":1,"lang":null,"mailAddress":null,"lastLoginTime":null}, + "updated": "2024-01-01T00:00:00Z" + }, + "lastContentUpdated": null, + "created": "2024-01-01T00:00:00Z", + "updated": "2024-01-01T00:00:00Z" + })) + .unwrap() +} pub use count::{WatchCountArgs, count}; pub use delete::{WatchDeleteArgs, delete}; pub use list::{WatchListArgs, list}; diff --git a/src/cmd/watch/show.rs b/src/cmd/watch/show.rs index 53f1681..e7b9b6b 100644 --- a/src/cmd/watch/show.rs +++ b/src/cmd/watch/show.rs @@ -44,6 +44,7 @@ pub fn show_with(args: &WatchShowArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use crate::api::watch::Watching; + use crate::cmd::watch::sample_watching; use anyhow::anyhow; struct MockApi { @@ -56,29 +57,6 @@ mod tests { } } - fn sample_watching() -> Watching { - serde_json::from_value(serde_json::json!({ - "id": 1, "resourceAlreadyRead": false, "note": "test note", "type": "issue", - "issue": { - "id": 10, "projectId": 1, "issueKey": "TEST-1", "keyId": 1, - "issueType": {"id":1,"projectId":1,"name":"Bug","color":"#990000","displayOrder":0}, - "summary": "Test issue", "description": null, "resolution": null, - "priority": {"id":3,"name":"Normal"}, - "status": {"id":1,"projectId":1,"name":"Open","color":"#ed8077","displayOrder":1000}, - "assignee": null, "startDate": null, "dueDate": null, - "estimatedHours": null, "actualHours": null, "parentIssueId": null, - "createdUser": {"id":1,"userId":"alice","name":"Alice","roleType":1,"lang":null,"mailAddress":null,"lastLoginTime":null}, - "created": "2024-01-01T00:00:00Z", - "updatedUser": {"id":1,"userId":"alice","name":"Alice","roleType":1,"lang":null,"mailAddress":null,"lastLoginTime":null}, - "updated": "2024-01-01T00:00:00Z" - }, - "lastContentUpdated": "2024-01-01T00:00:00Z", - "created": "2024-01-01T00:00:00Z", - "updated": "2024-01-01T00:00:00Z" - })) - .unwrap() - } - fn args(json: bool) -> WatchShowArgs { WatchShowArgs::new(1, json) } diff --git a/src/cmd/watch/update.rs b/src/cmd/watch/update.rs index a6cffd3..bc7aeed 100644 --- a/src/cmd/watch/update.rs +++ b/src/cmd/watch/update.rs @@ -45,6 +45,7 @@ pub fn update_with(args: &WatchUpdateArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use crate::api::watch::Watching; + use crate::cmd::watch::sample_watching; use anyhow::anyhow; struct MockApi { @@ -63,29 +64,6 @@ mod tests { } } - fn sample_watching() -> Watching { - serde_json::from_value(serde_json::json!({ - "id": 1, "resourceAlreadyRead": false, "note": "updated note", "type": "issue", - "issue": { - "id": 10, "projectId": 1, "issueKey": "TEST-1", "keyId": 1, - "issueType": {"id":1,"projectId":1,"name":"Bug","color":"#990000","displayOrder":0}, - "summary": "Test issue", "description": null, "resolution": null, - "priority": {"id":3,"name":"Normal"}, - "status": {"id":1,"projectId":1,"name":"Open","color":"#ed8077","displayOrder":1000}, - "assignee": null, "startDate": null, "dueDate": null, - "estimatedHours": null, "actualHours": null, "parentIssueId": null, - "createdUser": {"id":1,"userId":"alice","name":"Alice","roleType":1,"lang":null,"mailAddress":null,"lastLoginTime":null}, - "created": "2024-01-01T00:00:00Z", - "updatedUser": {"id":1,"userId":"alice","name":"Alice","roleType":1,"lang":null,"mailAddress":null,"lastLoginTime":null}, - "updated": "2024-01-01T00:00:00Z" - }, - "lastContentUpdated": "2024-01-01T00:00:00Z", - "created": "2024-01-01T00:00:00Z", - "updated": "2024-01-02T00:00:00Z" - })) - .unwrap() - } - fn args(json: bool) -> WatchUpdateArgs { WatchUpdateArgs::new(1, "updated note".to_string(), json) } diff --git a/src/cmd/wiki/attachment/add.rs b/src/cmd/wiki/attachment/add.rs index a4bf2e9..2f2e1fd 100644 --- a/src/cmd/wiki/attachment/add.rs +++ b/src/cmd/wiki/attachment/add.rs @@ -48,7 +48,8 @@ pub fn add_with(args: &WikiAttachmentAddArgs, api: &dyn BacklogApi) -> Result<() mod tests { use super::*; use crate::api::wiki::WikiAttachment; - use crate::cmd::wiki::list::tests_helper::sample_wiki_user; + use crate::cmd::wiki::attachment::sample_attachment; + use anyhow::anyhow; struct MockApi { @@ -67,16 +68,6 @@ mod tests { } } - fn sample_attachment() -> WikiAttachment { - WikiAttachment { - id: 1, - name: "image.png".to_string(), - size: 2048, - created_user: sample_wiki_user(), - created: "2024-01-01T00:00:00Z".to_string(), - } - } - fn args(json: bool) -> WikiAttachmentAddArgs { WikiAttachmentAddArgs::try_new(1, vec![1], json).unwrap() } diff --git a/src/cmd/wiki/attachment/delete.rs b/src/cmd/wiki/attachment/delete.rs index ecaa002..00cbac9 100644 --- a/src/cmd/wiki/attachment/delete.rs +++ b/src/cmd/wiki/attachment/delete.rs @@ -41,7 +41,8 @@ pub fn delete_with(args: &WikiAttachmentDeleteArgs, api: &dyn BacklogApi) -> Res mod tests { use super::*; use crate::api::wiki::WikiAttachment; - use crate::cmd::wiki::list::tests_helper::sample_wiki_user; + use crate::cmd::wiki::attachment::sample_attachment; + use anyhow::anyhow; struct MockApi { @@ -60,16 +61,6 @@ mod tests { } } - fn sample_attachment() -> WikiAttachment { - WikiAttachment { - id: 1, - name: "image.png".to_string(), - size: 2048, - created_user: sample_wiki_user(), - created: "2024-01-01T00:00:00Z".to_string(), - } - } - fn args(json: bool) -> WikiAttachmentDeleteArgs { WikiAttachmentDeleteArgs::new(1, 1, json) } diff --git a/src/cmd/wiki/attachment/list.rs b/src/cmd/wiki/attachment/list.rs index 9720e3b..0211a2d 100644 --- a/src/cmd/wiki/attachment/list.rs +++ b/src/cmd/wiki/attachment/list.rs @@ -48,7 +48,8 @@ pub fn format_attachment_row(a: &WikiAttachment) -> String { mod tests { use super::*; use crate::api::wiki::WikiAttachment; - use crate::cmd::wiki::list::tests_helper::sample_wiki_user; + use crate::cmd::wiki::attachment::sample_attachment; + use anyhow::anyhow; struct MockApi { @@ -63,16 +64,6 @@ mod tests { } } - fn sample_attachment() -> WikiAttachment { - WikiAttachment { - id: 1, - name: "image.png".to_string(), - size: 2048, - created_user: sample_wiki_user(), - created: "2024-01-01T00:00:00Z".to_string(), - } - } - fn args(json: bool) -> WikiAttachmentListArgs { WikiAttachmentListArgs::new(1, json) } diff --git a/src/cmd/wiki/attachment/mod.rs b/src/cmd/wiki/attachment/mod.rs index 5f6e945..a0b7c8a 100644 --- a/src/cmd/wiki/attachment/mod.rs +++ b/src/cmd/wiki/attachment/mod.rs @@ -7,3 +7,15 @@ pub use add::{WikiAttachmentAddArgs, add}; pub use delete::{WikiAttachmentDeleteArgs, delete}; pub use get::{WikiAttachmentGetArgs, get}; pub use list::{WikiAttachmentListArgs, list}; + +#[cfg(test)] +pub(crate) fn sample_attachment() -> crate::api::wiki::WikiAttachment { + use crate::cmd::wiki::list::tests_helper::sample_wiki_user; + crate::api::wiki::WikiAttachment { + id: 1, + name: "image.png".to_string(), + size: 2048, + created_user: sample_wiki_user(), + created: "2024-01-01T00:00:00Z".to_string(), + } +} diff --git a/src/cmd/wiki/create.rs b/src/cmd/wiki/create.rs index b4a22ce..de3963a 100644 --- a/src/cmd/wiki/create.rs +++ b/src/cmd/wiki/create.rs @@ -60,9 +60,8 @@ pub fn create_with(args: &WikiCreateArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use crate::api::wiki::Wiki; - use crate::cmd::wiki::list::tests_helper::sample_wiki_user; + use crate::cmd::wiki::sample_wiki; use anyhow::anyhow; - use std::collections::BTreeMap; struct MockApi { wiki: Option, @@ -74,21 +73,6 @@ mod tests { } } - fn sample_wiki() -> Wiki { - Wiki { - id: 1, - project_id: 1, - name: "Home".to_string(), - content: "# Home".to_string(), - tags: vec![], - created_user: sample_wiki_user(), - created: "2024-01-01T00:00:00Z".to_string(), - updated_user: sample_wiki_user(), - updated: "2024-01-01T00:00:00Z".to_string(), - extra: BTreeMap::new(), - } - } - fn args(json: bool) -> WikiCreateArgs { WikiCreateArgs::new(1, "Home".to_string(), "# Home".to_string(), false, json) } diff --git a/src/cmd/wiki/delete.rs b/src/cmd/wiki/delete.rs index 23fabb7..58bcda7 100644 --- a/src/cmd/wiki/delete.rs +++ b/src/cmd/wiki/delete.rs @@ -46,9 +46,8 @@ pub fn delete_with(args: &WikiDeleteArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use crate::api::wiki::Wiki; - use crate::cmd::wiki::list::tests_helper::sample_wiki_user; + use crate::cmd::wiki::sample_wiki; use anyhow::anyhow; - use std::collections::BTreeMap; struct MockApi { wiki: Option, @@ -60,21 +59,6 @@ mod tests { } } - fn sample_wiki() -> Wiki { - Wiki { - id: 1, - project_id: 1, - name: "Home".to_string(), - content: "# Home".to_string(), - tags: vec![], - created_user: sample_wiki_user(), - created: "2024-01-01T00:00:00Z".to_string(), - updated_user: sample_wiki_user(), - updated: "2024-01-01T00:00:00Z".to_string(), - extra: BTreeMap::new(), - } - } - fn args(json: bool) -> WikiDeleteArgs { WikiDeleteArgs::new(1, false, json) } diff --git a/src/cmd/wiki/mod.rs b/src/cmd/wiki/mod.rs index cece6d2..53a1f74 100644 --- a/src/cmd/wiki/mod.rs +++ b/src/cmd/wiki/mod.rs @@ -17,3 +17,24 @@ pub use history::{WikiHistoryArgs, history}; pub use list::{WikiListArgs, list}; pub use show::{WikiShowArgs, show}; pub use update::{WikiUpdateArgs, update}; + +#[cfg(test)] +pub(crate) fn sample_wiki() -> crate::api::wiki::Wiki { + use crate::cmd::wiki::list::tests_helper::sample_wiki_user; + use std::collections::BTreeMap; + crate::api::wiki::Wiki { + id: 1, + project_id: 1, + name: "Home".to_string(), + content: "# Home\nWelcome!".to_string(), + tags: vec![crate::api::wiki::WikiTag { + id: 1, + name: "guide".to_string(), + }], + created_user: sample_wiki_user(), + created: "2024-01-01T00:00:00Z".to_string(), + updated_user: sample_wiki_user(), + updated: "2024-01-02T00:00:00Z".to_string(), + extra: BTreeMap::new(), + } +} diff --git a/src/cmd/wiki/show.rs b/src/cmd/wiki/show.rs index 1f208a6..e4d150b 100644 --- a/src/cmd/wiki/show.rs +++ b/src/cmd/wiki/show.rs @@ -49,10 +49,9 @@ pub fn print_wiki(wiki: &Wiki) { #[cfg(test)] mod tests { use super::*; - use crate::api::wiki::{Wiki, WikiTag}; - use crate::cmd::wiki::list::tests_helper::sample_wiki_user; + use crate::api::wiki::Wiki; + use crate::cmd::wiki::sample_wiki; use anyhow::anyhow; - use std::collections::BTreeMap; struct MockApi { wiki: Option, @@ -64,24 +63,6 @@ mod tests { } } - fn sample_wiki() -> Wiki { - Wiki { - id: 1, - project_id: 1, - name: "Home".to_string(), - content: "# Home\nWelcome!".to_string(), - tags: vec![WikiTag { - id: 1, - name: "guide".to_string(), - }], - created_user: sample_wiki_user(), - created: "2024-01-01T00:00:00Z".to_string(), - updated_user: sample_wiki_user(), - updated: "2024-01-02T00:00:00Z".to_string(), - extra: BTreeMap::new(), - } - } - fn args(json: bool) -> WikiShowArgs { WikiShowArgs::new(1, json) } diff --git a/src/cmd/wiki/update.rs b/src/cmd/wiki/update.rs index 15228f2..69b5167 100644 --- a/src/cmd/wiki/update.rs +++ b/src/cmd/wiki/update.rs @@ -68,9 +68,8 @@ pub fn update_with(args: &WikiUpdateArgs, api: &dyn BacklogApi) -> Result<()> { mod tests { use super::*; use crate::api::wiki::Wiki; - use crate::cmd::wiki::list::tests_helper::sample_wiki_user; + use crate::cmd::wiki::sample_wiki; use anyhow::anyhow; - use std::collections::BTreeMap; struct MockApi { wiki: Option, @@ -82,21 +81,6 @@ mod tests { } } - fn sample_wiki() -> Wiki { - Wiki { - id: 1, - project_id: 1, - name: "Updated".to_string(), - content: "# Updated".to_string(), - tags: vec![], - created_user: sample_wiki_user(), - created: "2024-01-01T00:00:00Z".to_string(), - updated_user: sample_wiki_user(), - updated: "2024-01-02T00:00:00Z".to_string(), - extra: BTreeMap::new(), - } - } - fn args(json: bool) -> WikiUpdateArgs { WikiUpdateArgs::try_new(1, Some("Updated".to_string()), None, false, json).unwrap() }