Clicking a link in the HTML reporter does exact filtering
This feature requires an update to boot1.js, as shown in this commit. Users with an older boot1.js will get the older inexact filtering.
This commit is contained in:
49
spec/html/HtmlExactSpecFilterSpec.js
Normal file
49
spec/html/HtmlExactSpecFilterSpec.js
Normal file
@@ -0,0 +1,49 @@
|
||||
describe('HtmlExactSpecFilter', function() {
|
||||
it('matches everything when no string is provided', function() {
|
||||
const specFilter = new jasmineUnderTest.HtmlExactSpecFilter({
|
||||
filterString() {
|
||||
return '';
|
||||
}
|
||||
});
|
||||
|
||||
expect(specFilter.matches({})).toBeTrue();
|
||||
});
|
||||
|
||||
it('matches a spec with the exact same path', function() {
|
||||
const specFilter = new jasmineUnderTest.HtmlExactSpecFilter({
|
||||
filterString() {
|
||||
return '["a","b","c"]';
|
||||
}
|
||||
});
|
||||
|
||||
expect(specFilter.matches(stubSpec(['a', 'b', 'c']))).toBeTrue();
|
||||
});
|
||||
|
||||
it('matches a spec whose path has the filter path as a prefix', function() {
|
||||
const specFilter = new jasmineUnderTest.HtmlExactSpecFilter({
|
||||
filterString() {
|
||||
return '["a","b"]';
|
||||
}
|
||||
});
|
||||
|
||||
expect(specFilter.matches(stubSpec(['a', 'b', 'c']))).toBeTrue();
|
||||
});
|
||||
|
||||
it('does not match a spec with a different path', function() {
|
||||
const specFilter = new jasmineUnderTest.HtmlExactSpecFilter({
|
||||
filterString() {
|
||||
return '["a","b","c"]';
|
||||
}
|
||||
});
|
||||
|
||||
expect(specFilter.matches(stubSpec(['a', 'd', 'c']))).toBeFalse();
|
||||
});
|
||||
|
||||
function stubSpec(path) {
|
||||
return {
|
||||
getPath() {
|
||||
return path;
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
@@ -528,6 +528,7 @@ describe('HtmlReporter', function() {
|
||||
|
||||
let specResult = {
|
||||
id: 123,
|
||||
parentSuiteId: 1,
|
||||
description: 'with a spec',
|
||||
fullName: 'A Suite with a spec',
|
||||
status: 'passed',
|
||||
@@ -605,7 +606,9 @@ describe('HtmlReporter', function() {
|
||||
const suiteDetail = outerSuite.childNodes[0];
|
||||
const suiteLink = suiteDetail.childNodes[0];
|
||||
expect(suiteLink.innerHTML).toEqual('A Suite');
|
||||
expect(suiteLink.getAttribute('href')).toEqual('/?foo=bar&spec=A Suite');
|
||||
expect(suiteLink.getAttribute('href')).toEqual(
|
||||
'/?foo=bar&spec=["A Suite"]'
|
||||
);
|
||||
|
||||
const specs = outerSuite.childNodes[1];
|
||||
const spec = specs.childNodes[0];
|
||||
@@ -615,7 +618,7 @@ describe('HtmlReporter', function() {
|
||||
const specLink = spec.childNodes[0];
|
||||
expect(specLink.innerHTML).toEqual('with a spec');
|
||||
expect(specLink.getAttribute('href')).toEqual(
|
||||
'/?foo=bar&spec=A Suite with a spec'
|
||||
'/?foo=bar&spec=["A Suite","with a spec"]'
|
||||
);
|
||||
|
||||
const specDuration = spec.childNodes[1];
|
||||
@@ -1541,6 +1544,7 @@ describe('HtmlReporter', function() {
|
||||
|
||||
const failingSpecResult = {
|
||||
id: 124,
|
||||
parentSuiteId: 2,
|
||||
status: 'failed',
|
||||
description: 'a failing spec',
|
||||
fullName: 'a suite inner suite a failing spec',
|
||||
@@ -1664,16 +1668,18 @@ describe('HtmlReporter', function() {
|
||||
expect(links.length).toEqual(3);
|
||||
expect(links[0].textContent).toEqual('A suite');
|
||||
|
||||
expect(links[0].getAttribute('href')).toMatch(/\?foo=bar&spec=A suite/);
|
||||
expect(links[0].getAttribute('href')).toEqual(
|
||||
'/?foo=bar&spec=["A suite"]'
|
||||
);
|
||||
|
||||
expect(links[1].textContent).toEqual('inner suite');
|
||||
expect(links[1].getAttribute('href')).toMatch(
|
||||
/\?foo=bar&spec=A suite inner suite/
|
||||
expect(links[1].getAttribute('href')).toEqual(
|
||||
'/?foo=bar&spec=["A suite","inner suite"]'
|
||||
);
|
||||
|
||||
expect(links[2].textContent).toEqual('a failing spec');
|
||||
expect(links[2].getAttribute('href')).toMatch(
|
||||
/\?foo=bar&spec=a suite inner suite a failing spec/
|
||||
expect(links[2].getAttribute('href')).toEqual(
|
||||
'/?foo=bar&spec=["A suite","inner suite","a failing spec"]'
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
describe('jasmineUnderTest.HtmlSpecFilter', function() {
|
||||
describe('HtmlSpecFilter', function() {
|
||||
it('should match when no string is provided', function() {
|
||||
const specFilter = new jasmineUnderTest.HtmlSpecFilter();
|
||||
|
||||
@@ -16,4 +16,17 @@ describe('jasmineUnderTest.HtmlSpecFilter', function() {
|
||||
expect(specFilter.matches('foo')).toBe(true);
|
||||
expect(specFilter.matches('bar')).toBe(false);
|
||||
});
|
||||
|
||||
it('copes with HtmlExactSpecFilterV2 filter strings', function() {
|
||||
const specFilter = new jasmineUnderTest.HtmlSpecFilter({
|
||||
filterString: function() {
|
||||
return '["foo","bar"]';
|
||||
}
|
||||
});
|
||||
|
||||
expect(specFilter.matches('foo bar')).toBe(true);
|
||||
expect(specFilter.matches('baz foo bar qux')).toBe(true);
|
||||
expect(specFilter.matches('foo')).toBe(false);
|
||||
expect(specFilter.matches('bar')).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user