From fe692cbed72392fb5e21cbaf6a0cd64ae24b7f1e Mon Sep 17 00:00:00 2001 From: Spencer Ferris <3319370+spencewenski@users.noreply.github.com> Date: Mon, 13 May 2024 23:49:35 -0700 Subject: [PATCH] Add small test for service builder --- .config/nextest.toml | 4 +++- src/service/mod.rs | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/.config/nextest.toml b/.config/nextest.toml index aaa1be11..2825f6f6 100644 --- a/.config/nextest.toml +++ b/.config/nextest.toml @@ -1,7 +1,9 @@ +# Test that test groups are assigned correctly using: +# `cargo nextest show-config test-groups` [test-groups] # Mocks of static methods need to run sequentially. This test group is for tests that mock AppService's static methods. app-service-static-mock = { max-threads = 1 } [[profile.default.overrides]] -filter = 'test(service::registry::tests::)' +filter = 'test(#service::registry::tests::*) | test(#service::tests::*)' test-group = "app-service-static-mock" diff --git a/src/service/mod.rs b/src/service/mod.rs index 5e3d6f44..97075385 100644 --- a/src/service/mod.rs +++ b/src/service/mod.rs @@ -72,3 +72,41 @@ where async fn build(self, context: &AppContext) -> anyhow::Result; } + +#[cfg(test)] +mod tests { + use crate::app::MockTestApp; + use crate::app_context::MockAppContext; + use crate::service::{AppServiceBuilder, MockAppService}; + use async_trait::async_trait; + use rstest::rstest; + + struct TestAppServiceBuilder; + #[async_trait] + impl AppServiceBuilder> for TestAppServiceBuilder { + async fn build( + self, + _context: &MockAppContext<()>, + ) -> anyhow::Result> { + Ok(MockAppService::default()) + } + } + + #[rstest] + #[case(true)] + #[case(false)] + fn builder_enabled(#[case] service_enabled: bool) { + // Arrange + let mut context = MockAppContext::default(); + context.expect_clone().returning(MockAppContext::default); + + let enabled_ctx = MockAppService::::enabled_context(); + enabled_ctx.expect().returning(move |_| service_enabled); + + // Act + let builder = TestAppServiceBuilder; + + // Assert + assert_eq!(builder.enabled(&context), service_enabled); + } +}