From 4dca18d5963ceedd6def8e10ffc88dc6edc04fde Mon Sep 17 00:00:00 2001 From: Dmitry Marakasov Date: Tue, 24 Dec 2024 17:05:27 +0300 Subject: [PATCH] webapp: Granularize more tests --- .../integration_tests/legacy_redirects.rs | 21 ++++++++++++++++- .../tests/integration_tests/log.rs | 22 +++++++++++++++++- .../tests/snapshot_tests/legacy_redirects.rs | 22 +++++++++++++++++- repology-webapp/tests/snapshot_tests/log.rs | 23 ++++++++++++++++++- 4 files changed, 84 insertions(+), 4 deletions(-) diff --git a/repology-webapp/tests/integration_tests/legacy_redirects.rs b/repology-webapp/tests/integration_tests/legacy_redirects.rs index e5cf925..3206fd2 100644 --- a/repology-webapp/tests/integration_tests/legacy_redirects.rs +++ b/repology-webapp/tests/integration_tests/legacy_redirects.rs @@ -6,12 +6,31 @@ use sqlx::PgPool; use repology_webapp_test_utils::check_response; #[sqlx::test(migrator = "repology_common::MIGRATOR")] -async fn test_legacy_redirects(pool: PgPool) { +async fn test_version_only_for_repo(pool: PgPool) { check_response!(pool, "/badge/version-only-for-repo/foo/bar.svg", status MOVED_PERMANENTLY, header_value "location" "/badge/version-for-repo/foo/bar.svg"); +} + +#[sqlx::test(migrator = "repology_common::MIGRATOR")] +async fn test_version_only_for_repo_with_title(pool: PgPool) { check_response!(pool, "/badge/version-only-for-repo/foo/bar.svg?header=baz", status MOVED_PERMANENTLY, header_value "location" "/badge/version-for-repo/foo/bar.svg?header=baz"); +} +#[sqlx::test(migrator = "repology_common::MIGRATOR")] +async fn test_project_root(pool: PgPool) { check_response!(pool, "/project/zsh", status MOVED_PERMANENTLY, header_value "location" "/project/zsh/versions"); +} + +#[sqlx::test(migrator = "repology_common::MIGRATOR")] +async fn test_metapackage(pool: PgPool) { check_response!(pool, "/metapackage/zsh", status MOVED_PERMANENTLY, header_value "location" "/project/zsh/versions"); +} + +#[sqlx::test(migrator = "repology_common::MIGRATOR")] +async fn test_metapackage_versions(pool: PgPool) { check_response!(pool, "/metapackage/zsh/versions", status MOVED_PERMANENTLY, header_value "location" "/project/zsh/versions"); +} + +#[sqlx::test(migrator = "repology_common::MIGRATOR")] +async fn test_metapackage_packages(pool: PgPool) { check_response!(pool, "/metapackage/zsh/packages", status MOVED_PERMANENTLY, header_value "location" "/project/zsh/packages"); } diff --git a/repology-webapp/tests/integration_tests/log.rs b/repology-webapp/tests/integration_tests/log.rs index 1b1e856..4ce7491 100644 --- a/repology-webapp/tests/integration_tests/log.rs +++ b/repology-webapp/tests/integration_tests/log.rs @@ -9,18 +9,31 @@ use repology_webapp_test_utils::check_response; migrator = "repology_common::MIGRATOR", fixtures("common_repositories", "common_packages", "log_data") )] -async fn test_log(pool: PgPool) { +async fn test_nonexistent(pool: PgPool) { check_response!( pool, "/log/10", status NOT_FOUND ); +} + +#[sqlx::test( + migrator = "repology_common::MIGRATOR", + fixtures("common_repositories", "common_packages", "log_data") +)] +async fn test_invalid_id(pool: PgPool) { check_response!( pool, "/log/foo", status BAD_REQUEST ); +} +#[sqlx::test( + migrator = "repology_common::MIGRATOR", + fixtures("common_repositories", "common_packages", "log_data") +)] +async fn test_ongoing(pool: PgPool) { check_response!( pool, "/log/1", @@ -29,6 +42,13 @@ async fn test_log(pool: PgPool) { html_ok "allow_empty_tags,warnings_fatal", contains "ongoing" ); +} + +#[sqlx::test( + migrator = "repology_common::MIGRATOR", + fixtures("common_repositories", "common_packages", "log_data") +)] +async fn test_finished(pool: PgPool) { check_response!( pool, "/log/2", diff --git a/repology-webapp/tests/snapshot_tests/legacy_redirects.rs b/repology-webapp/tests/snapshot_tests/legacy_redirects.rs index c661c40..da5126c 100644 --- a/repology-webapp/tests/snapshot_tests/legacy_redirects.rs +++ b/repology-webapp/tests/snapshot_tests/legacy_redirects.rs @@ -6,15 +6,35 @@ use sqlx::PgPool; use super::uri_snapshot_test; #[sqlx::test(migrator = "repology_common::MIGRATOR")] -async fn test_legacy_redirects(pool: PgPool) { +async fn test_version_only_for_repo(pool: PgPool) { uri_snapshot_test(pool.clone(), "/badge/version-only-for-repo/foo/bar.svg").await; +} + +#[sqlx::test(migrator = "repology_common::MIGRATOR")] +async fn test_version_only_for_repo_with_title(pool: PgPool) { uri_snapshot_test( pool.clone(), "/badge/version-only-for-repo/foo/bar.svg?header=baz", ) .await; +} + +#[sqlx::test(migrator = "repology_common::MIGRATOR")] +async fn test_project_root(pool: PgPool) { uri_snapshot_test(pool.clone(), "/project/zsh").await; +} + +#[sqlx::test(migrator = "repology_common::MIGRATOR")] +async fn test_metapackage(pool: PgPool) { uri_snapshot_test(pool.clone(), "/metapackage/zsh").await; +} + +#[sqlx::test(migrator = "repology_common::MIGRATOR")] +async fn test_metapackage_versions(pool: PgPool) { uri_snapshot_test(pool.clone(), "/metapackage/zsh/versions").await; +} + +#[sqlx::test(migrator = "repology_common::MIGRATOR")] +async fn test_metapackage_packages(pool: PgPool) { uri_snapshot_test(pool.clone(), "/metapackage/zsh/packages").await; } diff --git a/repology-webapp/tests/snapshot_tests/log.rs b/repology-webapp/tests/snapshot_tests/log.rs index f72b8a9..f41717d 100644 --- a/repology-webapp/tests/snapshot_tests/log.rs +++ b/repology-webapp/tests/snapshot_tests/log.rs @@ -9,9 +9,30 @@ use super::uri_snapshot_test; migrator = "repology_common::MIGRATOR", fixtures("common_repositories", "common_packages", "log_data") )] -async fn test_log(pool: PgPool) { +async fn test_nonexistent(pool: PgPool) { uri_snapshot_test(pool.clone(), "/log/10").await; +} + +#[sqlx::test( + migrator = "repology_common::MIGRATOR", + fixtures("common_repositories", "common_packages", "log_data") +)] +async fn test_invalid_id(pool: PgPool) { uri_snapshot_test(pool.clone(), "/log/foo").await; +} + +#[sqlx::test( + migrator = "repology_common::MIGRATOR", + fixtures("common_repositories", "common_packages", "log_data") +)] +async fn test_ongoing(pool: PgPool) { uri_snapshot_test(pool.clone(), "/log/1").await; +} + +#[sqlx::test( + migrator = "repology_common::MIGRATOR", + fixtures("common_repositories", "common_packages", "log_data") +)] +async fn test_finished(pool: PgPool) { uri_snapshot_test(pool.clone(), "/log/2").await; }