Jelajahi Sumber

Storage: delete_content coverage added

iorveth 4 tahun lalu
induk
melakukan
67af4e664d

+ 3 - 3
runtime-modules/storage/src/data_directory.rs

@@ -226,7 +226,7 @@ impl Quota {
     pub fn release_quota(self, voucher: Voucher) -> Self {
         Self {
             size_used: self.size_used - voucher.size,
-            objects_used: self.objects_used - voucher.objects,
+            // objects_used: self.objects_used - voucher.objects,
             ..self
         }
     }
@@ -627,7 +627,7 @@ impl<T: Trait> Module<T> {
         <Quotas<T>>::insert(owner, owner_quota.fill_quota(upload_voucher));
 
         // Update global quota
-        <GlobalQuota>::mutate(|global_quota| global_quota.fill_quota(upload_voucher));
+        <GlobalQuota>::put(Self::global_quota().fill_quota(upload_voucher));
     }
 
     // Complete content removal
@@ -648,7 +648,7 @@ impl<T: Trait> Module<T> {
         });
 
         // Update global quota
-        <GlobalQuota>::mutate(|global_quota| global_quota.release_quota(removal_voucher));
+        <GlobalQuota>::put(Self::global_quota().release_quota(removal_voucher));
     }
 
     fn ensure_content_is_valid(

+ 78 - 0
runtime-modules/storage/src/tests/data_directory.rs

@@ -196,6 +196,84 @@ fn add_content_global_objects_limit_reached() {
         });
 }
 
+#[test]
+fn delete_content() {
+    with_default_mock_builder(|| {
+        let sender = 1u64;
+
+        let owner = StorageObjectOwner::Member(1u64);
+
+        let content_id = 1;
+
+        let content_parameters = ContentParameters {
+            content_id,
+            type_id: 1234,
+            size: 1,
+            ipfs_content_id: vec![1, 2, 3, 4],
+        };
+
+        // Register a content with 1234 bytes of type 1, which should be recognized.
+        
+        TestDataDirectory::add_content(Origin::signed(sender), owner.clone(), vec![content_parameters]).unwrap();
+
+        let res = TestDataDirectory::remove_content(Origin::signed(sender),  owner, vec![content_id]);
+
+        assert!(res.is_ok());
+    });
+}
+
+#[test]
+fn delete_content_id_not_found() {
+    with_default_mock_builder(|| {
+        let sender = 1u64;
+
+        let content_id = 1;
+
+        let owner = StorageObjectOwner::Member(1u64);
+
+        // Make an attempt to remove content under non existent id
+        let res = TestDataDirectory::remove_content(Origin::signed(sender),  owner, vec![content_id]);
+
+        assert_eq!(
+            res,
+            Err(Error::<Test>::CidNotFound.into())
+        );
+    });
+}
+
+#[test]
+fn delete_content_owners_are_not_equal() {
+    with_default_mock_builder(|| {
+        let sender = 1u64;
+
+        let owner = StorageObjectOwner::Member(1u64);
+
+        let second_owner = StorageObjectOwner::Member(10u64);
+
+        let content_id = 1;
+
+        let content_parameters = ContentParameters {
+            content_id,
+            type_id: 1234,
+            size: 1,
+            ipfs_content_id: vec![1, 2, 3, 4],
+        };
+
+        // Register a content with 1234 bytes of type 1, which should be recognized.
+        
+        TestDataDirectory::add_content(Origin::signed(sender), owner.clone(), vec![content_parameters]).unwrap();
+
+        // Make an attempt to remove content, providing a wrong origin
+        let res = TestDataDirectory::remove_content(Origin::signed(sender),  second_owner, vec![content_id]);
+
+        assert_eq!(
+            res,
+            Err(Error::<Test>::OwnersAreNotEqual.into())
+        );
+    });
+}
+
+
 #[test]
 fn accept_and_reject_content_fail_with_invalid_storage_provider() {
     with_default_mock_builder(|| {