• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Flags: --expose-internals
2'use strict';
3
4require('../common');
5const assert = require('assert');
6const ModuleMap = require('internal/modules/esm/module_map');
7
8// ModuleMap.get, ModuleMap.has and ModuleMap.set should only accept string
9// values as url argument.
10{
11  const errorObj = {
12    code: 'ERR_INVALID_ARG_TYPE',
13    name: 'TypeError',
14    message: /^The "url" argument must be of type string/
15  };
16
17  const moduleMap = new ModuleMap();
18
19  // As long as the assertion of "job" argument is done after the assertion of
20  // "url" argument this test suite is ok.  Tried to mock the "job" parameter,
21  // but I think it's useless, and was not simple to mock...
22  const job = undefined;
23
24  [{}, [], true, 1].forEach((value) => {
25    assert.throws(() => moduleMap.get(value), errorObj);
26    assert.throws(() => moduleMap.has(value), errorObj);
27    assert.throws(() => moduleMap.set(value, job), errorObj);
28  });
29}
30
31// ModuleMap.set, job argument should only accept ModuleJob values.
32{
33  const moduleMap = new ModuleMap();
34
35  [{}, [], true, 1].forEach((value) => {
36    assert.throws(() => moduleMap.set('', value), {
37      code: 'ERR_INVALID_ARG_TYPE',
38      name: 'TypeError',
39      message: /^The "job" argument must be an instance of ModuleJob/
40    });
41  });
42}
43