• 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 { Loader } = require('internal/modules/esm/loader');
11const ModuleMap = require('internal/modules/esm/module_map');
12const ModuleJob = require('internal/modules/esm/module_job');
13const createDynamicModule = require(
14  'internal/modules/esm/create_dynamic_module');
15
16const stubModuleUrl = new URL('file://tmp/test');
17const stubModule = createDynamicModule(['default'], stubModuleUrl);
18const loader = new Loader();
19const moduleMap = new ModuleMap();
20const moduleJob = new ModuleJob(loader, stubModule.module,
21                                () => new Promise(() => {}));
22
23assert.throws(
24  () => moduleMap.get(1),
25  {
26    code: 'ERR_INVALID_ARG_TYPE',
27    name: 'TypeError',
28    message: 'The "url" argument must be of type string. Received type number' +
29             ' (1)'
30  }
31);
32
33assert.throws(
34  () => moduleMap.set(1, moduleJob),
35  {
36    code: 'ERR_INVALID_ARG_TYPE',
37    name: 'TypeError',
38    message: 'The "url" argument must be of type string. Received type number' +
39             ' (1)'
40  }
41);
42
43assert.throws(
44  () => moduleMap.set('somestring', 'notamodulejob'),
45  {
46    code: 'ERR_INVALID_ARG_TYPE',
47    name: 'TypeError',
48    message: 'The "job" argument must be an instance of ModuleJob. ' +
49             "Received type string ('notamodulejob')"
50  }
51);
52
53assert.throws(
54  () => moduleMap.has(1),
55  {
56    code: 'ERR_INVALID_ARG_TYPE',
57    name: 'TypeError',
58    message: 'The "url" argument must be of type string. Received type number' +
59             ' (1)'
60  }
61);
62