import { datadogRum } from '@datadog/browser-rum'; import { minimalApplication, resetSharedImpl } from '../__mocks__'; import { init } from '../init'; import { setUser, type RumUser } from '../set-user'; jest.mock('@datadog/browser-rum'); describe(`[datadog-rum] ${setUser.name}`, () => { let user: RumUser; beforeEach(() => { jest.clearAllMocks(); resetSharedImpl(); user = { id: '1' }; }); const subject = () => setUser(user); function itDoesNothing() { test('does nothing', () => { subject(); expect(datadogRum.setUser).not.toHaveBeenCalled(); }); } function itCallsDatadogRumSetUser() { test('calls datadogRum.setUser', () => { subject(); expect(datadogRum.setUser).toHaveBeenCalledWith(user); }); } itDoesNothing(); describe('when caller initialized the SDK', () => { beforeEach(() => { init({ service: { name: 'desktop' }, application: minimalApplication }); }); itCallsDatadogRumSetUser(); }); describe('when datadogRum.init was called directly (legacy)', () => { beforeEach(() => { jest.mocked(datadogRum.getInitConfiguration).mockReturnValue({} as any); }); itCallsDatadogRumSetUser(); describe('when caller initialized the SDK', () => { beforeEach(() => { jest.spyOn(console, 'warn').mockImplementation(jest.fn()); // suppress console output init({ service: { name: 'desktop' }, application: minimalApplication }); }); itDoesNothing(); }); }); });