blob: d70c9db0c6e2b6556dfc19499ee1f7e76109ff18 [file] [log] [blame]
import './index';
import fetchMock from 'fetch-mock';
import { eventPromise, setUpElementUnderTest } from '../../../infra-sk/modules/test_util';
import { BulkTriageSk } from './bulk-triage-sk';
import { BulkTriageSkPO } from './bulk-triage-sk_po';
import { examplePageData, exampleAllData, expectedPageDataTriageRequest, expectedAllDataTriageRequest } from './test_data';
import { expect } from 'chai';
describe('bulk-triage-sk', () => {
const newInstance = setUpElementUnderTest<BulkTriageSk>('bulk-triage-sk');
let bulkTriageSk: BulkTriageSk;
let bulkTriageSkPO: BulkTriageSkPO;
beforeEach(() => {
bulkTriageSk = newInstance();
bulkTriageSk.currentPageDigests = examplePageData;
bulkTriageSk.allDigests = exampleAllData;
bulkTriageSkPO = new BulkTriageSkPO(bulkTriageSk);
});
it('shows the correct digest counts', async () => {
expect(await bulkTriageSkPO.getTriageBtnLabel()).to.equal('Triage 3 digests as closest');
expect(await bulkTriageSkPO.getTriageAllCheckboxLabel()).to.equal('Triage all 6 digests');
});
it('does not show a changelist ID by default', async () => {
expect(await bulkTriageSkPO.isAffectedChangelistIdVisible()).to.be.false;
});
it('show the changelist ID when provided', async () => {
bulkTriageSk.changeListID = '123';
expect(await bulkTriageSkPO.isAffectedChangelistIdVisible()).to.be.true;
expect(await bulkTriageSkPO.getAffectedChangelistId()).to.equal('This affects Changelist 123.');
});
it('defaults to bulk-triaging to closest', async () => {
expect(await bulkTriageSkPO.isClosestBtnSelected()).to.be.true;
expect(bulkTriageSk.value).to.equal('closest');
});
it('has value respond to button clicks', async () => {
await bulkTriageSkPO.clickUntriagedBtn();
expect(await bulkTriageSkPO.isUntriagedBtnSelected()).to.be.true;
expect(bulkTriageSk.value).to.equal('untriaged');
await bulkTriageSkPO.clickPositiveBtn();
expect(await bulkTriageSkPO.isPositiveBtnSelected()).to.be.true;
expect(bulkTriageSk.value).to.equal('positive');
await bulkTriageSkPO.clickNegativeBtn();
expect(await bulkTriageSkPO.isNegativeBtnSelected()).to.be.true;
expect(bulkTriageSk.value).to.equal('negative');
await bulkTriageSkPO.clickClosestBtn();
expect(await bulkTriageSkPO.isClosestBtnSelected()).to.be.true;
expect(bulkTriageSk.value).to.equal('closest');
});
it('emits a bulk_triage_cancelled event when the cancel button is clicked', async () => {
const cancelEvent = eventPromise('bulk_triage_cancelled', 100);
await bulkTriageSkPO.clickCancelBtn();
await cancelEvent;
});
describe('RPC requests', () => {
afterEach(() => {
expect(fetchMock.done()).to.be.true; // All mock RPCs called at least once.
fetchMock.reset();
});
it('POSTs for just this page of results', async () => {
fetchMock.post('/json/v1/triage', 200, {body: expectedPageDataTriageRequest});
const finishedPromise = eventPromise('bulk_triage_finished');
await bulkTriageSkPO.clickTriageBtn();
await finishedPromise;
});
it('POSTs for all results', async () => {
bulkTriageSk.changeListID = 'someCL';
bulkTriageSk.crs = 'gerrit';
fetchMock.post('/json/v1/triage', 200, {body: expectedAllDataTriageRequest});
await bulkTriageSkPO.clickTriageAllCheckbox();
const finishedPromise = eventPromise('bulk_triage_finished');
bulkTriageSkPO.clickTriageBtn();
await finishedPromise;
});
});
});