From d247a2e2b3f91d6d2c34f406043d811585cf70f0 Mon Sep 17 00:00:00 2001
From: Gav <gavin@parity.io>
Date: Fri, 2 Mar 2018 14:40:36 +0100
Subject: [PATCH] tests: presenting losers

---
 substrate/demo/runtime/src/runtime/council.rs | 74 +++++++++++++++++++
 1 file changed, 74 insertions(+)

diff --git a/substrate/demo/runtime/src/runtime/council.rs b/substrate/demo/runtime/src/runtime/council.rs
index 50bcd84d01f..7c936f79ecf 100644
--- a/substrate/demo/runtime/src/runtime/council.rs
+++ b/substrate/demo/runtime/src/runtime/council.rs
@@ -950,6 +950,80 @@ mod tests {
 		});
 	}
 
+	#[test]
+	#[should_panic]
+	fn presenting_loser_should_panic() {
+		let alice = Keyring::Alice.to_raw_public();
+		let bob = Keyring::Bob.to_raw_public();
+		let charlie = Keyring::Charlie.to_raw_public();
+		let ferdie = Keyring::Ferdie.to_raw_public();
+		let eve = Keyring::Eve.to_raw_public();
+		let dave = Keyring::Dave.to_raw_public();
+		let mut t = new_test_ext();
+
+		with_externalities(&mut t, || {
+			with_env(|e| e.block_number = 4);
+			public::submit_candidacy(&alice, 0);
+			public::set_approvals(&ferdie, &vec![true], 0);
+			public::submit_candidacy(&bob, 1);
+			public::set_approvals(&bob, &vec![false, true], 0);
+			public::submit_candidacy(&charlie, 2);
+			public::set_approvals(&charlie, &vec![false, false, true], 0);
+			public::submit_candidacy(&dave, 3);
+			public::set_approvals(&dave, &vec![false, false, false, true], 0);
+			public::submit_candidacy(&eve, 4);
+			public::set_approvals(&eve, &vec![false, false, false, false, true], 0);
+			internal::end_block();
+
+			with_env(|e| e.block_number = 6);
+			public::present(&dave, &alice, 57, 0);
+			public::present(&dave, &charlie, 18, 0);
+			public::present(&dave, &dave, 28, 0);
+			public::present(&dave, &eve, 38, 0);
+			public::present(&dave, &bob, 8, 0);
+		});
+	}
+
+	#[test]
+	fn presenting_loser_first_should_not_matter() {
+		let alice = Keyring::Alice.to_raw_public();
+		let bob = Keyring::Bob.to_raw_public();
+		let charlie = Keyring::Charlie.to_raw_public();
+		let ferdie = Keyring::Ferdie.to_raw_public();
+		let eve = Keyring::Eve.to_raw_public();
+		let dave = Keyring::Dave.to_raw_public();
+		let mut t = new_test_ext();
+
+		with_externalities(&mut t, || {
+			with_env(|e| e.block_number = 4);
+			public::submit_candidacy(&alice, 0);
+			public::set_approvals(&ferdie, &vec![true], 0);
+			public::submit_candidacy(&bob, 1);
+			public::set_approvals(&bob, &vec![false, true], 0);
+			public::submit_candidacy(&charlie, 2);
+			public::set_approvals(&charlie, &vec![false, false, true], 0);
+			public::submit_candidacy(&dave, 3);
+			public::set_approvals(&dave, &vec![false, false, false, true], 0);
+			public::submit_candidacy(&eve, 4);
+			public::set_approvals(&eve, &vec![false, false, false, false, true], 0);
+			internal::end_block();
+
+			with_env(|e| e.block_number = 6);
+			public::present(&dave, &bob, 8, 0);
+			public::present(&dave, &alice, 57, 0);
+			public::present(&dave, &charlie, 18, 0);
+			public::present(&dave, &dave, 28, 0);
+			public::present(&dave, &eve, 38, 0);
+			
+			assert_eq!(leaderboard(), Some(vec![
+				(18, charlie.clone()),
+				(28, dave.clone()),
+				(38, eve.clone()),
+				(57, alice.clone())
+			]));
+		});
+	}
+
 	#[test]
 	#[should_panic]
 	fn present_panics_outside_of_presentation_period() {
-- 
GitLab