blob: 6c84b952c32660f1093977dd6c81c49cdbd8b72a [file] [log] [blame]
import './index';
import { expect } from 'chai';
import { DebuggerPageSk } from './debugger-page-sk';
import { testData } from '../commands-sk/test-data';
import { CommandsSk } from '../commands-sk/commands-sk';
import { HistogramSk } from '../histogram-sk/histogram-sk';
import { setUpElementUnderTest } from '../../../infra-sk/modules/test_util';
function hasClass(e: HTMLElement, expected: string): boolean {
const c = e.getAttribute('class');
if (!c) {
return false;
}
return e.classList.contains(expected);
}
describe('debugger-page-sk', () => {
const newInstance = setUpElementUnderTest<DebuggerPageSk>('debugger-page-sk');
let debuggerPageSk: DebuggerPageSk;
beforeEach(() => {
debuggerPageSk = newInstance((el: DebuggerPageSk) => {});
});
// In addition to showing counts, the histogram functions as a way to toggle any
// command in or out of the filter. is is integrated closely with commandsSk, and
// that integration is tested here.
describe('commands-histogram interaction', () => {
it('can set a negative text filter and it is reflected in the histogram', () => {
const commandsSk =
debuggerPageSk.querySelector<CommandsSk>('commands-sk')!;
const histogramSk =
debuggerPageSk.querySelector<HistogramSk>('histogram-sk')!;
commandsSk.clearFilter();
commandsSk.processCommands(testData);
commandsSk.textFilter = '!Restore Save';
// expect histogram selection are highlighted correctly
expect(
hasClass(
histogramSk.querySelector<HTMLElement>('#hist-row-save')!,
'pinkBackground'
)
).to.equal(true);
expect(
hasClass(
histogramSk.querySelector<HTMLElement>('#hist-row-restore')!,
'pinkBackground'
)
).to.equal(true);
expect(
hasClass(
histogramSk.querySelector<HTMLElement>('#hist-row-drawannotation')!,
'pinkBackground'
)
).to.equal(false);
expect(
hasClass(
histogramSk.querySelector<HTMLElement>('#hist-row-drawimagerect')!,
'pinkBackground'
)
).to.equal(false);
});
it('can set a postive text filter and it is reflected in the histogram', () => {
const commandsSk =
debuggerPageSk.querySelector<CommandsSk>('commands-sk')!;
const histogramSk =
debuggerPageSk.querySelector<HistogramSk>('histogram-sk')!;
commandsSk.clearFilter();
commandsSk.processCommands(testData);
commandsSk.textFilter = 'Restore Save';
// expect histogram selection are highlighted correctly
expect(
hasClass(
histogramSk.querySelector<HTMLElement>('#hist-row-save')!,
'pinkBackground'
)
).to.equal(false);
expect(
hasClass(
histogramSk.querySelector<HTMLElement>('#hist-row-restore')!,
'pinkBackground'
)
).to.equal(false);
expect(
hasClass(
histogramSk.querySelector<HTMLElement>('#hist-row-drawannotation')!,
'pinkBackground'
)
).to.equal(true);
expect(
hasClass(
histogramSk.querySelector<HTMLElement>('#hist-row-drawimagerect')!,
'pinkBackground'
)
).to.equal(true);
});
it('can click a histogram row and reflect it in the text filter', () => {
const commandsSk =
debuggerPageSk.querySelector<CommandsSk>('commands-sk')!;
const histogramSk =
debuggerPageSk.querySelector<HistogramSk>('histogram-sk')!;
commandsSk.clearFilter();
commandsSk.processCommands(testData);
// expect histogram selection are highlighted correctly
histogramSk.querySelector<HTMLElement>('#hist-row-save')!.click();
expect(
commandsSk.querySelector<HTMLInputElement>('#text-filter')!.value
).to.equal('!save');
});
});
});