• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2// Flags: --expose-internals
3
4// This test ensures that the type checking of ModuleMap throws
5// errors appropriately
6
7require('../common');
8
9const assert = require('assert');
10const { URL } = require('url');
11const { Loader } = require('internal/modules/esm/loader');
12const ModuleMap = require('internal/modules/esm/module_map');
13const ModuleJob = require('internal/modules/esm/module_job');
14const createDynamicModule = require(
15  'internal/modules/esm/create_dynamic_module');
16
17const stubModuleUrl = new URL('file://tmp/test');
18const stubModule = createDynamicModule(['default'], stubModuleUrl);
19const loader = new Loader();
20const moduleMap = new ModuleMap();
21const moduleJob = new ModuleJob(loader, stubModule.module,
22                                () => new Promise(() => {}));
23
24assert.throws(
25  () => moduleMap.get(1),
26  {
27    code: 'ERR_INVALID_ARG_TYPE',
28    name: 'TypeError',
29    message: 'The "url" argument must be of type string. Received type number' +
30             ' (1)'
31  }
32);
33
34assert.throws(
35  () => moduleMap.set(1, moduleJob),
36  {
37    code: 'ERR_INVALID_ARG_TYPE',
38    name: 'TypeError',
39    message: 'The "url" argument must be of type string. Received type number' +
40             ' (1)'
41  }
42);
43
44assert.throws(
45  () => moduleMap.set('somestring', 'notamodulejob'),
46  {
47    code: 'ERR_INVALID_ARG_TYPE',
48    name: 'TypeError',
49    message: 'The "job" argument must be an instance of ModuleJob. ' +
50             "Received type string ('notamodulejob')"
51  }
52);
53
54assert.throws(
55  () => moduleMap.has(1),
56  {
57    code: 'ERR_INVALID_ARG_TYPE',
58    name: 'TypeError',
59    message: 'The "url" argument must be of type string. Received type number' +
60             ' (1)'
61  }
62);
63