@@ -1773,6 +1773,94 @@ fn slashed_reserved_named_works() {
1773
1773
} ) ;
1774
1774
}
1775
1775
1776
+ #[ test]
1777
+ fn named_multi_reservable_ensure_named_reserved_works ( ) {
1778
+ ExtBuilder :: default ( )
1779
+ . balances ( vec ! [ ( ALICE , DOT , 100 ) ] )
1780
+ . build ( )
1781
+ . execute_with ( || {
1782
+ assert_ok ! ( Tokens :: reserve_named( & RID_1 , DOT , & ALICE , 50 ) ) ;
1783
+ assert_eq ! ( Tokens :: free_balance( DOT , & ALICE ) , 50 ) ;
1784
+ assert_eq ! ( Tokens :: reserved_balance_named( & RID_1 , DOT , & ALICE ) , 50 ) ;
1785
+ assert_eq ! ( Tokens :: total_issuance( DOT ) , 100 ) ;
1786
+
1787
+ assert_ok ! ( Tokens :: ensure_reserved_named( & RID_1 , DOT , & ALICE , 20 ) ) ;
1788
+ assert_ok ! ( Tokens :: ensure_reserved_named( & RID_1 , DOT , & ALICE , 70 ) ) ;
1789
+
1790
+ assert_eq ! ( Tokens :: free_balance( DOT , & ALICE ) , 30 ) ;
1791
+ assert_eq ! ( Tokens :: reserved_balance_named( & RID_1 , DOT , & ALICE ) , 70 ) ;
1792
+ } ) ;
1793
+ }
1794
+
1795
+ #[ test]
1796
+ fn named_multi_reservable_unreserve_all_named ( ) {
1797
+ ExtBuilder :: default ( )
1798
+ . balances ( vec ! [ ( ALICE , DOT , 100 ) ] )
1799
+ . build ( )
1800
+ . execute_with ( || {
1801
+ assert_ok ! ( Tokens :: reserve_named( & RID_1 , DOT , & ALICE , 50 ) ) ;
1802
+ assert_ok ! ( Tokens :: reserve_named( & RID_1 , DOT , & ALICE , 20 ) ) ;
1803
+ assert_eq ! ( Tokens :: free_balance( DOT , & ALICE ) , 30 ) ;
1804
+ assert_eq ! ( Tokens :: reserved_balance_named( & RID_1 , DOT , & ALICE ) , 70 ) ;
1805
+
1806
+ let value = Tokens :: unreserve_all_named ( & RID_1 , DOT , & ALICE ) ;
1807
+ assert ! ( value == 70 ) ;
1808
+
1809
+ assert_eq ! ( Tokens :: free_balance( DOT , & ALICE ) , 100 ) ;
1810
+ assert_eq ! ( Tokens :: reserved_balance_named( & RID_1 , DOT , & ALICE ) , 0 ) ;
1811
+ } ) ;
1812
+ }
1813
+
1814
+ #[ test]
1815
+ fn named_multi_reservable_slash_all_reserved_named ( ) {
1816
+ ExtBuilder :: default ( )
1817
+ . balances ( vec ! [ ( ALICE , DOT , 100 ) ] )
1818
+ . build ( )
1819
+ . execute_with ( || {
1820
+ assert_ok ! ( Tokens :: reserve_named( & RID_1 , DOT , & ALICE , 50 ) ) ;
1821
+ assert_eq ! ( Tokens :: free_balance( DOT , & ALICE ) , 50 ) ;
1822
+ assert_eq ! ( Tokens :: reserved_balance_named( & RID_1 , DOT , & ALICE ) , 50 ) ;
1823
+
1824
+ let value = Tokens :: slash_all_reserved_named ( & RID_1 , DOT , & ALICE ) ;
1825
+ assert ! ( value == 0 ) ;
1826
+
1827
+ assert_eq ! ( Tokens :: free_balance( DOT , & ALICE ) , 50 ) ;
1828
+ assert_eq ! ( Tokens :: reserved_balance_named( & RID_1 , DOT , & ALICE ) , 0 ) ;
1829
+ } ) ;
1830
+ }
1831
+
1832
+ #[ test]
1833
+ fn named_multi_reservable_repatriate_all_reserved_named_works ( ) {
1834
+ ExtBuilder :: default ( )
1835
+ . balances ( vec ! [ ( ALICE , DOT , 100 ) , ( BOB , DOT , 100 ) ] )
1836
+ . build ( )
1837
+ . execute_with ( || {
1838
+ assert_eq ! ( Tokens :: free_balance( DOT , & ALICE ) , 100 ) ;
1839
+ assert_eq ! ( Tokens :: reserved_balance_named( & RID_1 , DOT , & ALICE ) , 0 ) ;
1840
+ assert_eq ! ( Tokens :: reserved_balance_named( & RID_1 , DOT , & BOB ) , 0 ) ;
1841
+ assert_ok ! ( Tokens :: reserve_named( & RID_1 , DOT , & ALICE , 50 ) ) ;
1842
+
1843
+ assert_ok ! ( Tokens :: repatriate_all_reserved_named(
1844
+ & RID_1 ,
1845
+ DOT ,
1846
+ & ALICE ,
1847
+ & BOB ,
1848
+ BalanceStatus :: Reserved
1849
+ ) ) ;
1850
+
1851
+ assert_eq ! ( Tokens :: free_balance( DOT , & BOB ) , 100 ) ;
1852
+ assert_eq ! ( Tokens :: reserved_balance_named( & RID_1 , DOT , & BOB ) , 50 ) ;
1853
+
1854
+ System :: assert_last_event ( Event :: Tokens ( crate :: Event :: ReserveRepatriated {
1855
+ currency_id : DOT ,
1856
+ from : ALICE ,
1857
+ to : BOB ,
1858
+ amount : 50 ,
1859
+ status : BalanceStatus :: Reserved ,
1860
+ } ) ) ;
1861
+ } ) ;
1862
+ }
1863
+
1776
1864
// *************************************************
1777
1865
// tests for CurrencyAdapter
1778
1866
// *************************************************
0 commit comments