'use strict';
var test = require('tape');
var forEach = require('for-each');
var getConditionsForCategory = require('../getConditionsForCategory');
var getRangePairs = require('../getRangePairs');
test('getConditionsForCategory', function (t) {
t['throws'](
// @ts-expect-error
function () { getConditionsForCategory('not a category'); },
RangeError,
'invalid category throws'
);
forEach(getRangePairs(), function (pair) {
var category = pair[1];
t.test('category: ' + category, function (st) {
if (category === 'broken' || category === 'pre-exports') {
st.equal(
getConditionsForCategory(category),
null,
'category that does not support conditions, yields null'
);
} else {
var conditions = getConditionsForCategory(category);
st.ok(Array.isArray(conditions), 'moduleSystem none: returns an array');
var requireConditions = getConditionsForCategory(category, 'require');
st.ok(Array.isArray(requireConditions), 'moduleSystem require: returns an array');
var importConditions = getConditionsForCategory(category, 'import');
st.ok(Array.isArray(importConditions), 'moduleSystem import: returns an array');
st['throws'](
// @ts-expect-error
function () { getConditionsForCategory(category, 'not a thing'); },
TypeError,
'invalid moduleSystem throws'
);
}
st.end();
});
});
t.deepEqual(
getConditionsForCategory('pattern-trailers-no-node-addons'),
['import', 'node', 'require', 'default'],
'`pattern-trailers-no-node-addons` omits the `node-addons` condition'
);
t.deepEqual(
getConditionsForCategory('pattern-trailers'),
['import', 'node-addons', 'node', 'require', 'default'],
'`pattern-trailers` includes the `node-addons` condition'
);
t.end();
});