1.1.2 • Published 9 months ago

jest-gas v1.1.2

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

jest-gas 💨

Adds common Google Apps Script (GAS) globals to the jest runtime as objects that can be easily mocked.

Installation

npm i --save-dev jest-gas

Mocking AppsScript Globals

After initializing the jest environment's global scope with the desired GAS globals (see Initializing Globals below) you can set values and jest mocks against them. For example, let's say you have an apps script file that expects DocumentProperties to contain a value for the key uid as such:

// appscript.js
// ...
const prop = PropertiesService.getDocumentProperties().getProperty('uid');
// ...

You can mock it in your test script like so:

// appscript.test.js
test('Doc Props Available', ()=>{
    const mock = jest.fn(key => key === uid ? '1234567' : undefined);
    PropertiesService.getDocumentProperties.getProperty = mock;
});

Note that you didn't need to mock the first function call here. One of the most powerful features of jest-gas is that you can mock anywhere on the property chain. This is because each get trap creates an infinite but stateful Proxy chain that ends only when you assign a property a specific value.

Initializing Globals

There are 3 ways to utilize jest-gas in your jest test. (1) require and call the getGlobals() method and add the returned Proxy objects to globalThis manually; (2) require and call setup.js which will add the desired globals to globalThis for you; (3) add the setup.js file to your jest config file as a file in the setupFiles array.

Call getGlobals()

const { getGlobals } = require('jest-gas');
globals = getGlobals(/** optional filters */);

// your setup code

Call setup.js

require('jest-gas/setup')(/** optional filters */);

Add to jest.config.js

// jest.config.jest
{
    // ...
    setupFiles: [ './node_modules/jest-gas/setup.js' ]
    // ...
}

Available Globals

All available globals are organized in the <root>/lib/ directory.

Filters

Use of filters is recommended to ensure the jest global scope is not polluted with unecessary objects and to keep your test runs fast. See the JSDoc comments for the getGlobals() method for usage.

1.1.2

9 months ago

1.1.1

9 months ago

1.1.0

9 months ago

1.0.2

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago