can-symbol
Version:
Well known symbols used to detail how to operate on different objects
52 lines (36 loc) • 1.15 kB
JavaScript
var QUnit = require('steal-qunit');
var canSymbol = require('can-symbol');
var clone = require('steal-clone');
QUnit.module('can-symbol');
QUnit.test('for and keyFor', function(assert) {
var symbol = canSymbol.for("abc");
assert.ok( canSymbol.for("abc") === canSymbol.for("abc") );
assert.equal(canSymbol.keyFor(symbol), "abc", "key for");
});
QUnit.test("can get/set symbols", function(assert) {
var obj = {};
var symbol1 = canSymbol("prop1"),
symbol2 = canSymbol("prop2");
obj[symbol1] = "VALUE";
assert.equal(obj[symbol1], "VALUE", "got value");
Object.defineProperty(obj, symbol2,{
value: "DP-VALUE"
});
assert.equal(obj[symbol2], "DP-VALUE", "got define property value");
});
QUnit.test("isSymbolLike with polyfill", function(assert) {
var done = assert.async();
var origSymbol = window.Symbol;
function FakeSymbol(key) {
return { key: key };
}
FakeSymbol.for = function() {};
window.Symbol = FakeSymbol;
var loader = clone({});
loader.import("can-symbol")
.then(function(canSymbol) {
assert.notEqual(canSymbol, FakeSymbol, "uses OUR polyfill");
window.Symbol = origSymbol;
done();
});
});