github.com/AlpineAIO/wails/v2@v2.0.0-beta.32.0.20240505041856-1047a8fa5fef/internal/binding/binding_test/binding_test.go (about) 1 package binding_test 2 3 import ( 4 "reflect" 5 "strings" 6 "testing" 7 8 "github.com/AlpineAIO/wails/v2/internal/binding" 9 "github.com/AlpineAIO/wails/v2/internal/logger" 10 "github.com/stretchr/testify/require" 11 ) 12 13 type BindingTest struct { 14 name string 15 structs []interface{} 16 enums []interface{} 17 exemptions []interface{} 18 want string 19 shouldError bool 20 TsGenerationOptionsTest 21 } 22 23 type TsGenerationOptionsTest struct { 24 TsPrefix string 25 TsSuffix string 26 TsOutputType string 27 } 28 29 func TestBindings_GenerateModels(t *testing.T) { 30 31 tests := []BindingTest{ 32 EscapedNameTest, 33 ImportedStructTest, 34 ImportedSliceTest, 35 ImportedMapTest, 36 ImportedEnumTest, 37 NestedFieldTest, 38 NonStringMapKeyTest, 39 SingleFieldTest, 40 MultistructTest, 41 EmptyStructTest, 42 GeneratedJsEntityTest, 43 GeneratedJsEntityWithIntEnumTest, 44 GeneratedJsEntityWithStringEnumTest, 45 GeneratedJsEntityWithEnumTsName, 46 GeneratedJsEntityWithNestedStructInterfacesTest, 47 AnonymousSubStructTest, 48 AnonymousSubStructMultiLevelTest, 49 GeneratedJsEntityWithNestedStructTest, 50 EntityWithDiffNamespaces, 51 } 52 53 testLogger := &logger.Logger{} 54 for _, tt := range tests { 55 t.Run(tt.name, func(t *testing.T) { 56 b := binding.NewBindings(testLogger, tt.structs, tt.exemptions, false, tt.enums) 57 for _, s := range tt.structs { 58 err := b.Add(s) 59 require.NoError(t, err) 60 } 61 b.SetTsPrefix(tt.TsPrefix) 62 b.SetTsSuffix(tt.TsSuffix) 63 b.SetOutputType(tt.TsOutputType) 64 got, err := b.GenerateModels() 65 if (err != nil) != tt.shouldError { 66 t.Errorf("GenerateModels() error = %v, shouldError %v", err, tt.shouldError) 67 return 68 } 69 if !reflect.DeepEqual(strings.Fields(string(got)), strings.Fields(tt.want)) { 70 t.Errorf("GenerateModels() got = %v, want %v", string(got), tt.want) 71 } 72 }) 73 } 74 }