5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 23:51:44 +08:00
wails/v2/internal/frontend/runtime/events_test.go
Joshua Hull 9f751d66e0
Add single listener deregistration (#1969)
* 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>
2022-10-23 09:03:37 +11:00

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)
}