diff --git a/web/snapshots/brass_web__endpoints__availability__get_overview__tests__inner_endpoint_produces_template.snap b/web/snapshots/brass_web__endpoints__availability__get_overview__tests__inner_endpoint_produces_template.snap new file mode 100644 index 00000000..aa4e590c --- /dev/null +++ b/web/snapshots/brass_web__endpoints__availability__get_overview__tests__inner_endpoint_produces_template.snap @@ -0,0 +1,46 @@ +--- +source: web/src/endpoints/availability/get_overview.rs +expression: body +snapshot_kind: text +--- +
+
+

Übersicht

+

geplante Veranstaltungen

+

in den nächsten 31 Tagen

+ +
+ +
+ + WGT   Sonntag, 06.07.2025 10:00 - 20:00 + + + + + + im Kalender anzeigen + +
+ +
+ + +

Deine Verfügbarkeiten

+

in den nächsten 31 Tagen

+ +
+ Keine Verfügbarkeiten für diesen Zeitraum hinterlegt. +
+ + +

Deine Einteilungen

+

in den nächsten 31 Tagen

+ +
+ Keine Einteilungen für diesen Zeitraum vorhanden. +
+ + +
+
diff --git a/web/src/endpoints/availability/get_overview.rs b/web/src/endpoints/availability/get_overview.rs index 773502dc..1fdac623 100644 --- a/web/src/endpoints/availability/get_overview.rs +++ b/web/src/endpoints/availability/get_overview.rs @@ -14,7 +14,8 @@ use crate::{ use brass_db::models::{Assignment, Availability, Event, Role, User}; #[derive(Template)] -#[template(path = "overview.html")] +#[cfg_attr(not(test), template(path = "overview.html"))] +#[cfg_attr(test, template(path = "overview.html", block = "content"), allow(dead_code))] struct OverviewTemplate { user: User, events: Vec, @@ -63,3 +64,52 @@ async fn get( Ok(template.to_response()?) } + +#[cfg(test)] +mod tests { + use actix_http::StatusCode; + use brass_db::models::{Clothing, Event, EventChangeset, Location}; + use brass_macros::db_test; + use chrono::Utc; + + use crate::utils::test_helper::{ + assert_snapshot, test_get, DbTestContext, RequestConfig, ServiceResponseExt, + }; + + #[db_test] + fn endpoint_produces_template(context: &DbTestContext) { + let app = context.app().await; + Location::create(&context.db_pool, "Arena Abc", 1) + .await + .unwrap(); + Clothing::create(&context.db_pool, "Anzugsordnung") + .await + .unwrap(); + + let event_changeset = EventChangeset { + time: ( + Utc::now().date_naive().and_hms_opt(10, 0, 0).unwrap(), + Utc::now().date_naive().and_hms_opt(20, 0, 0).unwrap(), + ), + name: "WGT".to_string(), + location_id: 1, + voluntary_wachhabender: false, + voluntary_fuehrungsassistent: false, + amount_of_posten: 1, + clothing: 1, + note: None, + }; + + Event::create(&context.db_pool, event_changeset) + .await + .unwrap(); + + let config = RequestConfig::new("/"); + let response = test_get(&context.db_pool, app, &config).await; + + let (status, body) = response.into_status_and_body().await; + + assert_eq!(StatusCode::OK, status); + assert_snapshot!(body); + } +}