5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 22:49:31 +08:00
wails/v2/pkg/commands/bindings/bindings_test.go
Lea Anthony 052b9222c1
Add garble support (#1793)
Co-authored-by: AlbinoDrought <sean@albinodrought.com>
Co-authored-by: stffabi <stffabi@users.noreply.github.com>
2022-09-13 10:05:37 +10:00

120 lines
2.7 KiB
Go

package bindings
import (
"github.com/matryer/is"
"github.com/wailsapp/wails/v2/cmd/wails/internal/commands/initialise/templates"
"os"
"path/filepath"
"strings"
"testing"
)
const standardBindings = `// @ts-check
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
export function Greet(arg1) {
return window['go']['main']['App']['Greet'](arg1);
}
`
const obfuscatedBindings = `// @ts-check
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
export function Greet(arg1) {
return ObfuscatedCall(0, [arg1]);
}
`
func TestGenerateBindings(t *testing.T) {
i := is.New(t)
cwd, err := os.Getwd()
if err != nil {
println(err.Error())
t.Fail()
}
projectDir := filepath.Join(cwd, "test")
_ = os.RemoveAll(projectDir)
_, _, err = templates.Install(&templates.Options{
ProjectName: "test",
TemplateName: "plain",
WailsVersion: "latest",
})
if err != nil {
println(err.Error())
t.Fail()
}
defer func() {
_ = os.RemoveAll("test")
}()
// Make the go.mod point to local
goModPath := filepath.Join(projectDir, "go.mod")
goMod, err := os.ReadFile(goModPath)
i.NoErr(err)
goMod = []byte(strings.ReplaceAll(string(goMod), "// replace", "replace"))
// Write file back
err = os.WriteFile(goModPath, goMod, 0755)
i.NoErr(err)
tests := []struct {
name string
options Options
stdout string
expectedBindings string
wantErr bool
}{
{
name: "should generate standard bindings with no user tags",
options: Options{
ProjectDirectory: projectDir,
GoModTidy: true,
},
expectedBindings: standardBindings,
stdout: "",
wantErr: false,
},
{
name: "should generate bindings when given tags",
options: Options{
ProjectDirectory: projectDir,
Tags: []string{"test"},
GoModTidy: true,
},
expectedBindings: standardBindings,
stdout: "",
wantErr: false,
},
{
name: "should generate obfuscated bindings",
options: Options{
ProjectDirectory: projectDir,
Tags: []string{"obfuscated"},
GoModTidy: true,
},
expectedBindings: obfuscatedBindings,
stdout: "",
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
stdout, err := GenerateBindings(tt.options)
i.True((err != nil) == tt.wantErr)
i.Equal(stdout, tt.stdout)
// Read bindings
bindingsFile := filepath.Join(projectDir, "frontend", "wailsjs", "go", "main", "App.js")
bindings, err := os.ReadFile(bindingsFile)
i.NoErr(err)
i.Equal(string(bindings), tt.expectedBindings)
})
}
}