dojo
Version:
Dojo core is a powerful, lightweight library that makes common tasks quicker and easier. Animate elements, manipulate the DOM, and query with easy CSS syntax, all without sacrificing performance.
119 lines (108 loc) • 3.43 kB
JavaScript
define([
'require',
'intern!object',
'intern/chai!assert'
], function (require, registerSuite, assert) {
registerSuite({
name: 'dojo/cookie',
setup: function () {
return this.get('remote')
.setExecuteAsyncTimeout(10000)
.get(require.toUrl('./support/standard.html'));
},
beforeEach: function () {
return this.get('remote').clearCookies();
},
set: {
'one new cookie': function () {
return this.get('remote').executeAsync(function (done) {
require(['dojo/cookie'], function (cookie) {
var cookieName = 'dojo_test';
var cookieValue = 'test value';
cookie(cookieName, cookieValue);
done(document.cookie);
});
}).then(function (cookieStr) {
var cookieName = 'dojo_test';
var cookieValue = encodeURIComponent('test value');
var regExp = new RegExp(cookieName + '=([^;]*)');
var results;
assert.isDefined(cookieStr);
assert.isTrue(cookieStr.indexOf(cookieName + '=') >= 0);
results = cookieStr.match(regExp);
assert.lengthOf(results, 2);
assert.equal(results[1], cookieValue);
});
},
'a cookie with a negative expires': function () {
return this.get('remote').executeAsync(function (done) {
require(['dojo/cookie'], function (cookie) {
// set a cookie with a numerical expires
cookie('dojo_num', 'foo', { expires: 10 });
done(cookie('dojo_num'));
});
}).then(function (actual) {
assert.isNotNull(actual);
}).executeAsync(function (done) {
require(['dojo/cookie'], function (cookie) {
// remove the cookie by setting it with a negative
// numerical expires. value doesn't really matter here
cookie('dojo_num', '-deleted-', { expires: -10 });
done(cookie('dojo_num'));
});
}).then(function (actual) {
assert.isNull(actual);
});
}
},
get: {
'an existing cookie': function () {
return this.get('remote').executeAsync(function (done) {
require(['dojo/cookie'], function (cookie) {
// set the cookie
var cookieName = 'dojo_test';
var cookieValue = 'an existing cookie';
document.cookie = cookieName + '=' + cookieValue;
done(cookie(cookieName));
});
}).then(function (cookieValue) {
assert.equal(cookieValue, 'an existing cookie');
});
}
},
'add and remove two new cookies with the same suffix': function () {
return this.get('remote').executeAsync(function (done) {
require(['dojo/cookie'], function (cookie) {
// set two cookies with the same suffix
cookie('user', '123', { expires: 10 });
cookie('xuser', 'abc', { expires: 10 });
done({
cookie: {
user: cookie('user'),
xuser: cookie('xuser')
}
});
});
}).then(function (actual) {
assert.equal(actual.cookie.user, '123');
assert.equal(actual.cookie.xuser, 'abc');
}).executeAsync(function (done) {
require(['dojo/cookie'], function (cookie) {
// remove the cookie by setting it with a negative
// numerical expires. value doesn't really matter here
cookie('user', '-deleted-', { expires: -10 });
cookie('xuser', '-deleted-', { expires: -10 });
done({
cookie: {
user: cookie('user'),
xuser: cookie('xuser')
}
});
});
}).then(function (actual) {
assert.isNull(actual.cookie.user);
assert.isNull(actual.cookie.xuser);
});
}
});
});