Improve isIterable() UT
authorJérôme Benoit <jerome.benoit@sap.com>
Thu, 26 Jan 2023 18:27:54 +0000 (19:27 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Thu, 26 Jan 2023 18:27:54 +0000 (19:27 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
src/utils/Utils.ts
test/utils/UtilsTest.ts
ui/web/src/composables/Utils.ts

index 6557a588446455506656c7f7133e8fe85c5881f0..f81acb1c4c107b8a081ac4973ace4d3d6d46d1de 100644 (file)
@@ -184,7 +184,7 @@ export default class Utils {
     return clone<T>(object);
   }
 
-  public static isIterable<T extends Iterable<T>>(obj: T): boolean {
+  public static isIterable<T>(obj: T): boolean {
     return !Utils.isNullOrUndefined(obj) ? typeof obj[Symbol.iterator] === 'function' : false;
   }
 
index 21d5d1376a7bbd3ccd0daf8390ac36f5897a2c4c..987ba7fbb055e701fc4af28a2639781995a09778 100644 (file)
@@ -151,7 +151,12 @@ describe('Utils test suite', () => {
     expect(Utils.isIterable('test')).toBe(true);
     expect(Utils.isIterable(null)).toBe(false);
     expect(Utils.isIterable(undefined)).toBe(false);
-    expect(Utils.isIterable([])).toBe(true);
+    expect(Utils.isIterable([0, 1])).toBe(true);
+    expect(Utils.isIterable({ 1: 1 })).toBe(false);
+    expect(Utils.isIterable(new Map())).toBe(true);
+    expect(Utils.isIterable(new Set())).toBe(true);
+    expect(Utils.isIterable(new WeakMap())).toBe(false);
+    expect(Utils.isIterable(new WeakSet())).toBe(false);
   });
 
   it('Verify isEmptyString()', () => {
index 92f687d85302cf0cd56949fc800b899390459f47..8ce3b6eca5b37c27dca29faf6a970ea8a0f9a980 100644 (file)
@@ -9,11 +9,11 @@ export default class Utils {
     return value as T;
   }
 
-  public static isIterable<T extends Iterable<T>>(obj: T): boolean {
+  public static isIterable<T>(obj: T): boolean {
     if (obj === null || obj === undefined) {
       return false;
     }
-    return typeof obj[Symbol.iterator] === 'function';
+    return typeof (obj as any)[Symbol.iterator] === 'function';
   }
 
   // public static ifNotIterableDo<T>(obj: T, cb: () => void): void {