Files
jasmine/spec/html/HtmlReporterV2UrlsSpec.js
2025-10-09 16:42:42 -07:00

67 lines
2.3 KiB
JavaScript

describe('HtmlReporterV2Urls', function() {
describe('#configFromCurrentUrl', function() {
passesThroughQueryParam('stopOnSpecFailure');
passesThroughQueryParam('stopSpecOnExpectationFailure');
passesThroughQueryParam('random');
ignoresEmpty('random');
passesThroughQueryParam('seed');
ignoresEmpty('seed');
it('configures a matching spec filter', function() {
const queryString = mockQueryString();
queryString.getParam.withArgs('path').and.returnValue('["foo","bar"]');
const subject = new jasmineUnderTest.HtmlReporterV2Urls({ queryString });
const config = subject.configFromCurrentUrl();
const matching = {
getPath() {
return ['foo', 'bar'];
}
};
const nonMatching = {
getPath() {
return ['foobar'];
}
};
expect(config.specFilter(matching)).toEqual(true);
expect(config.specFilter(nonMatching)).toEqual(false);
});
function passesThroughQueryParam(k) {
it(`sets config.${k} to undefined when ${k} is not in the query string`, function() {
const queryString = mockQueryString();
queryString.getParam.withArgs(k).and.returnValue(undefined);
const subject = new jasmineUnderTest.HtmlReporterV2Urls({
queryString
});
expect(subject.configFromCurrentUrl()[k]).toBeUndefined();
});
it(`sets config.${k} to the ${k} query param`, function() {
const queryString = mockQueryString();
queryString.getParam.withArgs(k).and.returnValue('someval');
const subject = new jasmineUnderTest.HtmlReporterV2Urls({
queryString
});
expect(subject.configFromCurrentUrl()[k]).toEqual('someval');
});
}
function ignoresEmpty(k) {
it(`sets config.${k} to undefined when the ${k} query param is empty`, function() {
const queryString = mockQueryString();
queryString.getParam.withArgs(k).and.returnValue(undefined);
const subject = new jasmineUnderTest.HtmlReporterV2Urls({
queryString
});
expect(subject.configFromCurrentUrl()[k]).toBeUndefined();
});
}
function mockQueryString() {
const qs = jasmine.createSpyObj('queryString', ['getParam']);
qs.getParam.and.returnValue('NOT STUBBED');
return qs;
}
});
});