Browse Source

fixed tests

ignazio-bovo 3 years ago
parent
commit
4658b5ff77
2 changed files with 55 additions and 32 deletions
  1. 45 20
      runtime-modules/content/src/lib.rs
  2. 10 12
      runtime-modules/content/src/tests/channels.rs

+ 45 - 20
runtime-modules/content/src/lib.rs

@@ -636,8 +636,13 @@ decl_module! {
             let channel_id = NextChannelId::<T>::get();
 
             // atomically upload to storage and return the # of uploaded assets
-            let _num_assets_uploaded = params.assets.as_ref().map_or(0u64,|assets| Self::upload_assets_to_storage(assets, &channel_id, &sender));
-
+            if let Some(upload_assets) = params.assets.as_ref() {
+                Self::upload_assets_to_storage(
+                    upload_assets,
+                    &channel_id,
+                    &sender,
+                )?;
+            }
             //
             // == MUTATION SAFE ==
             //
@@ -680,10 +685,16 @@ decl_module! {
                 &channel.owner,
             )?;
 
-            let _num_assets_removed = Self::remove_assets_from_storage(&assets, &channel_id, &channel.deletion_prize_source_account_id);
+            Self::remove_assets_from_storage(&assets, &channel_id, &channel.deletion_prize_source_account_id)?;
 
             // atomically upload to storage and return the # of uploaded assets
-            let _num_assets_uploaded = params.assets.as_ref().map_or(0u64,|assets| Self::upload_assets_to_storage(assets, &channel_id, &channel.deletion_prize_source_account_id));
+            if let Some(upload_assets) = params.assets.as_ref() {
+                Self::upload_assets_to_storage(
+                    upload_assets,
+                    &channel_id,
+                    &channel.deletion_prize_source_account_id
+                )?;
+            }
 
             //
             // == MUTATION SAFE ==
@@ -702,7 +713,7 @@ decl_module! {
             Self::deposit_event(RawEvent::ChannelUpdated(actor, channel_id, channel, params));
         }
 
-            // extrinsics for channel deletion
+        // extrinsics for channel deletion
         #[weight = 10_000_000] // TODO: adjust weight
         pub fn delete_channel(
             origin,
@@ -723,11 +734,13 @@ decl_module! {
             // check that channel videos are 0
             ensure!(channel.num_videos == 0, Error::<T>::ChannelContainsVideos);
 
+
+            let dyn_bag = DynamicBagIdType::<T::MemberId, T::ChannelId>::Channel(channel_id);
+
             // remove specified assets from storage
-            let _num_assets_removed = Self::remove_assets_from_storage(&assets, &channel_id, &channel.deletion_prize_source_account_id);
+            Self::remove_assets_from_storage(&assets, &channel_id, &channel.deletion_prize_source_account_id)?;
 
             // delete channel dynamic bag
-            let dyn_bag = DynamicBagIdType::<T::MemberId, T::ChannelId>::Channel(channel_id);
             Storage::<T>::delete_dynamic_bag(
                 channel.deletion_prize_source_account_id,
                 dyn_bag
@@ -933,7 +946,13 @@ decl_module! {
             let video_id = NextVideoId::<T>::get();
 
             // atomically upload to storage and return the # of uploaded assets
-            let _num_assets_uploaded = params.assets.as_ref().map_or(0u64,|assets| Self::upload_assets_to_storage(assets, &channel_id, &channel.deletion_prize_source_account_id));
+            if let Some(upload_assets) = params.assets.as_ref() {
+                Self::upload_assets_to_storage(
+                    upload_assets,
+                    &channel_id,
+                    &channel.deletion_prize_source_account_id
+                )?;
+            }
 
             //
             // == MUTATION SAFE ==
@@ -984,10 +1003,16 @@ decl_module! {
                 &channel.owner,
             )?;
 
-            let _num_assets_removed = Self::remove_assets_from_storage(&assets, &channel_id, &channel.deletion_prize_source_account_id);
+            Self::remove_assets_from_storage(&assets, &channel_id, &channel.deletion_prize_source_account_id)?;
 
             // atomically upload to storage and return the # of uploaded assets
-            let _num_assets_uploaded = params.assets.as_ref().map_or(0u64,|assets| Self::upload_assets_to_storage(assets, &channel_id, &channel.deletion_prize_source_account_id));
+            if let Some(upload_assets) = params.assets.as_ref() {
+                Self::upload_assets_to_storage(
+                    upload_assets,
+                    &channel_id,
+                    &channel.deletion_prize_source_account_id
+                )?;
+            }
 
             //
             // == MUTATION SAFE ==
@@ -1023,7 +1048,7 @@ decl_module! {
             Self::ensure_video_can_be_removed(&video)?;
 
             // remove assets from storage if any
-            let _num_assets_removed = Self::remove_assets_from_storage(&assets, &channel_id, &channel.deletion_prize_source_account_id);
+            Self::remove_assets_from_storage(&assets, &channel_id, &channel.deletion_prize_source_account_id)?;
 
             //
             // == MUTATION SAFE ==
@@ -1378,31 +1403,31 @@ impl<T: Trait> Module<T> {
         assets: &StorageAssets<T>,
         channel_id: &T::ChannelId,
         prize_source_account: &T::AccountId,
-    ) -> u64 {
+    ) -> DispatchResult {
         // construct upload params
         let upload_params =
             Self::pick_upload_parameters_from_assets(assets, channel_id, prize_source_account);
 
         // attempt to upload objects att
-        Storage::<T>::upload_data_objects(upload_params.clone())
-            .map_or(0u64, |_| upload_params.object_creation_list.len() as u64)
+        Storage::<T>::upload_data_objects(upload_params.clone())?;
+
+        Ok(())
     }
 
     fn remove_assets_from_storage(
         assets: &BTreeSet<<T as storage::Trait>::DataObjectId>,
         channel_id: &T::ChannelId,
         prize_source_account: &T::AccountId,
-    ) -> u64 {
+    ) -> DispatchResult {
         // remove assets if any
-        match assets.len() > 0 {
-            false => 0u64,
-            true => Storage::<T>::delete_data_objects(
+        if assets.len() > 0 {
+            Storage::<T>::delete_data_objects(
                 prize_source_account.clone(),
                 Self::bag_id_for_channel(&channel_id),
                 assets.clone(),
-            )
-            .map_or(0u64, |_| assets.len() as u64),
+            )?;
         }
+        Ok(())
     }
 }
 

+ 10 - 12
runtime-modules/content/src/tests/channels.rs

@@ -18,7 +18,8 @@ fn successful_channel_deletion() {
             <Test as balances::Trait>::Balance::from(100u32),
         );
 
-        // 3 assets
+        // 3 assets added at creation
+        let first_obj_id = Storage::<Test>::next_data_object_id();
         let assets = StorageAssetsRecord {
             object_creation_list: vec![
                 DataObjectCreationParameters {
@@ -36,7 +37,6 @@ fn successful_channel_deletion() {
             ],
             expected_data_size_fee: storage::DataObjectPerMegabyteFee::<Test>::get(),
         };
-
         let channel_id = NextChannelId::<Test>::get();
 
         // create channel
@@ -45,13 +45,17 @@ fn successful_channel_deletion() {
             ContentActor::Member(FIRST_MEMBER_ID),
             ChannelCreationParametersRecord {
                 assets: Some(assets),
-                meta: Some(vec![]),
+                meta: None,
                 reward_account: None,
             },
             Ok(()),
         );
 
-        // attempt to delete channel with non zero assets
+        // retrieve objs id set
+        let obj_ids =
+            (first_obj_id..Storage::<Test>::next_data_object_id()).collect::<BTreeSet<_>>();
+
+        // attempt to delete channel with non zero assets should result in error
         delete_channel_mock(
             FIRST_MEMBER_ORIGIN,
             ContentActor::Member(FIRST_MEMBER_ID),
@@ -60,18 +64,12 @@ fn successful_channel_deletion() {
             Err(storage::Error::<Test>::CannotDeleteNonEmptyDynamicBag.into()),
         );
 
-        // delete assets
-        let assets_to_delete = [0u64, 1u64, 2u64]
-            .iter()
-            .map(|&x| x)
-            .collect::<BTreeSet<_>>();
-
-        // successful deletion
+        // successful deletion because we empty the bag first
         delete_channel_mock(
             FIRST_MEMBER_ORIGIN,
             ContentActor::Member(FIRST_MEMBER_ID),
             channel_id,
-            assets_to_delete,
+            obj_ids,
             Ok(()),
         );
     })