mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-03 06:39:30 +08:00

* Add single listener deregistration * Return function to stop listening, updates types * Add missing returns, improve documentation * Duplicate interface in go * Define eventName * Use lo instead for filtering * Move logger to Interface. Add sample test. * Add vite test for events * Add js test workflow * Add corresponding go method to remove all events * Update documentation Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
39 lines
671 B
Go
39 lines
671 B
Go
package runtime_test
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/wailsapp/wails/v2/internal/frontend/runtime"
|
|
"sync"
|
|
"testing"
|
|
)
|
|
import "github.com/matryer/is"
|
|
|
|
type mockLogger struct {
|
|
Log string
|
|
}
|
|
|
|
func (t *mockLogger) Trace(format string, args ...interface{}) {
|
|
t.Log = fmt.Sprintf(format, args...)
|
|
}
|
|
|
|
func Test_EventsOn(t *testing.T) {
|
|
i := is.New(t)
|
|
l := &mockLogger{}
|
|
manager := runtime.NewEvents(l)
|
|
|
|
// Test On
|
|
eventName := "test"
|
|
counter := 0
|
|
var wg sync.WaitGroup
|
|
wg.Add(1)
|
|
manager.On(eventName, func(args ...interface{}) {
|
|
// This is called in a goroutine
|
|
counter++
|
|
wg.Done()
|
|
})
|
|
manager.Emit(eventName, "test payload")
|
|
wg.Wait()
|
|
i.Equal(1, counter)
|
|
|
|
}
|