Sha256: 499566084dbea6234b9e31e6e66d6c377e28868db91eb1ca3aad97f6d4452727

Contents?: true

Size: 1.41 KB

Versions: 27

Compression:

Stored size: 1.41 KB

Contents

'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();
});

Version data entries

27 entries across 27 versions & 2 rubygems

Version Path
immosquare-cleaner-0.1.32 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.31 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.30 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.29 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.28 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.27 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.26 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.25 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.24 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.23 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.22 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.21 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.20 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.19 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.18 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.17 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.16 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.14 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.13 node_modules/es-set-tostringtag/test/index.js
immosquare-cleaner-0.1.12 node_modules/es-set-tostringtag/test/index.js