diff options
| author | joeac <me@joeac.net> | 2026-01-17 17:17:50 +0000 |
|---|---|---|
| committer | joeac <me@joeac.net> | 2026-01-17 17:17:50 +0000 |
| commit | bf74f305894bde98033932235a4210c7d6865adf (patch) | |
| tree | 051422c97fcb5d7c2eafd426ea66e1a906948747 /schist_core/schist_queries/tests/buckets.rs | |
| parent | fe85652e4d3e8906824baddaafd05d19105579b8 (diff) | |
| parent | f69ec8416c4e6301dcfa06791b025785d7f61b6b (diff) | |
Merge pull request 'random-stuff' (#4) from random-stuff into main
Reviewed-on: https://git.joeac.net/joeac/schist/pulls/4
Diffstat (limited to 'schist_core/schist_queries/tests/buckets.rs')
| -rw-r--r-- | schist_core/schist_queries/tests/buckets.rs | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/schist_core/schist_queries/tests/buckets.rs b/schist_core/schist_queries/tests/buckets.rs new file mode 100644 index 0000000..72dd4c7 --- /dev/null +++ b/schist_core/schist_queries/tests/buckets.rs @@ -0,0 +1,83 @@ +mod common; + +use common::test_context::TestContext; +use diesel::{Connection, SqliteConnection}; +use schist_fakes::bucket::make_fake_bucket; +use schist_models::Bucket; +use schist_queries as queries; + +fn given_buckets(connection: &mut SqliteConnection) -> Vec<Bucket> { + let buckets = vec![make_fake_bucket(0), make_fake_bucket(1)]; + let _ = queries::buckets::insert_buckets(&buckets, connection).unwrap(); + buckets +} + +#[test] +fn when_insert_buckets_then_returns_num_buckets() { + let context = TestContext::new(); + let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); + let buckets = [make_fake_bucket(0), make_fake_bucket(1)]; + + let num_buckets_inserted = queries::buckets::insert_buckets(&buckets, connection).unwrap(); + + assert_eq!(num_buckets_inserted, 2); +} + +#[test] +fn given_buckets_when_get_all_buckets_then_return_buckets() { + let context = TestContext::new(); + let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); + let buckets = given_buckets(connection); + + let buckets_in_db = queries::buckets::get_all_buckets(connection).unwrap(); + + assert_eq!(buckets_in_db.len(), buckets.len()); + for bucket in &buckets { + assert!(buckets_in_db + .iter() + .any(|bucket_in_db| bucket_in_db.eq(&bucket))); + } + for bucket_in_db in buckets_in_db { + assert!(buckets.iter().any(|bucket| bucket.eq(&bucket_in_db))); + } +} + +#[test] +fn given_buckets_when_delete_all_buckets_then_return_num_of_buckets() { + let context = TestContext::new(); + let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); + let buckets = given_buckets(connection); + + let num_buckets_deleted = queries::buckets::delete_all_buckets(connection).unwrap(); + + assert_eq!(num_buckets_deleted, buckets.len()); +} + +#[test] +fn given_deleted_buckets_when_get_all_buckets_then_return_empty() { + let context = TestContext::new(); + let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); + given_buckets(connection); + let _ = queries::buckets::delete_all_buckets(connection).unwrap(); + + let buckets_returned = queries::buckets::get_all_buckets(connection).unwrap(); + + assert_eq!(buckets_returned.len(), 0); +} + +#[test] +fn given_buckets_when_get_all_ids_then_return_all_ids() { + let context = TestContext::new(); + let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); + let buckets = given_buckets(connection); + + let ids = queries::buckets::get_all_bucket_ids(connection).unwrap(); + + assert_eq!(buckets.len(), ids.len()); + for bucket in &buckets { + assert!(ids.iter().any(|id| bucket.id == *id)); + } + for id in ids { + assert!(buckets.iter().any(|bucket| bucket.id == id)); + } +} |
