astro-ghostcms/.pnpm-store/v3/files/b4/062d19e147ca482cd64ebecfac3...

54 lines
1.4 KiB
Plaintext

'use strict';
var test = require('tape');
var hasToStringTag = require('has-tostringtag/shams')();
var has = require('has');
var setToStringTag = require('../');
test('setToStringTag', function (t) {
t.equal(typeof setToStringTag, 'function', 'is a function');
var obj = {};
var sentinel = {};
setToStringTag(obj, sentinel);
t.test('has Symbol.toStringTag', { skip: !hasToStringTag }, function (st) {
st.ok(has(obj, Symbol.toStringTag), 'has toStringTag property');
st.equal(obj[Symbol.toStringTag], sentinel, 'toStringTag property is as expected');
st.equal(String(obj), '[object Object]', 'toStringTag works');
var tagged = {};
tagged[Symbol.toStringTag] = 'already tagged';
st.equal(String(tagged), '[object already tagged]', 'toStringTag works');
setToStringTag(tagged, 'new tag');
st.equal(String(tagged), '[object already tagged]', 'toStringTag is unchanged');
setToStringTag(tagged, 'new tag', { force: true });
st.equal(String(tagged), '[object new tag]', 'toStringTag is changed with force: true');
st.end();
});
t.test('does not have Symbol.toStringTag', { skip: hasToStringTag }, function (st) {
var passed = true;
for (var key in obj) { // eslint-disable-line no-restricted-syntax
if (has(obj, key)) {
st.fail('object has own key ' + key);
passed = false;
}
}
if (passed) {
st.ok(true, 'object has no enumerable own keys');
}
st.end();
});
t.end();
});