@@ -643,3 +643,179 @@ func TestStress(t *testing.T) {
643
643
}
644
644
}
645
645
}
646
+
647
+ func TestIsEmpty(t *testing.T) {
648
+ tests := []struct {
649
+ name string
650
+ setupState func(*keeper)
651
+ want bool
652
+ }{
653
+ {
654
+ name: "new keeper must empty",
655
+ setupState: func(k *keeper) {},
656
+ want: true,
657
+ },
658
+ {
659
+ name: "keeper with data must not be empty",
660
+ setupState: func(k *keeper) {
661
+ k.store.Set(validAddr1.String(), validAddr2.String())
662
+ },
663
+ want: false,
664
+ },
665
+ {
666
+ name: "keeper with all data removed must be empty",
667
+ setupState: func(k *keeper) {
668
+ k.store.Set(validAddr1.String(), validAddr2.String())
669
+ k.store.Remove(validAddr1.String())
670
+ },
671
+ want: true,
672
+ },
673
+ }
674
+
675
+ for _, tt := range tests {
676
+ t.Run(tt.name, func(t *testing.T) {
677
+ k := setupKeeper()
678
+ tt.setupState(k)
679
+
680
+ if got := k.isEmpty(); got != tt.want {
681
+ t.Errorf("isEmpty() = %v, want %v", got, tt.want)
682
+ }
683
+ })
684
+ }
685
+ }
686
+
687
+ /* Getter Tests */
688
+
689
+ func TestGetReferral(t *testing.T) {
690
+ tests := []struct {
691
+ name string
692
+ addr string
693
+ setupState func()
694
+ want string
695
+ shouldPanic bool
696
+ }{
697
+ {
698
+ name: "retrieve existing referral",
699
+ addr: validAddr1.String(),
700
+ setupState: func() {
701
+ gReferralKeeper = NewKeeper()
702
+ cleanup := mockValidCaller()
703
+ defer cleanup()
704
+ gReferralKeeper.register(validAddr1, validAddr2)
705
+ },
706
+ want: validAddr2.String(),
707
+ shouldPanic: false,
708
+ },
709
+ {
710
+ name: "retrieve non-existent referral",
711
+ addr: validAddr1.String(),
712
+ setupState: func() {
713
+ gReferralKeeper = NewKeeper()
714
+ },
715
+ shouldPanic: true,
716
+ },
717
+ }
718
+
719
+ for _, tt := range tests {
720
+ t.Run(tt.name, func(t *testing.T) {
721
+ tt.setupState()
722
+
723
+ if tt.shouldPanic {
724
+ defer func() {
725
+ if r := recover(); r == nil {
726
+ t.Error("GetReferral() function did not panic")
727
+ }
728
+ }()
729
+ }
730
+
731
+ got := GetReferral(tt.addr)
732
+ if !tt.shouldPanic && got != tt.want {
733
+ t.Errorf("GetReferral() = %v, want %v", got, tt.want)
734
+ }
735
+ })
736
+ }
737
+ }
738
+
739
+ func TestHasReferral(t *testing.T) {
740
+ tests := []struct {
741
+ name string
742
+ addr string
743
+ setupState func()
744
+ want bool
745
+ }{
746
+ {
747
+ name: "referral exists",
748
+ addr: validAddr1.String(),
749
+ setupState: func() {
750
+ gReferralKeeper = NewKeeper()
751
+ cleanup := mockValidCaller()
752
+ defer cleanup()
753
+ gReferralKeeper.register(validAddr1, validAddr2)
754
+ },
755
+ want: true,
756
+ },
757
+ {
758
+ name: "referral does not exist",
759
+ addr: validAddr1.String(),
760
+ setupState: func() {
761
+ gReferralKeeper = NewKeeper()
762
+ },
763
+ want: false,
764
+ },
765
+ {
766
+ name: "zero address referral",
767
+ addr: validAddr1.String(),
768
+ setupState: func() {
769
+ gReferralKeeper = NewKeeper()
770
+ cleanup := mockValidCaller()
771
+ defer cleanup()
772
+ gReferralKeeper.register(validAddr1, zeroAddress)
773
+ },
774
+ want: false,
775
+ },
776
+ }
777
+
778
+ for _, tt := range tests {
779
+ t.Run(tt.name, func(t *testing.T) {
780
+ tt.setupState()
781
+ if got := HasReferral(tt.addr); got != tt.want {
782
+ t.Errorf("HasReferral() = %v, want %v", got, tt.want)
783
+ }
784
+ })
785
+ }
786
+ }
787
+
788
+ func TestGlobalIsEmpty(t *testing.T) {
789
+ tests := []struct {
790
+ name string
791
+ setupState func()
792
+ want bool
793
+ }{
794
+ {
795
+ name: "new global keeper must be empty",
796
+ setupState: func() {
797
+ gReferralKeeper = NewKeeper()
798
+ },
799
+ want: true,
800
+ },
801
+ {
802
+ name: "keeper with data must not be empty",
803
+ setupState: func() {
804
+ gReferralKeeper = NewKeeper()
805
+ cleanup := mockValidCaller()
806
+ defer cleanup()
807
+ gReferralKeeper.register(validAddr1, validAddr2)
808
+ },
809
+ want: false,
810
+ },
811
+ }
812
+
813
+ for _, tt := range tests {
814
+ t.Run(tt.name, func(t *testing.T) {
815
+ tt.setupState()
816
+ if got := IsEmpty(); got != tt.want {
817
+ t.Errorf("IsEmpty() = %v, want %v", got, tt.want)
818
+ }
819
+ })
820
+ }
821
+ }
0 commit comments