From 3bbe9abbd97e7b986a1b02f4ab359f0b9b5b31a2 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Fri, 12 Apr 2024 22:41:16 +0100 Subject: [PATCH] test: Create stub mock forge Still need to figure out what tests this will need to support, and how to configure it's behaviour. I've not ruled out creating a forge object that is passed in rather than the functions we have now. Closes kemitix/git-next#37 --- src/server/actors/repo/branch.rs | 4 ++++ src/server/actors/repo/config.rs | 2 ++ src/server/actors/repo/status.rs | 4 ++++ src/server/config.rs | 2 ++ src/server/forge/mock/config.rs | 16 ++++++++++++++++ src/server/forge/mock/mod.rs | 24 ++++++++++++++++++++++++ src/server/forge/mod.rs | 2 ++ 7 files changed, 54 insertions(+) create mode 100644 src/server/forge/mock/config.rs create mode 100644 src/server/forge/mock/mod.rs diff --git a/src/server/actors/repo/branch.rs b/src/server/actors/repo/branch.rs index 917df8b..6341d16 100644 --- a/src/server/actors/repo/branch.rs +++ b/src/server/actors/repo/branch.rs @@ -20,6 +20,10 @@ pub async fn validate_positions( config::ForgeType::ForgeJo => { forge::forgejo::get_commit_histories(&repo_details, &config, &net).await } + #[cfg(test)] + config::ForgeType::MockForge => { + forge::mock::get_commit_histories(&repo_details, &config, &net).await + } }; let commit_histories = match commit_histories { Ok(commit_histories) => commit_histories, diff --git a/src/server/actors/repo/config.rs b/src/server/actors/repo/config.rs index 4c56168..febf6eb 100644 --- a/src/server/actors/repo/config.rs +++ b/src/server/actors/repo/config.rs @@ -13,6 +13,8 @@ pub async fn load(details: RepoDetails, addr: Addr, net: Network) { let config = match details.forge.forge_type { #[cfg(feature = "forgejo")] ForgeType::ForgeJo => forge::forgejo::config::load(&details, &net).await, + #[cfg(test)] + ForgeType::MockForge => forge::mock::config::load(&details, &net).await, }; match config { Ok(config) => addr.do_send(LoadedConfig(config)), diff --git a/src/server/actors/repo/status.rs b/src/server/actors/repo/status.rs index 158608e..9c539dd 100644 --- a/src/server/actors/repo/status.rs +++ b/src/server/actors/repo/status.rs @@ -22,6 +22,10 @@ pub async fn check_next( ForgeType::ForgeJo => { forge::forgejo::get_commit_status(next.clone(), &repo_details, net).await } + #[cfg(test)] + ForgeType::MockForge => { + forge::mock::get_commit_status(next.clone(), &repo_details, &net).await + } }; info!(?status, "Checking next branch"); match status { diff --git a/src/server/config.rs b/src/server/config.rs index b77b0a9..e769e82 100644 --- a/src/server/config.rs +++ b/src/server/config.rs @@ -259,6 +259,8 @@ pub enum ForgeType { // GitHub, // GitLab, // BitBucket, + #[cfg(test)] + MockForge, } impl Display for ForgeType { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { diff --git a/src/server/forge/mock/config.rs b/src/server/forge/mock/config.rs new file mode 100644 index 0000000..ebe39c7 --- /dev/null +++ b/src/server/forge/mock/config.rs @@ -0,0 +1,16 @@ +pub(crate) async fn load( + _details: &crate::server::config::RepoDetails, + _net: &kxio::network::Network, +) -> Result< + crate::server::config::RepoConfig, + terrors::OneOf<( + crate::server::forge::forgejo::config::RepoConfigFileNotFound, + crate::server::forge::forgejo::config::RepoConfigIsNotFile, + crate::server::forge::forgejo::config::RepoConfigDecodeError, + crate::server::forge::forgejo::config::RepoConfigParseError, + crate::server::forge::forgejo::config::RepoConfigUnknownError, + crate::server::forge::forgejo::config::RepoConfigBranchNotFound, + )>, +> { + todo!() +} diff --git a/src/server/forge/mock/mod.rs b/src/server/forge/mock/mod.rs new file mode 100644 index 0000000..8f9f2ad --- /dev/null +++ b/src/server/forge/mock/mod.rs @@ -0,0 +1,24 @@ +use kxio::network::{Network, NetworkError}; + +use crate::server::{ + config::{RepoConfig, RepoDetails}, + forge::CommitHistories, +}; + +pub mod config; + +pub(crate) async fn get_commit_histories( + _repo_details: &RepoDetails, + _config: &RepoConfig, + _net: &Network, +) -> Result { + todo!() +} + +pub(crate) async fn get_commit_status( + _clone: super::Commit, + _repo_details: &RepoDetails, + _net: &Network, +) -> crate::server::actors::repo::status::Status { + todo!() +} diff --git a/src/server/forge/mod.rs b/src/server/forge/mod.rs index bcb80d8..44f96b3 100644 --- a/src/server/forge/mod.rs +++ b/src/server/forge/mod.rs @@ -3,6 +3,8 @@ use std::fmt::{Display, Formatter}; #[cfg(feature = "forgejo")] pub mod forgejo; +#[cfg(test)] +pub mod mock; #[cfg(test)] mod tests;