From 57297083448153a0c687ac228fd2a50f57a9251b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Fox?= Date: Thu, 5 Apr 2018 20:25:48 -0300 Subject: [PATCH] Set props and methods as enumerable and configurable --- src/api/index.js | 16 +++++++++++---- test/specs/chrome.test.js | 42 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/src/api/index.js b/src/api/index.js index 4a62e1f..f128665 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -81,7 +81,9 @@ export default class Api { Object.defineProperty(result, func.name, { get: function () { return stubs.get(func.name, namespace); - } + }, + enumerable: true, + configurable: true }); return obj; }, obj); @@ -99,7 +101,9 @@ export default class Api { Object.defineProperty(result, event.name, { get: function () { return ev.get(event.name, namespace); - } + }, + enumerable: true, + configurable: true }); return obj; }, obj); @@ -155,7 +159,9 @@ export default class Api { return Object.defineProperty(obj, prop, { get() { return instance.get(); - } + }, + enumerable: true, + configurable: true }); } const property = this.props.get(prop, `${namespace}`, value); @@ -165,7 +171,9 @@ export default class Api { }, set(newValue) { property.current = newValue; - } + }, + enumerable: true, + configurable: true }); } } diff --git a/test/specs/chrome.test.js b/test/specs/chrome.test.js index f8cb8fc..b1ac612 100644 --- a/test/specs/chrome.test.js +++ b/test/specs/chrome.test.js @@ -129,3 +129,45 @@ describe('chrome/flush', function () { assert.isNull(chrome.runtime.id); }); }); + +describe.only('chrome api', function () { + + describe('functions', function () { + + it('should be enumerable', function () { + const descriptor = Object.getOwnPropertyDescriptor(chrome.tabs, 'create'); + assert(descriptor.enumerable); + }); + + it('should be configurable', function () { + const descriptor = Object.getOwnPropertyDescriptor(chrome.tabs, 'create'); + assert(descriptor.configurable); + }); + }); + + describe('props', function () { + + it('should be enumerable', function () { + const descriptor = Object.getOwnPropertyDescriptor(chrome.runtime, 'id'); + assert(descriptor.enumerable); + }); + + it('should be configurable', function () { + const descriptor = Object.getOwnPropertyDescriptor(chrome.runtime, 'id'); + assert(descriptor.configurable); + }); + }); + + describe('events', function () { + + it('should be enumerable', function () { + const descriptor = Object.getOwnPropertyDescriptor(chrome.tabs, 'onCreated'); + assert(descriptor.enumerable); + }); + + it('should be configurable', function () { + const descriptor = Object.getOwnPropertyDescriptor(chrome.tabs, 'onCreated'); + assert(descriptor.configurable); + }); + }); +});