github.com/Ali-iotechsys/sqlboiler/v4@v4.0.0-20221208124957-6aec9a5f1f71/boil/columns_test.go (about) 1 package boil 2 3 import ( 4 "reflect" 5 "testing" 6 ) 7 8 func TestColumns(t *testing.T) { 9 t.Parallel() 10 11 list := Whitelist("a", "b") 12 if list.Kind != columnsWhitelist || !list.IsWhitelist() { 13 t.Error(list.Kind) 14 } 15 if list.Cols[0] != "a" || list.Cols[1] != "b" { 16 t.Error("columns were wrong") 17 } 18 list = Blacklist("a", "b") 19 if list.Kind != columnsBlacklist || !list.IsBlacklist() { 20 t.Error(list.Kind) 21 } 22 if list.Cols[0] != "a" || list.Cols[1] != "b" { 23 t.Error("columns were wrong") 24 } 25 list = Greylist("a", "b") 26 if list.Kind != columnsGreylist || !list.IsGreylist() { 27 t.Error(list.Kind) 28 } 29 if list.Cols[0] != "a" || list.Cols[1] != "b" { 30 t.Error("columns were wrong") 31 } 32 33 list = Infer() 34 if list.Kind != columnsInfer || !list.IsInfer() { 35 t.Error(list.Kind) 36 } 37 if len(list.Cols) != 0 { 38 t.Error("non zero length columns") 39 } 40 } 41 42 func TestInsertColumnSet(t *testing.T) { 43 t.Parallel() 44 45 columns := []string{"a", "b", "c"} 46 defaults := []string{"a", "c"} 47 nodefaults := []string{"b"} 48 49 tests := []struct { 50 Columns Columns 51 Cols []string 52 Defaults []string 53 NoDefaults []string 54 NonZeroDefaults []string 55 Set []string 56 Ret []string 57 }{ 58 // Infer 59 {Columns: Infer(), Set: []string{"b"}, Ret: []string{"a", "c"}}, 60 {Columns: Infer(), Defaults: []string{}, NoDefaults: []string{"a", "b", "c"}, Set: []string{"a", "b", "c"}, Ret: []string{}}, 61 62 // Infer with non-zero defaults 63 {Columns: Infer(), NonZeroDefaults: []string{"a"}, Set: []string{"a", "b"}, Ret: []string{"c"}}, 64 {Columns: Infer(), NonZeroDefaults: []string{"c"}, Set: []string{"b", "c"}, Ret: []string{"a"}}, 65 66 // Whitelist 67 {Columns: Whitelist("a"), Set: []string{"a"}, Ret: []string{"c"}}, 68 {Columns: Whitelist("c"), Set: []string{"c"}, Ret: []string{"a"}}, 69 {Columns: Whitelist("a", "c"), Set: []string{"a", "c"}, Ret: []string{}}, 70 {Columns: Whitelist("a", "b", "c"), Set: []string{"a", "b", "c"}, Ret: []string{}}, 71 72 // Whitelist + Nonzero defaults (shouldn't care, same results as above) 73 {Columns: Whitelist("a"), NonZeroDefaults: []string{"c"}, Set: []string{"a"}, Ret: []string{"c"}}, 74 {Columns: Whitelist("c"), NonZeroDefaults: []string{"b"}, Set: []string{"c"}, Ret: []string{"a"}}, 75 76 // Blacklist 77 {Columns: Blacklist("b"), NonZeroDefaults: []string{"c"}, Set: []string{"c"}, Ret: []string{"a"}}, 78 {Columns: Blacklist("c"), NonZeroDefaults: []string{"c"}, Set: []string{"b"}, Ret: []string{"a", "c"}}, 79 80 // Greylist 81 {Columns: Greylist("c"), NonZeroDefaults: []string{}, Set: []string{"b", "c"}, Ret: []string{"a"}}, 82 {Columns: Greylist("a"), NonZeroDefaults: []string{}, Set: []string{"a", "b"}, Ret: []string{"c"}}, 83 } 84 85 for i, test := range tests { 86 if test.Cols == nil { 87 test.Cols = columns 88 } 89 if test.Defaults == nil { 90 test.Defaults = defaults 91 } 92 if test.NoDefaults == nil { 93 test.NoDefaults = nodefaults 94 } 95 96 set, ret := test.Columns.InsertColumnSet(test.Cols, test.Defaults, test.NoDefaults, test.NonZeroDefaults) 97 98 if !reflect.DeepEqual(set, test.Set) { 99 t.Errorf("%d) set was wrong\nwant: %v\ngot: %v", i, test.Set, set) 100 } 101 if !reflect.DeepEqual(ret, test.Ret) { 102 t.Errorf("%d) ret was wrong\nwant: %v\ngot: %v", i, test.Ret, ret) 103 } 104 } 105 } 106 107 func TestUpdateColumnSet(t *testing.T) { 108 t.Parallel() 109 110 tests := []struct { 111 Columns Columns 112 Cols []string 113 PKeys []string 114 Out []string 115 }{ 116 // Infer 117 {Columns: Infer(), Cols: []string{"a", "b"}, PKeys: []string{"a"}, Out: []string{"b"}}, 118 119 // Whitelist 120 {Columns: Whitelist("a"), Cols: []string{"a", "b"}, PKeys: []string{"a"}, Out: []string{"a"}}, 121 {Columns: Whitelist("a", "b"), Cols: []string{"a", "b"}, PKeys: []string{"a"}, Out: []string{"a", "b"}}, 122 123 // Blacklist 124 {Columns: Blacklist("b"), Cols: []string{"a", "b"}, PKeys: []string{"a"}, Out: []string{}}, 125 126 // Greylist 127 {Columns: Greylist("a"), Cols: []string{"a", "b"}, PKeys: []string{"a"}, Out: []string{"a", "b"}}, 128 } 129 130 for i, test := range tests { 131 set := test.Columns.UpdateColumnSet(test.Cols, test.PKeys) 132 133 if !reflect.DeepEqual(set, test.Out) { 134 t.Errorf("%d) set was wrong\nwant: %v\ngot: %v", i, test.Out, set) 135 } 136 } 137 }