func TestGroupSliceMerge(t *testing.T) { tests := []struct { have []*config.Group wantErr error want string }{ { have: []*config.Group{ { ID: "b", Fields: config.FieldSlice{ &config.Field{ID: "c", Default: `c`, Type: config.TypeMultiselect}, }, }, { ID: "b", Fields: config.FieldSlice{ &config.Field{ID: "d", Default: `d`, Comment: "Ring of fire", Type: config.TypeObscure}, &config.Field{ID: "c", Default: `haha`, Type: config.TypeSelect, Scope: scope.NewPerm(scope.DefaultID, scope.WebsiteID)}, }, }, { ID: "b", Fields: config.FieldSlice{ &config.Field{ID: "d", Default: `overriddenD`, Label: "Sect2Group2Label4", Comment: "LOTR"}, &config.Field{ID: "c", Default: `overriddenHaha`, Type: config.TypeHidden}, }, }, }, wantErr: nil, want: `[{"ID":"b","Fields":[{"ID":"c","Type":"hidden","Scope":["Default","Website"],"Default":"overriddenHaha"},{"ID":"d","Type":"obscure","Label":"Sect2Group2Label4","Comment":"LOTR","Default":"overriddenD"}]}]` + "\n", }, { have: nil, wantErr: nil, want: `null` + "\n", }, } for i, test := range tests { var baseGsl config.GroupSlice haveErr := baseGsl.Merge(test.have...) if test.wantErr != nil { assert.Len(t, baseGsl, 0) assert.Error(t, haveErr) assert.Contains(t, haveErr.Error(), test.wantErr) } else { assert.NoError(t, haveErr) j := baseGsl.ToJSON() if j != test.want { t.Errorf("\nIndex: %d\nExpected: %s\nActual: %s\n", i, test.want, j) } } } }
func TestGroupSliceSort(t *testing.T) { want := []int{-10, 1, 10, 11, 20} gs := config.GroupSlice{ &config.Group{ID: "a", SortOrder: 20}, &config.Group{ID: "b", SortOrder: -10}, &config.Group{ID: "c", SortOrder: 10}, &config.Group{ID: "d", SortOrder: 11}, &config.Group{ID: "e", SortOrder: 1}, } for i, f := range *(gs.Sort()) { assert.EqualValues(t, want[i], f.SortOrder) } }