...

Source file src/github.com/playwright-community/playwright-go/event_emitter_test.go

Documentation: github.com/playwright-community/playwright-go

     1  package playwright
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  )
     8  
     9  const testEventName = "foobar"
    10  
    11  func TestEventEmitterOn(t *testing.T) {
    12  	handler := &eventEmitter{}
    13  	handler.initEventEmitter()
    14  	wasCalled := make(chan interface{}, 1)
    15  	require.Nil(t, handler.events[testEventName])
    16  	handler.On(testEventName, func(payload ...interface{}) {
    17  		wasCalled <- payload[0]
    18  	})
    19  	require.Equal(t, 1, handler.ListenerCount(testEventName))
    20  	value := 123
    21  	handler.Emit(testEventName, value)
    22  	result := <-wasCalled
    23  	require.Equal(t, 1, handler.ListenerCount(testEventName))
    24  	require.Equal(t, result.(int), value)
    25  }
    26  
    27  func TestEventEmitterOnce(t *testing.T) {
    28  	handler := &eventEmitter{}
    29  	handler.initEventEmitter()
    30  	wasCalled := make(chan interface{}, 1)
    31  	require.Nil(t, handler.events[testEventName])
    32  	handler.Once(testEventName, func(payload ...interface{}) {
    33  		wasCalled <- payload[0]
    34  	})
    35  	require.Equal(t, 1, handler.ListenerCount(testEventName))
    36  	value := 123
    37  	handler.Emit(testEventName, value)
    38  	result := <-wasCalled
    39  	require.Equal(t, result.(int), value)
    40  	require.Equal(t, 0, handler.ListenerCount(testEventName))
    41  }
    42  
    43  func TestEventEmitterRemove(t *testing.T) {
    44  	handler := &eventEmitter{}
    45  	handler.initEventEmitter()
    46  	wasCalled := make(chan interface{}, 1)
    47  	require.Nil(t, handler.events[testEventName])
    48  	myHandler := func(payload ...interface{}) {
    49  		wasCalled <- payload[0]
    50  	}
    51  	handler.On(testEventName, myHandler)
    52  	require.Equal(t, 1, handler.ListenerCount(testEventName))
    53  	value := 123
    54  	handler.Emit(testEventName, value)
    55  	result := <-wasCalled
    56  	require.Equal(t, 1, handler.ListenerCount(testEventName))
    57  	require.Equal(t, result.(int), value)
    58  	handler.Once(testEventName, myHandler)
    59  	handler.RemoveListener(testEventName, myHandler)
    60  	require.Equal(t, 0, handler.ListenerCount(testEventName))
    61  }
    62  
    63  func TestEventEmitterRemoveEmpty(t *testing.T) {
    64  	handler := &eventEmitter{}
    65  	handler.initEventEmitter()
    66  	handler.RemoveListener(testEventName, func(...interface{}) {})
    67  	require.Equal(t, 0, handler.ListenerCount(testEventName))
    68  }
    69  
    70  func TestEventEmitterRemoveKeepExisting(t *testing.T) {
    71  	handler := &eventEmitter{}
    72  	handler.initEventEmitter()
    73  	handler.On(testEventName, func(...interface{}) {})
    74  	handler.Once(testEventName, func(...interface{}) {})
    75  	handler.RemoveListener("abc123", func(...interface{}) {})
    76  	handler.RemoveListener(testEventName, func(...interface{}) {})
    77  	require.Equal(t, 2, handler.ListenerCount(testEventName))
    78  }
    79  
    80  func TestEventEmitterOnLessArgsAcceptingReceiver(t *testing.T) {
    81  	handler := &eventEmitter{}
    82  	handler.initEventEmitter()
    83  	wasCalled := make(chan bool, 1)
    84  	require.Nil(t, handler.events[testEventName])
    85  	handler.Once(testEventName, func(ev ...interface{}) {
    86  		wasCalled <- true
    87  	})
    88  	handler.Emit(testEventName)
    89  	<-wasCalled
    90  }
    91  

View as plain text