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  }