@@ -705,6 +705,101 @@ fn update_node_moved_from_farm_list_works() {
705
705
} ) ;
706
706
}
707
707
708
+ #[ test]
709
+ fn update_certified_node_resources_loses_certification_works ( ) {
710
+ ExternalityBuilder :: build ( ) . execute_with ( || {
711
+ create_entity ( ) ;
712
+ create_twin ( ) ;
713
+ create_farm ( ) ;
714
+ create_node ( ) ;
715
+
716
+ assert_ok ! ( TfgridModule :: add_node_certifier(
717
+ RawOrigin :: Root . into( ) ,
718
+ alice( )
719
+ ) ) ;
720
+
721
+ assert_ok ! ( TfgridModule :: set_node_certification(
722
+ Origin :: signed( alice( ) ) ,
723
+ 1 ,
724
+ NodeCertification :: Certified
725
+ ) ) ;
726
+
727
+ let node = TfgridModule :: nodes ( 1 ) . unwrap ( ) ;
728
+ assert_eq ! ( node. certification, NodeCertification :: Certified ) ;
729
+
730
+ // Change cores to 2
731
+ let mut node_resources = node. resources ;
732
+ node_resources. cru = 2 ;
733
+
734
+ assert_ok ! ( TfgridModule :: update_node(
735
+ Origin :: signed( alice( ) ) ,
736
+ 1 ,
737
+ 1 ,
738
+ node_resources,
739
+ node. location,
740
+ node. country,
741
+ node. city,
742
+ Vec :: new( ) . try_into( ) . unwrap( ) ,
743
+ true ,
744
+ true ,
745
+ "some_serial" . as_bytes( ) . to_vec( ) ,
746
+ ) ) ;
747
+
748
+ let our_events = System :: events ( ) ;
749
+ assert_eq ! (
750
+ our_events. contains( & record( MockEvent :: TfgridModule (
751
+ TfgridEvent :: <TestRuntime >:: NodeCertificationSet ( 1 , NodeCertification :: Diy )
752
+ ) ) ) ,
753
+ true
754
+ ) ;
755
+
756
+ let node = TfgridModule :: nodes ( 1 ) . unwrap ( ) ;
757
+ assert_eq ! ( node. certification, NodeCertification :: Diy ) ;
758
+ } ) ;
759
+ }
760
+
761
+ #[ test]
762
+ fn update_certified_node_same_resources_keeps_certification_works ( ) {
763
+ ExternalityBuilder :: build ( ) . execute_with ( || {
764
+ create_entity ( ) ;
765
+ create_twin ( ) ;
766
+ create_farm ( ) ;
767
+ create_node ( ) ;
768
+
769
+ assert_ok ! ( TfgridModule :: add_node_certifier(
770
+ RawOrigin :: Root . into( ) ,
771
+ alice( )
772
+ ) ) ;
773
+
774
+ assert_ok ! ( TfgridModule :: set_node_certification(
775
+ Origin :: signed( alice( ) ) ,
776
+ 1 ,
777
+ NodeCertification :: Certified
778
+ ) ) ;
779
+
780
+ let node = TfgridModule :: nodes ( 1 ) . unwrap ( ) ;
781
+ assert_eq ! ( node. certification, NodeCertification :: Certified ) ;
782
+
783
+ // Don't change resources
784
+ assert_ok ! ( TfgridModule :: update_node(
785
+ Origin :: signed( alice( ) ) ,
786
+ 1 ,
787
+ 1 ,
788
+ node. resources,
789
+ node. location,
790
+ node. country,
791
+ node. city,
792
+ Vec :: new( ) . try_into( ) . unwrap( ) ,
793
+ true ,
794
+ true ,
795
+ "some_serial" . as_bytes( ) . to_vec( ) ,
796
+ ) ) ;
797
+
798
+ let node = TfgridModule :: nodes ( 1 ) . unwrap ( ) ;
799
+ assert_eq ! ( node. certification, NodeCertification :: Certified ) ;
800
+ } ) ;
801
+ }
802
+
708
803
#[ test]
709
804
fn create_node_with_interfaces_works ( ) {
710
805
ExternalityBuilder :: build ( ) . execute_with ( || {
0 commit comments