Browse Source

Add test for successfully unsetting group lead

Bedeho Mender 5 years ago
parent
commit
2c8ad034f0
1 changed files with 77 additions and 0 deletions
  1. 77 0
      src/content_working_group/tests.rs

+ 77 - 0
src/content_working_group/tests.rs

@@ -1219,9 +1219,86 @@ fn set_lead_success() {
         });
 
 }
+
+struct UnsetLeadFixture {
+    pub origin: Origin
+}
+
+impl UnsetLeadFixture {
+    fn call(&self) -> Result<(),&'static str>{
+
+        ContentWorkingGroup::unset_lead(
+            self.origin.clone()
+        )
+    }
+
+    pub fn call_and_assert_success(&self) {
+
+        let original_lead_id = CurrentLeadId::<Test>::get().unwrap();
+        let original_lead = LeadById::<Test>::get(original_lead_id);
+
+        let call_result = self.call();
+
+        assert_eq!(
+            call_result,
+            Ok(())
+        );
+
+        assert!(
+            CurrentLeadId::<Test>::get().is_none()
+        );
+
+        let updated_lead = LeadById::<Test>::get(original_lead_id);
+
+        let expected_updated_lead = Lead{
+            stage: LeadRoleState::Exited(ExitedLeadRole{initiated_at_block_number: 1}),
+            ..original_lead
+        };
+
+        assert_eq!(
+            updated_lead,
+            expected_updated_lead
+        );
+
+        assert_eq!(
+            get_last_event_or_panic(),
+            lib::RawEvent::LeadUnset(original_lead_id)
+        );
+        
+    }
+
+    pub fn call_and_assert_failed_result(&self, error_message: &'static str) {
+
+        let number_of_events_before_call = System::events().len();
+
+        let call_result = self.call();
+
+        assert_eq!(
+            call_result,
+            Err(error_message)
+        );
+
+        assert_eq!(
+            System::events().len(),
+            number_of_events_before_call
+        );
+    }
+}
+
 #[test]
 fn unset_lead_success() {
+    TestExternalitiesBuilder::<Test>::default()
+        .build()
+        .execute_with(|| {
+
+            let _ = add_member_and_set_as_lead();
 
+            UnsetLeadFixture{
+                origin: Origin::system(system::RawOrigin::Root),
+            }
+            .call_and_assert_success();
+
+        });
 }
 
 #[test]