summaryrefslogtreecommitdiff
path: root/schist_core/schist_queries/tests/buckets.rs
diff options
context:
space:
mode:
Diffstat (limited to 'schist_core/schist_queries/tests/buckets.rs')
-rw-r--r--schist_core/schist_queries/tests/buckets.rs83
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));
+ }
+}