Version ordering [MOD-551] (#740)

* Version ordering

* cargo sqlx prepare

* Use version ordering for maven

* Use version ordering when sorting versions in Rust (not just SQL)

* Thanks clippy
This commit is contained in:
Jackson Kruger
2023-11-01 11:36:39 -05:00
committed by GitHub
parent d5594b03e3
commit 911d442340
16 changed files with 392 additions and 27 deletions

126
tests/version.rs Normal file
View File

@@ -0,0 +1,126 @@
use crate::common::{asserts::assert_status, get_json_val_str};
use actix_http::StatusCode;
use common::{
asserts::assert_version_ids, database::USER_USER_PAT, environment::with_test_environment,
};
mod common;
#[actix_rt::test]
async fn can_create_version_with_ordering() {
with_test_environment(|env| async move {
let alpha_project_id = env.dummy.as_ref().unwrap().project_alpha.project_id.clone();
let new_version_id = get_json_val_str(
env.v2
.create_default_version(&alpha_project_id, Some(1), USER_USER_PAT)
.await
.id,
);
let versions = env
.v2
.get_versions(vec![new_version_id.clone()], USER_USER_PAT)
.await;
assert_eq!(versions[0].ordering, Some(1));
})
.await;
}
#[actix_rt::test]
async fn edit_version_ordering_works() {
with_test_environment(|env| async move {
let alpha_version_id = env.dummy.as_ref().unwrap().project_alpha.version_id.clone();
let resp = env
.v2
.edit_version_ordering(&alpha_version_id, Some(10), USER_USER_PAT)
.await;
assert_status(&resp, StatusCode::NO_CONTENT);
let versions = env
.v2
.get_versions(vec![alpha_version_id.clone()], USER_USER_PAT)
.await;
assert_eq!(versions[0].ordering, Some(10));
})
.await;
}
#[actix_rt::test]
async fn version_ordering_for_specified_orderings_orders_lower_order_first() {
with_test_environment(|env| async move {
let alpha_project_id = env.dummy.as_ref().unwrap().project_alpha.project_id.clone();
let alpha_version_id = env.dummy.as_ref().unwrap().project_alpha.version_id.clone();
let new_version_id = get_json_val_str(
env.v2
.create_default_version(&alpha_project_id, Some(1), USER_USER_PAT)
.await
.id,
);
env.v2
.edit_version_ordering(&alpha_version_id, Some(10), USER_USER_PAT)
.await;
let versions = env
.v2
.get_versions(
vec![alpha_version_id.clone(), new_version_id.clone()],
USER_USER_PAT,
)
.await;
assert_version_ids(&versions, vec![new_version_id, alpha_version_id]);
})
.await;
}
#[actix_rt::test]
async fn version_ordering_when_unspecified_orders_oldest_first() {
with_test_environment(|env| async move {
let alpha_project_id = &env.dummy.as_ref().unwrap().project_alpha.project_id.clone();
let alpha_version_id = env.dummy.as_ref().unwrap().project_alpha.version_id.clone();
let new_version_id = get_json_val_str(
env.v2
.create_default_version(&alpha_project_id, None, USER_USER_PAT)
.await
.id,
);
let versions = env
.v2
.get_versions(
vec![alpha_version_id.clone(), new_version_id.clone()],
USER_USER_PAT,
)
.await;
assert_version_ids(&versions, vec![alpha_version_id, new_version_id]);
})
.await
}
#[actix_rt::test]
async fn version_ordering_when_specified_orders_specified_before_unspecified() {
with_test_environment(|env| async move {
let alpha_project_id = &env.dummy.as_ref().unwrap().project_alpha.project_id.clone();
let alpha_version_id = env.dummy.as_ref().unwrap().project_alpha.version_id.clone();
let new_version_id = get_json_val_str(
env.v2
.create_default_version(&alpha_project_id, Some(10000), USER_USER_PAT)
.await
.id,
);
env.v2
.edit_version_ordering(&alpha_version_id, None, USER_USER_PAT)
.await;
let versions = env
.v2
.get_versions(
vec![alpha_version_id.clone(), new_version_id.clone()],
USER_USER_PAT,
)
.await;
assert_version_ids(&versions, vec![new_version_id, alpha_version_id]);
})
.await;
}