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 { 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)); } }