Kaynağa Gözat

content runtime module: tests

Mokhtar Naamani 4 yıl önce
ebeveyn
işleme
d6caa47b5b

+ 0 - 3
runtime-modules/content/src/errors.rs

@@ -10,9 +10,6 @@ decl_error! {
         // Curator Management Errors
         // -------------------------
 
-        /// Curator group can`t be removed
-        CuratorGroupRemovalForbidden,
-
         /// Curator under provided curator id is not a member of curaror group under given id
         CuratorIsNotAMemberOfGivenCuratorGroup,
 

+ 2 - 19
runtime-modules/content/src/tests/channels.rs

@@ -1,27 +1,10 @@
 #![cfg(test)]
 
+use super::curators;
 use super::mock::*;
 use crate::*;
 use frame_support::{assert_err, assert_ok};
 
-fn add_curator_to_new_group(curator_id: CuratorId) -> CuratorGroupId {
-    let curator_group_id = Content::next_curator_group_id();
-    // create new group and add curator id to it
-    assert_ok!(Content::create_curator_group(Origin::signed(LEAD_ORIGIN)));
-    assert_ok!(Content::add_curator_to_group(
-        Origin::signed(LEAD_ORIGIN),
-        curator_group_id,
-        curator_id
-    ));
-    // make group active
-    assert_ok!(Content::set_curator_group_status(
-        Origin::signed(LEAD_ORIGIN),
-        curator_group_id,
-        true
-    ));
-    curator_group_id
-}
-
 #[test]
 fn lead_cannot_create_channel() {
     with_default_mock_builder(|| {
@@ -57,7 +40,7 @@ fn curators_can_create_channel() {
             Error::<Test>::CuratorGroupIsNotActive
         );
 
-        let group_id = add_curator_to_new_group(FIRST_CURATOR_ID);
+        let group_id = curators::add_curator_to_new_group(FIRST_CURATOR_ID);
         assert_eq!(FIRST_CURATOR_GROUP_ID, group_id);
 
         // Curator from wrong group

+ 118 - 0
runtime-modules/content/src/tests/curators.rs

@@ -0,0 +1,118 @@
+#![cfg(test)]
+
+use super::mock::*;
+use crate::*;
+use frame_support::{assert_err, assert_ok};
+
+pub fn add_curator_to_new_group(curator_id: CuratorId) -> CuratorGroupId {
+    let curator_group_id = Content::next_curator_group_id();
+    // create new group and add curator id to it
+    assert_ok!(Content::create_curator_group(Origin::signed(LEAD_ORIGIN)));
+    assert_ok!(Content::add_curator_to_group(
+        Origin::signed(LEAD_ORIGIN),
+        curator_group_id,
+        curator_id
+    ));
+    // make group active
+    assert_ok!(Content::set_curator_group_status(
+        Origin::signed(LEAD_ORIGIN),
+        curator_group_id,
+        true
+    ));
+    curator_group_id
+}
+
+#[test]
+fn curator_group_management() {
+    with_default_mock_builder(|| {
+        // Run to block one to see emitted events
+        run_to_block(1);
+
+        let curator_group_id = Content::next_curator_group_id();
+        assert_ok!(Content::create_curator_group(Origin::signed(LEAD_ORIGIN)));
+
+        assert_eq!(
+            System::events().last().unwrap().event,
+            MetaEvent::content(RawEvent::CuratorGroupCreated(curator_group_id))
+        );
+
+        let group = Content::curator_group_by_id(curator_group_id);
+
+        // By default group is empty and not active
+        assert_eq!(group.is_active(), false);
+        assert_eq!(group.get_curators().len(), 0);
+
+        // Activate group
+        assert_ok!(Content::set_curator_group_status(
+            Origin::signed(LEAD_ORIGIN),
+            curator_group_id,
+            true
+        ));
+
+        assert_eq!(
+            System::events().last().unwrap().event,
+            MetaEvent::content(RawEvent::CuratorGroupStatusSet(curator_group_id, true))
+        );
+
+        let group = Content::curator_group_by_id(curator_group_id);
+        assert_eq!(group.is_active(), true);
+
+        // Add curator to group
+        assert_err!(
+            Content::add_curator_to_group(
+                Origin::signed(LEAD_ORIGIN),
+                curator_group_id,
+                MEMBERS_COUNT + 1 // not a curator
+            ),
+            Error::<Test>::CuratorIdInvalid
+        );
+
+        assert_ok!(Content::add_curator_to_group(
+            Origin::signed(LEAD_ORIGIN),
+            curator_group_id,
+            FIRST_CURATOR_ID
+        ));
+
+        assert_eq!(
+            System::events().last().unwrap().event,
+            MetaEvent::content(RawEvent::CuratorAdded(curator_group_id, FIRST_CURATOR_ID))
+        );
+
+        // Ensure curator is in group
+        let group = Content::curator_group_by_id(curator_group_id);
+        assert!(group.has_curator(&FIRST_CURATOR_ID));
+
+        assert_err!(
+            Content::add_curator_to_group(
+                Origin::signed(LEAD_ORIGIN),
+                curator_group_id,
+                FIRST_CURATOR_ID
+            ),
+            Error::<Test>::CuratorIsAlreadyAMemberOfGivenCuratorGroup
+        );
+
+        // Remove curator from group
+        assert_err!(
+            Content::remove_curator_from_group(
+                Origin::signed(LEAD_ORIGIN),
+                curator_group_id,
+                MEMBERS_COUNT + 1 // not a curator
+            ),
+            Error::<Test>::CuratorIsNotAMemberOfGivenCuratorGroup
+        );
+
+        assert_ok!(Content::remove_curator_from_group(
+            Origin::signed(LEAD_ORIGIN),
+            curator_group_id,
+            FIRST_CURATOR_ID
+        ));
+
+        assert_eq!(
+            System::events().last().unwrap().event,
+            MetaEvent::content(RawEvent::CuratorRemoved(curator_group_id, FIRST_CURATOR_ID))
+        );
+
+        let group = Content::curator_group_by_id(curator_group_id);
+        assert!(!group.has_curator(&FIRST_CURATOR_ID));
+    })
+}

+ 11 - 2
runtime-modules/content/src/tests/mock.rs

@@ -2,8 +2,7 @@
 
 use crate::*;
 
-// use frame_support::storage::StorageMap;
-// use frame_support::traits::{OnFinalize, OnInitialize};
+use frame_support::traits::{OnFinalize, OnInitialize};
 use frame_support::{impl_outer_event, impl_outer_origin, parameter_types};
 use sp_core::H256;
 use sp_runtime::{
@@ -294,3 +293,13 @@ impl ExtBuilder {
 pub fn with_default_mock_builder<R, F: FnOnce() -> R>(f: F) -> R {
     ExtBuilder::default().build().execute_with(|| f())
 }
+
+// Recommendation from Parity on testing on_finalize
+// https://substrate.dev/docs/en/next/development/module/tests
+pub fn run_to_block(n: u64) {
+    while System::block_number() < n {
+        <System as OnFinalize<u64>>::on_finalize(System::block_number());
+        System::set_block_number(System::block_number() + 1);
+        <System as OnInitialize<u64>>::on_initialize(System::block_number());
+    }
+}

+ 1 - 0
runtime-modules/content/src/tests/mod.rs

@@ -1,4 +1,5 @@
 #![cfg(test)]
 
 mod channels;
+mod curators;
 mod mock;