// Copyright 2017-2026 @pezkuwi/api authors & contributors // SPDX-License-Identifier: Apache-2.0 /// import { augmentObject } from './augmentObject.js'; describe('augmentObject', (): void => { let spy: ReturnType; beforeEach((): void => { spy = jest.spyOn(console, 'warn'); }); afterEach((): void => { spy.mockRestore(); }); it('logs added/removed sections and methods', (): void => { augmentObject( 'test', { bar: { b: 1 }, foo: { d: 1, f: 1 }, new: { z: 1 } }, { bar: { a: 1, c: 1 }, baz: { a: 1 }, foo: { c: 1, f: 1 } } ); expect(spy).toHaveBeenCalledWith( expect.anything(), expect.stringMatching(/API\/AUGMENT/), 'api.test: Found 1 added and 1 removed modules:\n\t added: new\n\tremoved: baz' ); expect(spy).toHaveBeenCalledWith( expect.anything(), expect.stringMatching(/API\/AUGMENT/), 'api.test: Found 2 added and 3 removed calls:\n\t added: bar.b, foo.d\n\tremoved: bar.a, bar.c, foo.c' ); }); it('copies sections to the dest', (): void => { const src = { bar: { b: 1 }, foo: { a: 1 } }; expect(augmentObject('test', src, {})).toEqual(src); }); it('adds fields to existing sections', (): void => { const src = { bar: { b: 1 }, foo: { a: 1 } }; const dst = { baz: { c: 1 }, foo: { b: 2 } }; expect(augmentObject('test', src, dst)).toEqual({ bar: { b: 1 }, baz: { c: 1 }, foo: { a: 1, b: 2 } }); }); });