]> Untitled Git - bdk/commitdiff
test(file_store): add construction method tests
author志宇 <hello@evanlinjin.me>
Mon, 30 Oct 2023 10:02:44 +0000 (18:02 +0800)
committer志宇 <hello@evanlinjin.me>
Wed, 15 Nov 2023 23:07:48 +0000 (07:07 +0800)
crates/file_store/src/store.rs

index 22e8b39d68610e9f79c9992050b32577635bd741..8af10cbd0e961190ba21e19f943caa17d6ae2590 100644 (file)
@@ -216,6 +216,44 @@ mod test {
     #[derive(Debug)]
     struct TestTracker;
 
+    /// Check behavior of [`Store::create_new`] and [`Store::open`].
+    #[test]
+    fn construct_store() {
+        let temp_dir = tempfile::tempdir().unwrap();
+        let file_path = temp_dir.path().join("db_file");
+        let _ = Store::<TestChangeSet>::open(&TEST_MAGIC_BYTES, &file_path)
+            .expect_err("must not open as file does not exist yet");
+        let _ = Store::<TestChangeSet>::create_new(&TEST_MAGIC_BYTES, &file_path)
+            .expect("must create file");
+        // cannot create new as file already exists
+        let _ = Store::<TestChangeSet>::create_new(&TEST_MAGIC_BYTES, &file_path)
+            .expect_err("must fail as file already exists now");
+        let _ = Store::<TestChangeSet>::open(&TEST_MAGIC_BYTES, &file_path)
+            .expect("must open as file exists now");
+    }
+
+    #[test]
+    fn open_or_create_new() {
+        let temp_dir = tempfile::tempdir().unwrap();
+        let file_path = temp_dir.path().join("db_file");
+        let changeset = vec!["hello".to_string(), "world".to_string()];
+
+        {
+            let mut db = Store::<TestChangeSet>::open_or_create_new(&TEST_MAGIC_BYTES, &file_path)
+                .expect("must create");
+            assert!(file_path.exists());
+            db.append_changeset(&changeset).expect("must succeed");
+        }
+
+        {
+            let mut db = Store::<TestChangeSet>::open_or_create_new(&TEST_MAGIC_BYTES, &file_path)
+                .expect("must recover");
+            let (recovered_changeset, r) = db.aggregate_changesets();
+            r.expect("must succeed");
+            assert_eq!(recovered_changeset, changeset);
+        }
+    }
+
     #[test]
     fn is_empty() {
         let mut file = NamedTempFile::new().unwrap();