// SPDX-FileCopyrightText: 2024 Simon Bruder // // SPDX-License-Identifier: AGPL-3.0-or-later use actix_web::{body::MessageBody, test}; use sqlx::{query_as, PgPool}; use uuid::Uuid; mod common; #[sqlx::test(fixtures("default"))] async fn list(pool: PgPool) { let srv = test::init_service(li7y::app(&common::config(), &pool)).await; let session_cookie = common::session_cookie(&srv).await; let req = test::TestRequest::get() .uri("/items") .cookie(session_cookie.clone()) .to_request(); let res = test::call_service(&srv, req).await; assert!(res.status().is_success()); let body = String::from_utf8(res.into_body().try_into_bytes().unwrap().to_vec()).unwrap(); let items: Vec<(Uuid, Option)> = query_as("SELECT id, name FROM items") .fetch_all(&pool) .await .unwrap(); for (id, name) in items { assert!(body.contains(&format!(r#"href="/item/{id}""#))); if let Some(name) = name { assert!(body.contains(&format!(">{name}"))); } } } #[sqlx::test(fixtures("default"))] async fn show(pool: PgPool) { let srv = test::init_service(li7y::app(&common::config(), &pool)).await; let session_cookie = common::session_cookie(&srv).await; let req = test::TestRequest::get() .uri("/item/663f45e6-b11a-4197-8ce4-c784ac9ee617") .cookie(session_cookie.clone()) .to_request(); let res = test::call_service(&srv, req).await; assert!(res.status().is_success()); let body = String::from_utf8(res.into_body().try_into_bytes().unwrap().to_vec()).unwrap(); assert!(body.contains("

Item 2 <")); assert!(body.contains("UUID663f45e6-b11a-4197-8ce4-c784ac9ee617")); assert!(body.contains("NameItem 2")); assert!(body .contains(r#"href="/item-class/8a979306-b4c6-4ef8-900d-68f64abb2975">Subclass 1.1"#)); assert!(body.contains(r#"href="/item/4fc0f5f4-4dca-4c24-844d-1f464cb32afa">Item 1"#)); assert!(body.contains(r#""#)); assert!(body.contains( r#"href="/item/049298e2-73db-42fb-957d-a741655648b1">Original Packaging of Item 2"# )); assert!(body.contains(">Lorem ipsum 3")); assert!(body.contains(">acquire