github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/model/auditconv_test.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package model 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 type Sample struct { 13 flag bool 14 name string 15 } 16 17 func TestAuditModelTypeConv(t *testing.T) { 18 sample := &Sample{flag: true, name: "sample"} 19 sample2 := &Sample{name: "sample2"} 20 sampleArr := []*Sample{sample, sample2} 21 22 user := &User{} 23 24 type args struct { 25 val interface{} 26 } 27 tests := []struct { 28 name string 29 args args 30 wantConverted bool 31 wantNewVal interface{} 32 }{ 33 {name: "nil value", args: args{val: nil}, wantConverted: false, wantNewVal: nil}, 34 {name: "string value", args: args{val: "hello"}, wantConverted: false, wantNewVal: "hello"}, 35 {name: "string array", args: args{val: []string{"hello", "there"}}, wantConverted: false, wantNewVal: []string{"hello", "there"}}, 36 {name: "int value", args: args{val: 77}, wantConverted: false, wantNewVal: 77}, 37 {name: "int array", args: args{val: []int{77, 68}}, wantConverted: false, wantNewVal: []int{77, 68}}, 38 {name: "struct pointer value", args: args{val: sample}, wantConverted: false, wantNewVal: sample}, 39 {name: "struct pointer array", args: args{val: sampleArr}, wantConverted: false, wantNewVal: sampleArr}, 40 {name: "model user", args: args{val: user}, wantConverted: true, wantNewVal: "XXX"}, 41 } 42 for _, tt := range tests { 43 t.Run(tt.name, func(t *testing.T) { 44 gotNewVal, gotConverted := AuditModelTypeConv(tt.args.val) 45 assert.Equal(t, tt.wantConverted, gotConverted) 46 if !tt.wantConverted { 47 assert.Equal(t, tt.wantNewVal, gotNewVal) 48 } 49 }) 50 } 51 }