summaryrefslogtreecommitdiffstats
path: root/remote/test/puppeteer/packages/puppeteer-core/src/util/decorators.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'remote/test/puppeteer/packages/puppeteer-core/src/util/decorators.test.ts')
-rw-r--r--remote/test/puppeteer/packages/puppeteer-core/src/util/decorators.test.ts48
1 files changed, 47 insertions, 1 deletions
diff --git a/remote/test/puppeteer/packages/puppeteer-core/src/util/decorators.test.ts b/remote/test/puppeteer/packages/puppeteer-core/src/util/decorators.test.ts
index 4cdaf15d5b..bc476b0153 100644
--- a/remote/test/puppeteer/packages/puppeteer-core/src/util/decorators.test.ts
+++ b/remote/test/puppeteer/packages/puppeteer-core/src/util/decorators.test.ts
@@ -9,7 +9,9 @@ import {describe, it} from 'node:test';
import expect from 'expect';
import sinon from 'sinon';
-import {invokeAtMostOnceForArguments} from './decorators.js';
+import {EventEmitter} from '../common/EventEmitter.js';
+
+import {bubble, invokeAtMostOnceForArguments} from './decorators.js';
describe('decorators', function () {
describe('invokeAtMostOnceForArguments', () => {
@@ -76,4 +78,48 @@ describe('decorators', function () {
}).toThrow();
});
});
+
+ describe('bubble', () => {
+ it('should work', () => {
+ class Test extends EventEmitter<any> {
+ @bubble()
+ accessor field = new EventEmitter();
+ }
+
+ const t = new Test();
+ let a = false;
+ t.on('a', (value: boolean) => {
+ a = value;
+ });
+
+ t.field.emit('a', true);
+ expect(a).toBeTruthy();
+
+ // Set a new emitter.
+ t.field = new EventEmitter();
+ a = false;
+
+ t.field.emit('a', true);
+ expect(a).toBeTruthy();
+ });
+
+ it('should not bubble down', () => {
+ class Test extends EventEmitter<any> {
+ @bubble()
+ accessor field = new EventEmitter<any>();
+ }
+
+ const t = new Test();
+ let a = false;
+ t.field.on('a', (value: boolean) => {
+ a = value;
+ });
+
+ t.emit('a', true);
+ expect(a).toBeFalsy();
+
+ t.field.emit('a', true);
+ expect(a).toBeTruthy();
+ });
+ });
});