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  }