Does anyone have examples of tests for the default forge resolver?
The default resolver for a forge project index.js is:
import Resolver from '@forge/resolver';
const resolver = new Resolver();
resolver.define('getText', (req) => {
console.log(req);
return 'Hello, world!';
});
export const handler = resolver.getDefinitions();
How would I write a test for this class? This is what I think it should be as follow, but I get the errors TypeError: Cannot read properties of undefined (reading 'define')
:
import Resolver from '@forge/resolver';
import { handler } from './index';
jest.mock('@forge/resolver');
describe('handler', () => {
let mockDefine;
let mockGetDefinitions;
beforeEach(() => {
mockDefine = jest.fn();
mockGetDefinitions = jest.fn();
Resolver.mockImplementation(() => ({
define: mockDefine,
getDefinitions: mockGetDefinitions,
}));
jest.resetModules();
require('./index');
});
it('should define getText and return Hello, world!', () => {
const req = { foo: 'bar' };
const consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => {});
let getTextHandler;
mockDefine.mockImplementation((name, fn) => {
if (name === 'getText') {
getTextHandler = fn;
}
});
jest.resetModules();
require('./handler');
const result = getTextHandler(req);
expect(consoleSpy).toHaveBeenCalledWith(req);
expect(result).toBe('Hello, world!');
consoleSpy.mockRestore();
});
});