5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 15:11:53 +08:00
wails/v3/internal/parser/parser_test.go
2023-02-17 20:57:31 +11:00

147 lines
3.2 KiB
Go

package parser
import (
"testing"
"github.com/samber/lo"
"github.com/stretchr/testify/require"
)
func TestParseDirectory(t *testing.T) {
tests := []struct {
name string
dir string
want []string
wantErr bool
}{
{
name: "should find single bound service",
dir: "testdata/struct_literal_single",
want: []string{"main.GreetService"},
wantErr: false,
},
{
name: "should find multiple bound services",
dir: "testdata/struct_literal_multiple",
want: []string{"main.GreetService", "main.OtherService"},
wantErr: false,
},
{
name: "should find multiple bound services over multiple files",
dir: "testdata/struct_literal_multiple_files",
want: []string{"main.GreetService", "main.OtherService"},
wantErr: false,
},
{
name: "should find multiple bound services over multiple packages",
dir: "testdata/struct_literal_multiple_other",
want: []string{"main.GreetService", "services.OtherService"},
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
Debug = true
got, err := ParseDirectory(tt.dir)
if (err != nil) != tt.wantErr {
t.Errorf("ParseDirectory() error = %v, wantErr %v", err, tt.wantErr)
return
}
for name, pkg := range got.packages {
for structName, structType := range pkg.boundStructs {
require.NotNil(t, structType)
require.True(t, lo.Contains(tt.want, name+"."+structName))
tt.want = lo.Without(tt.want, name+"."+structName)
}
}
require.Empty(t, tt.want)
})
}
}
//func TestGenerateTypeScript(t *testing.T) {
// tests := []struct {
// name string
// dir string
// want string
// wantErr bool
// }{
// {
// name: "should find single bound service",
// dir: "testdata/struct_literal_single",
// want: `namespace main {
// class GreetService {
// SomeVariable: number;
// }
//}
//`,
// wantErr: false,
// },
// {
// name: "should find multiple bound services",
// dir: "testdata/struct_literal_multiple",
// want: `namespace main {
// class GreetService {
// SomeVariable: number;
// }
// class OtherService {
// }
//}
//`,
// wantErr: false,
// },
// {
// name: "should find multiple bound services over multiple files",
// dir: "testdata/struct_literal_multiple_files",
// want: `namespace main {
// class GreetService {
// SomeVariable: number;
// }
// class OtherService {
// }
//}
//`,
// wantErr: false,
// },
// {
// name: "should find bound services from other packages",
// dir: "../../examples/binding",
// want: `namespace main {
// class localStruct {
// }
//}
//namespace models {
// class Person {
// Name: string;
// }
//}
//namespace services {
// class GreetService {
// SomeVariable: number;
// Parent: models.Person;
// }
//}
//`,
// wantErr: false,
// },
// }
// for _, tt := range tests {
// t.Run(tt.name, func(t *testing.T) {
// Debug = true
// context, err := ParseDirectory(tt.dir)
// if (err != nil) != tt.wantErr {
// t.Errorf("ParseDirectory() error = %v, wantErr %v", err, tt.wantErr)
// return
// }
//
// ts, err := GenerateModels(context)
// require.NoError(t, err)
// require.Equal(t, tt.want, string(ts))
//
// })
// }
//}