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