summaryrefslogtreecommitdiffstats
path: root/remote/test/puppeteer/packages/puppeteer-core/src/util/decorators.test.ts
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /remote/test/puppeteer/packages/puppeteer-core/src/util/decorators.test.ts
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
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.ts79
1 files changed, 79 insertions, 0 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
new file mode 100644
index 0000000000..4cdaf15d5b
--- /dev/null
+++ b/remote/test/puppeteer/packages/puppeteer-core/src/util/decorators.test.ts
@@ -0,0 +1,79 @@
+/**
+ * @license
+ * Copyright 2023 Google Inc.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import {describe, it} from 'node:test';
+
+import expect from 'expect';
+import sinon from 'sinon';
+
+import {invokeAtMostOnceForArguments} from './decorators.js';
+
+describe('decorators', function () {
+ describe('invokeAtMostOnceForArguments', () => {
+ it('should delegate calls', () => {
+ const spy = sinon.spy();
+ class Test {
+ @invokeAtMostOnceForArguments
+ test(obj1: object, obj2: object) {
+ spy(obj1, obj2);
+ }
+ }
+ const t = new Test();
+ expect(spy.callCount).toBe(0);
+ const obj1 = {};
+ const obj2 = {};
+ t.test(obj1, obj2);
+ expect(spy.callCount).toBe(1);
+ });
+
+ it('should prevent repeated calls', () => {
+ const spy = sinon.spy();
+ class Test {
+ @invokeAtMostOnceForArguments
+ test(obj1: object, obj2: object) {
+ spy(obj1, obj2);
+ }
+ }
+ const t = new Test();
+ expect(spy.callCount).toBe(0);
+ const obj1 = {};
+ const obj2 = {};
+ t.test(obj1, obj2);
+ expect(spy.callCount).toBe(1);
+ expect(spy.lastCall.calledWith(obj1, obj2)).toBeTruthy();
+ t.test(obj1, obj2);
+ expect(spy.callCount).toBe(1);
+ expect(spy.lastCall.calledWith(obj1, obj2)).toBeTruthy();
+ const obj3 = {};
+ t.test(obj1, obj3);
+ expect(spy.callCount).toBe(2);
+ expect(spy.lastCall.calledWith(obj1, obj3)).toBeTruthy();
+ });
+
+ it('should throw an error for dynamic argumetns', () => {
+ class Test {
+ @invokeAtMostOnceForArguments
+ test(..._args: unknown[]) {}
+ }
+ const t = new Test();
+ t.test({});
+ expect(() => {
+ t.test({}, {});
+ }).toThrow();
+ });
+
+ it('should throw an error for non object arguments', () => {
+ class Test {
+ @invokeAtMostOnceForArguments
+ test(..._args: unknown[]) {}
+ }
+ const t = new Test();
+ expect(() => {
+ t.test(1);
+ }).toThrow();
+ });
+ });
+});