Browse Source

runtime: events: add extrinsic parameters

This commit includes the following modules:
* content-directory
* memo
* service-discovery
* storage
conectado 4 years ago
parent
commit
43414298ed
22 changed files with 304 additions and 99 deletions
  1. 136 35
      runtime-modules/content-directory/src/lib.rs
  2. 13 7
      runtime-modules/content-directory/src/mock.rs
  3. 3 0
      runtime-modules/content-directory/src/tests.rs
  4. 7 3
      runtime-modules/content-directory/src/tests/add_class_schema.rs
  5. 9 1
      runtime-modules/content-directory/src/tests/create_class.rs
  6. 5 2
      runtime-modules/content-directory/src/tests/create_entity.rs
  7. 3 1
      runtime-modules/content-directory/src/tests/insert_at_entity_property_vector.rs
  8. 1 0
      runtime-modules/content-directory/src/tests/remove_at_entity_property_vector.rs
  9. 3 2
      runtime-modules/content-directory/src/tests/transaction.rs
  10. 7 3
      runtime-modules/content-directory/src/tests/transfer_entity_ownership.rs
  11. 9 4
      runtime-modules/content-directory/src/tests/update_class_permissions.rs
  12. 12 6
      runtime-modules/content-directory/src/tests/update_entity_creation_voucher.rs
  13. 5 2
      runtime-modules/content-directory/src/tests/update_entity_permissions.rs
  14. 8 4
      runtime-modules/content-directory/src/tests/update_entity_property_values.rs
  15. 3 3
      runtime-modules/memo/src/lib.rs
  16. 17 2
      runtime-modules/service-discovery/src/lib.rs
  17. 14 4
      runtime-modules/storage/src/data_directory.rs
  18. 9 2
      runtime-modules/storage/src/data_object_storage_registry.rs
  19. 16 7
      runtime-modules/storage/src/data_object_type_registry.rs
  20. 14 4
      runtime-modules/storage/src/tests/data_directory.rs
  21. 3 1
      runtime-modules/storage/src/tests/data_object_storage_registry.rs
  22. 7 6
      runtime-modules/storage/src/tests/data_object_type_registry.rs

+ 136 - 35
runtime-modules/content-directory/src/lib.rs

@@ -534,7 +534,7 @@ decl_module! {
                 <EntityCreationVouchers<T>>::insert(class_id, controller.clone(), entity_creation_voucher.clone());
 
                 // Trigger event
-                Self::deposit_event(RawEvent::EntityCreationVoucherUpdated(controller, entity_creation_voucher))
+                Self::deposit_event(RawEvent::EntityCreationVoucherUpdated(controller, entity_creation_voucher, class_id))
             } else {
                 // Create new EntityCreationVoucher instance with provided maximum_entities_count
                 let entity_creation_voucher = EntityCreationVoucher::new(maximum_entities_count);
@@ -544,7 +544,7 @@ decl_module! {
                 <EntityCreationVouchers<T>>::insert(class_id, controller.clone(), entity_creation_voucher.clone());
 
                 // Trigger event
-                Self::deposit_event(RawEvent::EntityCreationVoucherCreated(controller, entity_creation_voucher));
+                Self::deposit_event(RawEvent::EntityCreationVoucherCreated(controller, entity_creation_voucher, class_id));
             }
 
             Ok(())
@@ -586,7 +586,11 @@ decl_module! {
 
             // Create new Class instance from provided values
             let class = Class::new(
-                class_permissions, name, description, maximum_entities_count, default_entity_creation_voucher_upper_bound
+                class_permissions.clone(),
+                name.clone(),
+                description.clone(),
+                maximum_entities_count,
+                default_entity_creation_voucher_upper_bound
             );
 
             let class_id = Self::next_class_id();
@@ -598,7 +602,14 @@ decl_module! {
             <NextClassId<T>>::mutate(|n| *n += T::ClassId::one());
 
             // Trigger event
-            Self::deposit_event(RawEvent::ClassCreated(class_id));
+            Self::deposit_event(RawEvent::ClassCreated(
+                    class_id,
+                    name,
+                    description,
+                    class_permissions,
+                    maximum_entities_count,
+                    default_entity_creation_voucher_upper_bound
+                ));
             Ok(())
         }
 
@@ -711,7 +722,7 @@ decl_module! {
             // Make updated class_permissions from parameters provided
             let updated_class_permissions = Self::make_updated_class_permissions(
                 &class_permissions, updated_any_member, updated_entity_creation_blocked,
-                updated_all_entity_property_values_locked, updated_maintainers
+                updated_all_entity_property_values_locked, updated_maintainers.clone()
             );
 
             // If class_permissions update has been performed
@@ -735,7 +746,13 @@ decl_module! {
                 });
 
                 // Trigger event
-                Self::deposit_event(RawEvent::ClassPermissionsUpdated(class_id));
+                Self::deposit_event(RawEvent::ClassPermissionsUpdated(
+                        class_id,
+                        updated_any_member,
+                        updated_entity_creation_blocked,
+                        updated_all_entity_property_values_locked,
+                        updated_maintainers
+                    ));
             }
 
             Ok(())
@@ -784,10 +801,17 @@ decl_module! {
             //
 
             // Create `Schema` instance from existing and new property ids
-            let schema = Self::create_class_schema(existing_properties, &class_properties, &new_properties);
+            let schema = Self::create_class_schema(
+                existing_properties.clone(),
+                &class_properties,
+                &new_properties
+            );
 
             // Update class properties after new `Schema` added
-            let updated_class_properties = Self::make_updated_class_properties(class_properties, new_properties);
+            let updated_class_properties = Self::make_updated_class_properties(
+                class_properties,
+                new_properties.clone()
+            );
 
             // Update Class properties and schemas
             <ClassById<T>>::mutate(class_id, |class| {
@@ -796,7 +820,12 @@ decl_module! {
             });
 
             // Trigger event
-            Self::deposit_event(RawEvent::ClassSchemaAdded(class_id, schema_id));
+            Self::deposit_event(RawEvent::ClassSchemaAdded(
+                    class_id,
+                    schema_id,
+                    existing_properties,
+                    new_properties
+                ));
 
             Ok(())
         }
@@ -866,7 +895,11 @@ decl_module! {
                 });
 
                 // Trigger event
-                Self::deposit_event(RawEvent::EntityPermissionsUpdated(entity_id));
+                Self::deposit_event(RawEvent::EntityPermissionsUpdated(
+                        entity_id,
+                        updated_frozen,
+                        updated_referenceable
+                    ));
             }
             Ok(())
         }
@@ -939,7 +972,7 @@ decl_module! {
                 new_values_for_existing_properties, &new_controller
             )?;
 
-            let new_output_property_value_references_with_same_owner_flag_set = Self::make_output_property_values(new_property_value_references_with_same_owner_flag_set);
+            let new_output_property_value_references_with_same_owner_flag_set = Self::make_output_property_values(new_property_value_references_with_same_owner_flag_set.clone());
 
             // Compute StoredPropertyValues, which respective Properties have unique flag set
             // (skip PropertyIds, which respective property values under this Entity are default and non required)
@@ -1006,7 +1039,12 @@ decl_module! {
             };
 
             // Trigger event
-            Self::deposit_event(RawEvent::EntityOwnershipTransfered(entity_id, new_controller, entities_inbound_rcs_delta));
+            Self::deposit_event(RawEvent::EntityOwnershipTransfered(
+                    entity_id,
+                    new_controller,
+                    entities_inbound_rcs_delta,
+                    new_property_value_references_with_same_owner_flag_set
+                ));
 
             Ok(())
         }
@@ -1098,7 +1136,7 @@ decl_module! {
             });
 
             // Trigger event
-            Self::deposit_event(RawEvent::EntityCreated(actor, entity_id));
+            Self::deposit_event(RawEvent::EntityCreated(actor, entity_id, class_id));
             Ok(())
         }
 
@@ -1220,7 +1258,8 @@ decl_module! {
 
             let entity_property_values = entity.get_values();
 
-            let new_output_property_values = Self::make_output_property_values(new_property_values);
+            let new_output_property_values =
+                Self::make_output_property_values(new_property_values.clone());
 
             // Compute updated entity values, after new schema support added
             let entity_values_updated = Self::make_updated_entity_property_values(
@@ -1264,7 +1303,13 @@ decl_module! {
             });
 
             // Trigger event
-            Self::deposit_event(RawEvent::EntitySchemaSupportAdded(actor, entity_id, schema_id, entities_inbound_rcs_delta));
+            Self::deposit_event(RawEvent::EntitySchemaSupportAdded(
+                    actor,
+                    entity_id,
+                    schema_id,
+                    entities_inbound_rcs_delta,
+                    new_property_values
+                ));
             Ok(())
         }
 
@@ -1314,7 +1359,7 @@ decl_module! {
 
             let entity_property_values = entity.get_values();
 
-            let new_output_property_values = Self::make_output_property_values(new_property_values);
+            let new_output_property_values = Self::make_output_property_values(new_property_values.clone());
 
             // Compute StoredPropertyValues, which respective Properties have unique flag set
             // (skip PropertyIds, which respective property values under this Entity are default and non required)
@@ -1361,7 +1406,12 @@ decl_module! {
                 });
 
                 // Trigger event
-                Self::deposit_event(RawEvent::EntityPropertyValuesUpdated(actor, entity_id, entities_inbound_rcs_delta));
+                Self::deposit_event(RawEvent::EntityPropertyValuesUpdated(
+                        actor,
+                        entity_id,
+                        entities_inbound_rcs_delta,
+                        new_property_values
+                    ));
             }
 
             Ok(())
@@ -1543,7 +1593,7 @@ decl_module! {
             Self::deposit_event(
                 RawEvent::RemovedAtVectorIndex(
                     actor, entity_id, in_class_schema_property_id, index_in_property_vector,
-                    nonce + T::Nonce::one(), involved_entity_and_side_effect
+                    nonce + T::Nonce::one(), involved_entity_and_side_effect, nonce,
                 )
             );
 
@@ -1599,7 +1649,7 @@ decl_module! {
             // Insert SingleInputPropertyValue at in_class_schema_property_id into property value vector
             // Get VecInputPropertyValue wrapped in InputPropertyValue
             let property_value_vector_updated = Self::insert_at_index_in_property_vector(
-                property_value_vector.clone(), index_in_property_vector, value
+                property_value_vector.clone(), index_in_property_vector, value.clone()
             );
 
             let class_id = entity.get_class_id();
@@ -1653,7 +1703,7 @@ decl_module! {
             Self::deposit_event(
                 RawEvent::InsertedAtVectorIndex(
                     actor, entity_id, in_class_schema_property_id, index_in_property_vector,
-                    nonce + T::Nonce::one(), involved_entity_and_side_effect
+                    nonce + T::Nonce::one(), involved_entity_and_side_effect, value, nonce
                 )
             );
 
@@ -1677,7 +1727,7 @@ decl_module! {
            // Create raw origin
            let raw_origin = origin.into().map_err(|_| Error::<T>::OriginCanNotBeMadeIntoRawOrigin)?;
 
-           for (index, operation_type) in operations.into_iter().enumerate() {
+           for (index, operation_type) in operations.clone().into_iter().enumerate() {
                let origin = T::Origin::from(raw_origin.clone());
                match operation_type {
                    OperationType::CreateEntity(create_entity_operation) => {
@@ -1746,7 +1796,7 @@ decl_module! {
            }
 
            // Trigger event
-           Self::deposit_event(RawEvent::TransactionCompleted(actor));
+           Self::deposit_event(RawEvent::TransactionCompleted(actor, operations));
 
            Ok(())
        }
@@ -2914,6 +2964,11 @@ decl_event!(
         SideEffects = Option<ReferenceCounterSideEffects<T>>,
         SideEffect = Option<(<T as Trait>::EntityId, EntityReferenceCounterSideEffect)>,
         FailedAt = u32,
+        ClassPermissions = ClassPermissions<<T as Trait>::CuratorGroupId>,
+        Property = Property<<T as Trait>::ClassId>,
+        InputPropertyValue = InputPropertyValue<T>,
+        InputValue = InputValue<T>,
+        OperationType = OperationType<T>,
     {
         CuratorGroupAdded(CuratorGroupId),
         CuratorGroupRemoved(CuratorGroupId),
@@ -2922,22 +2977,68 @@ decl_event!(
         CuratorRemoved(CuratorGroupId, CuratorId),
         MaintainerAdded(ClassId, CuratorGroupId),
         MaintainerRemoved(ClassId, CuratorGroupId),
-        EntityCreationVoucherUpdated(EntityController, EntityCreationVoucher),
-        EntityCreationVoucherCreated(EntityController, EntityCreationVoucher),
-        ClassCreated(ClassId),
-        ClassPermissionsUpdated(ClassId),
-        ClassSchemaAdded(ClassId, SchemaId),
+        EntityCreationVoucherUpdated(EntityController, EntityCreationVoucher, ClassId),
+        EntityCreationVoucherCreated(EntityController, EntityCreationVoucher, ClassId),
+        ClassCreated(
+            ClassId,
+            Vec<u8>,
+            Vec<u8>,
+            ClassPermissions,
+            EntityId,
+            EntityId,
+        ),
+        ClassPermissionsUpdated(
+            ClassId,
+            Option<bool>,
+            Option<bool>,
+            Option<bool>,
+            Option<BTreeSet<CuratorGroupId>>,
+        ),
+        ClassSchemaAdded(ClassId, SchemaId, BTreeSet<PropertyId>, Vec<Property>),
         ClassSchemaStatusUpdated(ClassId, SchemaId, Status),
-        EntityPermissionsUpdated(EntityId),
-        EntityCreated(Actor, EntityId),
+        EntityPermissionsUpdated(EntityId, Option<bool>, Option<bool>),
+        EntityCreated(Actor, EntityId, ClassId),
         EntityRemoved(Actor, EntityId),
-        EntitySchemaSupportAdded(Actor, EntityId, SchemaId, SideEffects),
-        EntityPropertyValuesUpdated(Actor, EntityId, SideEffects),
+        EntitySchemaSupportAdded(
+            Actor,
+            EntityId,
+            SchemaId,
+            SideEffects,
+            BTreeMap<PropertyId, InputPropertyValue>,
+        ),
+        EntityPropertyValuesUpdated(
+            Actor,
+            EntityId,
+            SideEffects,
+            BTreeMap<PropertyId, InputPropertyValue>,
+        ),
         VectorCleared(Actor, EntityId, PropertyId, SideEffects),
-        RemovedAtVectorIndex(Actor, EntityId, PropertyId, VecMaxLength, Nonce, SideEffect),
-        InsertedAtVectorIndex(Actor, EntityId, PropertyId, VecMaxLength, Nonce, SideEffect),
-        EntityOwnershipTransfered(EntityId, EntityController, SideEffects),
-        TransactionCompleted(Actor),
+        RemovedAtVectorIndex(
+            Actor,
+            EntityId,
+            PropertyId,
+            VecMaxLength,
+            Nonce,
+            SideEffect,
+            Nonce,
+        ),
+        InsertedAtVectorIndex(
+            Actor,
+            EntityId,
+            PropertyId,
+            VecMaxLength,
+            Nonce,
+            SideEffect,
+            InputValue,
+            Nonce,
+        ),
+        EntityOwnershipTransfered(
+            EntityId,
+            EntityController,
+            SideEffects,
+            BTreeMap<PropertyId, InputPropertyValue>,
+        ),
+        TransactionCompleted(Actor, Vec<OperationType>),
         TransactionFailed(Actor, FailedAt),
     }
 );

+ 13 - 7
runtime-modules/content-directory/src/mock.rs

@@ -465,6 +465,11 @@ type RawTestEvent = RawEvent<
     Option<ReferenceCounterSideEffects<Runtime>>,
     Option<(EntityId, EntityReferenceCounterSideEffect)>,
     u32,
+    ClassPermissions<CuratorGroupId>,
+    Property<ClassId>,
+    InputPropertyValue<Runtime>,
+    InputValue<Runtime>,
+    OperationType<Runtime>,
 >;
 
 pub fn get_test_event(raw_event: RawTestEvent) -> TestEvent {
@@ -476,12 +481,7 @@ pub fn assert_event(tested_event: TestEvent, number_of_events_after_call: usize)
     assert_eq!(System::events().len(), number_of_events_after_call);
 
     // Ensure  last emitted event is equal to expected one
-    assert!(matches!(
-            System::events()
-                .iter()
-                .last(),
-            Some(last_event) if last_event.event == tested_event
-    ));
+    assert_eq!(System::events().iter().last().unwrap().event, tested_event);
 }
 
 pub fn assert_failure(
@@ -557,7 +557,7 @@ pub enum ClassType {
     CuratorGroupDoesNotExist,
 }
 
-pub fn create_simple_class(lead_origin: u64, class_type: ClassType) -> DispatchResult {
+pub fn get_class_for(class_type: ClassType) -> Class<EntityId, ClassId, CuratorGroupId> {
     let mut class = create_class_with_default_permissions();
     match class_type {
         ClassType::Valid => (),
@@ -606,6 +606,12 @@ pub fn create_simple_class(lead_origin: u64, class_type: ClassType) -> DispatchR
             class.get_permissions_mut().set_maintainers(maintainers);
         }
     };
+
+    class
+}
+
+pub fn create_simple_class(lead_origin: u64, class_type: ClassType) -> DispatchResult {
+    let class = get_class_for(class_type);
     TestModule::create_class(
         Origin::signed(lead_origin),
         class.get_name().to_owned(),

+ 3 - 0
runtime-modules/content-directory/src/tests.rs

@@ -118,6 +118,8 @@ pub fn add_entity_schemas_support() -> (
         second_schema_property_values.clone()
     ));
 
+    let second_schema_property_value_original = second_schema_property_values.clone();
+
     // Update supported schemas set and properties of first entity
     *first_entity.get_supported_schemas_mut() =
         BTreeSet::from_iter(vec![FIRST_SCHEMA_ID, SECOND_SCHEMA_ID].into_iter());
@@ -142,6 +144,7 @@ pub fn add_entity_schemas_support() -> (
         FIRST_ENTITY_ID,
         SECOND_SCHEMA_ID,
         Some(side_effects),
+        second_schema_property_value_original,
     ));
 
     // Last event checked

+ 7 - 3
runtime-modules/content-directory/src/tests/add_class_schema.rs

@@ -38,7 +38,7 @@ fn add_class_schema_success() {
         // Ensure class schemas added succesfully
         let mut class = create_class_with_default_permissions();
 
-        class.set_properties(vec![first_property, second_property]);
+        class.set_properties(vec![first_property.clone(), second_property.clone()]);
         *class.get_schemas_mut() = vec![
             Schema::new(BTreeSet::from_iter(vec![FIRST_PROPERTY_ID].into_iter())),
             Schema::new(BTreeSet::from_iter(
@@ -48,8 +48,12 @@ fn add_class_schema_success() {
 
         assert_eq!(class_by_id(FIRST_CLASS_ID), class);
 
-        let class_schema_added_event =
-            get_test_event(RawEvent::ClassSchemaAdded(FIRST_CLASS_ID, SECOND_SCHEMA_ID));
+        let class_schema_added_event = get_test_event(RawEvent::ClassSchemaAdded(
+            FIRST_CLASS_ID,
+            SECOND_SCHEMA_ID,
+            BTreeSet::from_iter(vec![FIRST_PROPERTY_ID].into_iter()),
+            vec![second_property],
+        ));
 
         // Last event checked
         assert_event(class_schema_added_event, number_of_events_before_call + 2);

+ 9 - 1
runtime-modules/content-directory/src/tests/create_class.rs

@@ -20,7 +20,15 @@ fn create_class_success() {
         let default_class = create_class_with_default_permissions();
         assert_eq!(class_by_id(FIRST_CLASS_ID), default_class);
 
-        let class_created_event = get_test_event(RawEvent::ClassCreated(FIRST_CLASS_ID));
+        let class = get_class_for(ClassType::Valid);
+        let class_created_event = get_test_event(RawEvent::ClassCreated(
+            FIRST_CLASS_ID,
+            class.get_name().to_owned(),
+            class.get_description().to_owned(),
+            class.get_permissions_ref().to_owned(),
+            class.get_maximum_entities_count(),
+            class.get_default_entity_creation_voucher_upper_bound(),
+        ));
 
         // Event checked
         assert_event(class_created_event, number_of_events_before_call + 1);

+ 5 - 2
runtime-modules/content-directory/src/tests/create_entity.rs

@@ -67,8 +67,11 @@ fn create_entity_success() {
         // Ensure `NextEntityId` storage value updated
         assert_eq!(next_entity_id(), SECOND_ENTITY_ID);
 
-        let entity_created_event =
-            get_test_event(RawEvent::EntityCreated(actor, next_entity_id() - 1));
+        let entity_created_event = get_test_event(RawEvent::EntityCreated(
+            actor,
+            next_entity_id() - 1,
+            FIRST_CLASS_ID,
+        ));
 
         // Last event checked
         assert_event(entity_created_event, number_of_events_before_call + 1);

+ 3 - 1
runtime-modules/content-directory/src/tests/insert_at_entity_property_vector.rs

@@ -25,7 +25,7 @@ fn insert_at_entity_property_vector_success() {
             FIRST_ENTITY_ID,
             SECOND_PROPERTY_ID,
             index_in_property_vector,
-            input_value,
+            input_value.clone(),
             nonce
         ));
 
@@ -61,6 +61,8 @@ fn insert_at_entity_property_vector_success() {
             index_in_property_vector,
             nonce + 1,
             Some((SECOND_ENTITY_ID, side_effect)),
+            input_value,
+            nonce,
         ));
 
         // Last event checked

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

@@ -56,6 +56,7 @@ fn remove_at_entity_property_vector_success() {
             index_in_property_vector,
             nonce + 1,
             Some((SECOND_ENTITY_ID, side_effect)),
+            nonce,
         ));
 
         // Last event checked

+ 3 - 2
runtime-modules/content-directory/src/tests/transaction.rs

@@ -58,11 +58,12 @@ fn transaction_success() {
         let operations_count = operations.len();
 
         // Complete transaction
-        assert_ok!(transaction(LEAD_ORIGIN, actor.clone(), operations));
+        assert_ok!(transaction(LEAD_ORIGIN, actor.clone(), operations.clone()));
 
         // Runtime tested state after call
 
-        let transaction_completed_event = get_test_event(RawEvent::TransactionCompleted(actor));
+        let transaction_completed_event =
+            get_test_event(RawEvent::TransactionCompleted(actor, operations));
 
         // Last event checked
         assert_event(

+ 7 - 3
runtime-modules/content-directory/src/tests/transfer_entity_ownership.rs

@@ -46,9 +46,13 @@ fn transfer_entity_ownership_success() {
             .get_permissions_ref()
             .controller_is_equal_to(&new_controller));
 
-        let entity_ownership_transfered_event = get_test_event(
-            RawEvent::EntityOwnershipTransfered(FIRST_ENTITY_ID, new_controller, None),
-        );
+        let entity_ownership_transfered_event =
+            get_test_event(RawEvent::EntityOwnershipTransfered(
+                FIRST_ENTITY_ID,
+                new_controller,
+                None,
+                BTreeMap::new(),
+            ));
 
         // Last event checked
         assert_event(

+ 9 - 4
runtime-modules/content-directory/src/tests/update_class_permissions.rs

@@ -55,7 +55,7 @@ fn update_class_permissions_success() {
 
         // Ensure class permissions updated succesfully
 
-        *class_permissions.get_maintainers_mut() = maintainers;
+        *class_permissions.get_maintainers_mut() = maintainers.clone();
         class_permissions.set_entity_creation_blocked(true);
 
         assert_eq!(
@@ -63,9 +63,6 @@ fn update_class_permissions_success() {
             class_permissions
         );
 
-        let class_permissions_updated_event =
-            get_test_event(RawEvent::ClassPermissionsUpdated(FIRST_CLASS_ID));
-
         // Ensure number of classes maintained by curator groups updated succesfully.
 
         assert_eq!(
@@ -102,6 +99,14 @@ fn update_class_permissions_success() {
             1
         );
 
+        let class_permissions_updated_event = get_test_event(RawEvent::ClassPermissionsUpdated(
+            FIRST_CLASS_ID,
+            None,
+            Some(true),
+            None,
+            Some(maintainers),
+        ));
+
         // Event checked
         assert_event(
             class_permissions_updated_event,

+ 12 - 6
runtime-modules/content-directory/src/tests/update_entity_creation_voucher.rs

@@ -35,9 +35,12 @@ fn create_entity_creation_voucher_success() {
             entity_voucher,
         );
 
-        let entity_creation_voucher_created_event = get_test_event(
-            RawEvent::EntityCreationVoucherCreated(entity_controller, entity_voucher),
-        );
+        let entity_creation_voucher_created_event =
+            get_test_event(RawEvent::EntityCreationVoucherCreated(
+                entity_controller,
+                entity_voucher,
+                FIRST_CLASS_ID,
+            ));
 
         // Last event checked
         assert_event(
@@ -96,9 +99,12 @@ fn update_entity_creation_voucher_success() {
             entity_creation_voucher
         );
 
-        let entity_creation_voucher_created_event = get_test_event(
-            RawEvent::EntityCreationVoucherUpdated(entity_controller, entity_creation_voucher),
-        );
+        let entity_creation_voucher_created_event =
+            get_test_event(RawEvent::EntityCreationVoucherUpdated(
+                entity_controller,
+                entity_creation_voucher,
+                FIRST_CLASS_ID,
+            ));
 
         // Last event checked
         assert_event(

+ 5 - 2
runtime-modules/content-directory/src/tests/update_entity_permissions.rs

@@ -39,8 +39,11 @@ fn update_entity_permissions_success() {
             entity_permissions
         );
 
-        let entity_permissions_updated_event =
-            get_test_event(RawEvent::EntityPermissionsUpdated(FIRST_ENTITY_ID));
+        let entity_permissions_updated_event = get_test_event(RawEvent::EntityPermissionsUpdated(
+            FIRST_ENTITY_ID,
+            None,
+            Some(false),
+        ));
 
         // Last event checked
         assert_event(

+ 8 - 4
runtime-modules/content-directory/src/tests/update_entity_property_values.rs

@@ -25,7 +25,7 @@ fn update_entity_property_values_success() {
             LEAD_ORIGIN,
             actor.clone(),
             FIRST_ENTITY_ID,
-            second_schema_new_property_values
+            second_schema_new_property_values.clone()
         ));
 
         // Runtime tested state after call
@@ -50,9 +50,13 @@ fn update_entity_property_values_success() {
         let mut side_effects = ReferenceCounterSideEffects::default();
         side_effects.insert(SECOND_ENTITY_ID, side_effect);
 
-        let entity_property_values_updated_event = get_test_event(
-            RawEvent::EntityPropertyValuesUpdated(actor, FIRST_ENTITY_ID, Some(side_effects)),
-        );
+        let entity_property_values_updated_event =
+            get_test_event(RawEvent::EntityPropertyValuesUpdated(
+                actor,
+                FIRST_ENTITY_ID,
+                Some(side_effects),
+                second_schema_new_property_values,
+            ));
 
         // Last event checked
         assert_event(

+ 3 - 3
runtime-modules/memo/src/lib.rs

@@ -22,7 +22,7 @@ decl_storage! {
 
 decl_event! {
     pub enum Event<T> where <T as frame_system::Trait>::AccountId {
-        MemoUpdated(AccountId),
+        MemoUpdated(AccountId, MemoText),
     }
 }
 
@@ -37,8 +37,8 @@ decl_module! {
             ensure!(!<balances::Module<T>>::total_balance(&sender).is_zero(), "account must have a balance");
             ensure!(memo.len() as u32 <= Self::max_memo_length(), "memo too long");
 
-            <Memo<T>>::insert(&sender, memo);
-            Self::deposit_event(RawEvent::MemoUpdated(sender));
+            <Memo<T>>::insert(&sender, memo.clone());
+            Self::deposit_event(RawEvent::MemoUpdated(sender, memo));
         }
     }
 }

+ 17 - 2
runtime-modules/service-discovery/src/lib.rs

@@ -94,7 +94,8 @@ decl_storage! {
 decl_event! {
     /// _Service discovery_ events
     pub enum Event<T> where
-        StorageProviderId = StorageProviderId<T>
+        StorageProviderId = StorageProviderId<T>,
+        BlockNumber = <T as frame_system::Trait>::BlockNumber,
        {
         /// Emits on updating of the account info.
         /// Params:
@@ -106,6 +107,16 @@ decl_event! {
         /// Params:
         /// - Id of the storage provider.
         AccountInfoRemoved(StorageProviderId),
+
+        /// Emits on default lifetime set.
+        /// Params:
+        /// - Set lifetime
+        LifetimeSet(BlockNumber),
+
+        /// Emits on bootstrap endpoints set
+        /// Params:
+        /// - Endpoints set
+        BootstrapEndpointsSet(Vec<Url>),
     }
 }
 
@@ -165,6 +176,8 @@ decl_module! {
             // == MUTATION SAFE ==
 
             <DefaultLifetime<T>>::put(lifetime);
+
+            Self::deposit_event(RawEvent::LifetimeSet(lifetime));
         }
 
         /// Sets bootstrap endpoints for the Colossus. Requires root privileges.
@@ -174,7 +187,9 @@ decl_module! {
 
             // == MUTATION SAFE ==
 
-            BootstrapEndpoints::put(endpoints);
+            BootstrapEndpoints::put(endpoints.clone());
+
+            Self::deposit_event(RawEvent::BootstrapEndpointsSet(endpoints));
         }
     }
 }

+ 14 - 4
runtime-modules/storage/src/data_directory.rs

@@ -159,13 +159,17 @@ decl_event! {
     pub enum Event<T> where
         <T as Trait>::ContentId,
         MemberId = MemberId<T>,
-        StorageProviderId = StorageProviderId<T>
+        StorageProviderId = StorageProviderId<T>,
+        DataObjectTypeId = <T as data_object_type_registry::Trait>::DataObjectTypeId
     {
         /// Emits on adding of the content.
         /// Params:
         /// - Id of the relationship.
         /// - Id of the member.
-        ContentAdded(ContentId, MemberId),
+        /// - Id of the data object type
+        /// - Size of the content
+        /// - IPFS content ID
+        ContentAdded(ContentId, MemberId, DataObjectTypeId, u64, Vec<u8>),
 
         /// Emits when the storage provider accepts a content.
         /// Params:
@@ -225,7 +229,7 @@ decl_module! {
                 owner: member_id,
                 liaison,
                 liaison_judgement: LiaisonJudgement::Pending,
-                ipfs_content_id,
+                ipfs_content_id: ipfs_content_id.clone(),
             };
 
             //
@@ -233,7 +237,13 @@ decl_module! {
             //
 
             <DataObjectByContentId<T>>::insert(&content_id, data);
-            Self::deposit_event(RawEvent::ContentAdded(content_id, member_id));
+            Self::deposit_event(RawEvent::ContentAdded(
+                    content_id,
+                    member_id,
+                    type_id,
+                    size,
+                    ipfs_content_id
+                ));
         }
 
         /// Storage provider accepts a content. Requires signed storage provider account and its id.

+ 9 - 2
runtime-modules/storage/src/data_object_storage_registry.rs

@@ -123,7 +123,12 @@ decl_event! {
         /// Params:
         /// - Id of the relationship.
         /// - Current state of the relationship (True=Active).
-        DataObjectStorageRelationshipReadyUpdated(DataObjectStorageRelationshipId, bool),
+        /// - Id of the storage provider
+        DataObjectStorageRelationshipReadyUpdated(
+            DataObjectStorageRelationshipId,
+            bool,
+            StorageProviderId
+        ),
     }
 }
 
@@ -229,7 +234,9 @@ impl<T: Trait> Module<T> {
         // Update DOSR and fire event.
         <Relationships<T>>::insert(id, dosr);
         Self::deposit_event(RawEvent::DataObjectStorageRelationshipReadyUpdated(
-            id, ready,
+            id,
+            ready,
+            storage_provider_id,
         ));
 
         Ok(())

+ 16 - 7
runtime-modules/storage/src/data_object_type_registry.rs

@@ -63,7 +63,7 @@ decl_error! {
 }
 
 /// Contains description and constrains for the data object.
-#[derive(Clone, Encode, Decode, PartialEq, Debug)]
+#[derive(Clone, Encode, Decode, PartialEq, Debug, Eq)]
 pub struct DataObjectType {
     /// Data object description.
     pub description: Vec<u8>,
@@ -106,12 +106,19 @@ decl_event! {
         /// Emits on the data object type registration.
         /// Params:
         /// - Id of the new data object type.
-        DataObjectTypeRegistered(DataObjectTypeId),
+        /// - Object type parameter
+        DataObjectTypeRegistered(DataObjectTypeId, DataObjectType),
 
         /// Emits on the data object type update.
         /// Params:
         /// - Id of the updated data object type.
-        DataObjectTypeUpdated(DataObjectTypeId),
+        /// - Objet type parameter
+        DataObjectTypeUpdated(DataObjectTypeId, DataObjectType),
+
+        /// Emits on the datata type activation status changed.
+        /// Params:
+        /// - Id of the updated data object type.
+        DataObjectTypeActivationChanged(DataObjectTypeId),
     }
 }
 
@@ -155,7 +162,9 @@ decl_module! {
             <DataObjectTypes<T>>::insert(new_do_type_id, do_type);
             <NextDataObjectTypeId<T>>::mutate(|n| { *n += T::DataObjectTypeId::from(1); });
 
-            Self::deposit_event(RawEvent::DataObjectTypeRegistered(new_do_type_id));
+            Self::deposit_event(
+                RawEvent::DataObjectTypeRegistered(new_do_type_id, data_object_type)
+            );
         }
 
         /// Updates existing data object type. Requires leader privileges.
@@ -178,7 +187,7 @@ decl_module! {
 
             <DataObjectTypes<T>>::insert(id, do_type);
 
-            Self::deposit_event(RawEvent::DataObjectTypeUpdated(id));
+            Self::deposit_event(RawEvent::DataObjectTypeUpdated(id, data_object_type));
         }
 
         /// Activates existing data object type. Requires leader privileges.
@@ -196,7 +205,7 @@ decl_module! {
 
             <DataObjectTypes<T>>::insert(id, do_type);
 
-            Self::deposit_event(RawEvent::DataObjectTypeUpdated(id));
+            Self::deposit_event(RawEvent::DataObjectTypeActivationChanged(id));
         }
 
         /// Deactivates existing data object type. Requires leader privileges.
@@ -214,7 +223,7 @@ decl_module! {
 
             <DataObjectTypes<T>>::insert(id, do_type);
 
-            Self::deposit_event(RawEvent::DataObjectTypeUpdated(id));
+            Self::deposit_event(RawEvent::DataObjectTypeActivationChanged(id));
         }
     }
 }

+ 14 - 4
runtime-modules/storage/src/tests/data_directory.rs

@@ -62,13 +62,17 @@ fn accept_and_reject_content_fail_with_invalid_storage_provider() {
             0,
             vec![1, 2, 3, 4],
         );
+
         assert!(res.is_ok());
 
-        let (content_id, _) = match System::events().last().unwrap().event {
+        let (content_id, _) = match &System::events().last().unwrap().event {
             MetaEvent::data_directory(data_directory::RawEvent::ContentAdded(
                 content_id,
                 creator,
-            )) => (content_id, creator),
+                _,
+                _,
+                _,
+            )) => (content_id.clone(), creator.clone()),
             _ => (0u64, 0xdeadbeefu64), // invalid value, unlikely to match
         };
 
@@ -127,11 +131,14 @@ fn accept_content_as_liaison() {
         assert!(res.is_ok());
 
         // An appropriate event should have been fired.
-        let (content_id, creator) = match System::events().last().unwrap().event {
+        let (content_id, creator) = match &System::events().last().unwrap().event {
             MetaEvent::data_directory(data_directory::RawEvent::ContentAdded(
                 content_id,
                 creator,
-            )) => (content_id, creator),
+                _,
+                _,
+                _,
+            )) => (content_id.clone(), creator.clone()),
             _ => (0u64, 0xdeadbeefu64), // invalid value, unlikely to match
         };
         assert_ne!(creator, 0xdeadbeefu64);
@@ -182,6 +189,9 @@ fn reject_content_as_liaison() {
             MetaEvent::data_directory(data_directory::RawEvent::ContentAdded(
                 content_id,
                 creator,
+                _,
+                _,
+                _,
             )) => (content_id, creator),
             _ => (0u64, 0xdeadbeefu64), // invalid value, unlikely to match
         };

+ 3 - 1
runtime-modules/storage/src/tests/data_object_storage_registry.rs

@@ -174,7 +174,9 @@ fn test_toggle_ready() {
             System::events().last().unwrap().event,
             MetaEvent::data_object_storage_registry(
                 data_object_storage_registry::RawEvent::DataObjectStorageRelationshipReadyUpdated(
-                    dosr_id, true,
+                    dosr_id,
+                    true,
+                    storage_provider_id
                 )
             )
         );

+ 7 - 6
runtime-modules/storage/src/tests/data_object_type_registry.rs

@@ -40,7 +40,7 @@ impl SetLeadFixture {
 fn get_last_data_object_type_id() -> u64 {
     let dot_id = match System::events().last().unwrap().event {
         MetaEvent::data_object_type_registry(
-            data_object_type_registry::RawEvent::DataObjectTypeRegistered(dot_id),
+            data_object_type_registry::RawEvent::DataObjectTypeRegistered(dot_id, _),
         ) => dot_id,
         _ => 0xdeadbeefu64, // unlikely value
     };
@@ -238,7 +238,7 @@ fn update_existing() {
         let res = TestDataObjectTypeRegistry::update_data_object_type(
             RawOrigin::Signed(DEFAULT_LEADER_ACCOUNT_ID).into(),
             dot_id,
-            updated3,
+            updated3.clone(),
         );
         assert!(res.is_ok());
         assert_eq!(
@@ -246,7 +246,7 @@ fn update_existing() {
             EventRecord {
                 phase: Phase::Initialization,
                 event: MetaEvent::data_object_type_registry(
-                    data_object_type_registry::RawEvent::DataObjectTypeUpdated(dot_id)
+                    data_object_type_registry::RawEvent::DataObjectTypeUpdated(dot_id, updated3)
                 ),
                 topics: vec![],
             }
@@ -291,7 +291,7 @@ fn activate_existing() {
         };
         let id_res = TestDataObjectTypeRegistry::register_data_object_type(
             RawOrigin::Signed(DEFAULT_LEADER_ACCOUNT_ID).into(),
-            data,
+            data.clone(),
         );
         assert!(id_res.is_ok());
         assert_eq!(
@@ -300,7 +300,8 @@ fn activate_existing() {
                 phase: Phase::Initialization,
                 event: MetaEvent::data_object_type_registry(
                     data_object_type_registry::RawEvent::DataObjectTypeRegistered(
-                        expected_data_object_type_id
+                        expected_data_object_type_id,
+                        data
                     )
                 ),
                 topics: vec![],
@@ -323,7 +324,7 @@ fn activate_existing() {
             EventRecord {
                 phase: Phase::Initialization,
                 event: MetaEvent::data_object_type_registry(
-                    data_object_type_registry::RawEvent::DataObjectTypeUpdated(
+                    data_object_type_registry::RawEvent::DataObjectTypeActivationChanged(
                         expected_data_object_type_id
                     )
                 ),