github.com/secoba/wails/v2@v2.6.4/internal/frontend/runtime/events_test.go (about)

     1  package runtime_test
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/secoba/wails/v2/internal/frontend/runtime"
     6  	"sync"
     7  	"testing"
     8  )
     9  import "github.com/matryer/is"
    10  
    11  type mockLogger struct {
    12  	Log string
    13  }
    14  
    15  func (t *mockLogger) Trace(format string, args ...interface{}) {
    16  	t.Log = fmt.Sprintf(format, args...)
    17  }
    18  
    19  func Test_EventsOn(t *testing.T) {
    20  	i := is.New(t)
    21  	l := &mockLogger{}
    22  	manager := runtime.NewEvents(l)
    23  
    24  	// Test On
    25  	eventName := "test"
    26  	counter := 0
    27  	var wg sync.WaitGroup
    28  	wg.Add(1)
    29  	manager.On(eventName, func(args ...interface{}) {
    30  		// This is called in a goroutine
    31  		counter++
    32  		wg.Done()
    33  	})
    34  	manager.Emit(eventName, "test payload")
    35  	wg.Wait()
    36  	i.Equal(1, counter)
    37  
    38  }