1import '../common/index.mjs';
2import assert from 'node:assert/strict';
3import { mock } from '../fixtures/es-module-loaders/mock.mjs';
4
5mock('node:events', {
6  EventEmitter: 'This is mocked!'
7});
8
9// This resolves to node:events
10// It is intercepted by mock-loader and doesn't return the normal value
11assert.deepStrictEqual(await import('events'), Object.defineProperty({
12  __proto__: null,
13  EventEmitter: 'This is mocked!'
14}, Symbol.toStringTag, {
15  enumerable: false,
16  value: 'Module'
17}));
18
19const mutator = mock('node:events', {
20  EventEmitter: 'This is mocked v2!'
21});
22
23// It is intercepted by mock-loader and doesn't return the normal value.
24// This is resolved separately from the import above since the specifiers
25// are different.
26const mockedV2 = await import('node:events');
27assert.deepStrictEqual(mockedV2, Object.defineProperty({
28  __proto__: null,
29  EventEmitter: 'This is mocked v2!'
30}, Symbol.toStringTag, {
31  enumerable: false,
32  value: 'Module'
33}));
34
35mutator.EventEmitter = 'This is mocked v3!';
36assert.deepStrictEqual(mockedV2, Object.defineProperty({
37  __proto__: null,
38  EventEmitter: 'This is mocked v3!'
39}, Symbol.toStringTag, {
40  enumerable: false,
41  value: 'Module'
42}));
43