Files
jasmine/spec/html/QueryStringSpec.js
Steve Gravrock 63ac7da082 Prevent monkey patching
This doesn't affect globals (describe, it, expect, etc). Those belong to
the user and Jasmine doesn't depend on them.
2026-02-16 20:30:29 -08:00

89 lines
2.4 KiB
JavaScript

describe('QueryString', function() {
describe('#navigateWithNewParam', function() {
it('sets the query string to include the given key/value pair', function() {
const windowLocation = {
search: ''
},
queryString = new jasmineUnderTest.QueryString({
getWindowLocation: function() {
return windowLocation;
}
});
queryString.navigateWithNewParam('foo', 'bar baz');
expect(windowLocation.search).toMatch(/foo=bar%20baz/);
});
it('leaves existing params alone', function() {
const windowLocation = {
search: '?foo=bar'
},
queryString = new jasmineUnderTest.QueryString({
getWindowLocation: function() {
return windowLocation;
}
});
queryString.navigateWithNewParam('baz', 'quux');
expect(windowLocation.search).toMatch(/foo=bar/);
expect(windowLocation.search).toMatch(/baz=quux/);
});
});
describe('#fullStringWithNewParam', function() {
it('gets the query string including the given key/value pair', function() {
const windowLocation = {
search: '?foo=bar'
},
queryString = new jasmineUnderTest.QueryString({
getWindowLocation: function() {
return windowLocation;
}
});
const result = queryString.fullStringWithNewParam('baz', 'quux');
expect(result).toMatch(/foo=bar/);
expect(result).toMatch(/baz=quux/);
});
});
describe('#getParam', function() {
it('returns the value of the requested key', function() {
const windowLocation = {
search: '?baz=quux%20corge'
},
queryString = new jasmineUnderTest.QueryString({
getWindowLocation: function() {
return windowLocation;
}
});
expect(queryString.getParam('baz')).toEqual('quux corge');
});
it('returns null if the key is not present', function() {
const windowLocation = {
search: ''
},
queryString = new jasmineUnderTest.QueryString({
getWindowLocation: function() {
return windowLocation;
}
});
expect(queryString.getParam('baz')).toBeFalsy();
});
});
isNonMonkeyPatchableClass(jasmineUnderTest.QueryString, function() {
return new jasmineUnderTest.QueryString({
getWindowLocation: function() {
return { search: '' };
}
});
});
});