blob: 985a67fd57aaa154515543f3806cb5d2d201a3f9 [file] [log] [blame]
import './index';
import sinon from 'sinon';
import { expect } from 'chai';
import fetchMock from 'fetch-mock';
import { $ } from '../../../infra-sk/modules/dom';
import {
eventPromise,
setUpElementUnderTest,
} from '../../../infra-sk/modules/test_util';
import { TreeStatus, TreeStatusSk } from './tree-status-sk';
import {
treeStatusResp,
generalRoleResp,
gpuRoleResp,
androidRoleResp,
infraRoleResp,
} from './test_data';
describe('tree-status-sk', () => {
const newInstance = setUpElementUnderTest<TreeStatusSk>('tree-status-sk');
let element: TreeStatusSk;
const createElement = async () => {
sinon.stub(Notification, 'permission').value('denied');
fetchMock.get('https://test-tree-status/test-repo/current', treeStatusResp);
fetchMock.get(
'https://chrome-ops-rotation-proxy.appspot.com/current/grotation:skia-gardener',
generalRoleResp
);
fetchMock.get(
'https://chrome-ops-rotation-proxy.appspot.com/current/grotation:skia-gpu-gardener',
gpuRoleResp
);
fetchMock.get(
'https://chrome-ops-rotation-proxy.appspot.com/current/grotation:skia-android-gardener',
androidRoleResp
);
fetchMock.get(
'https://chrome-ops-rotation-proxy.appspot.com/current/grotation:skia-infra-gardener',
infraRoleResp
);
Date.now = () => 1600883976659;
element = newInstance((el) => {
el.baseURL = 'https://test-tree-status';
el.repo = 'test-repo';
});
await fetchMock.flush(true);
};
afterEach(() => {
expect(fetchMock.done()).to.be.true;
fetchMock.reset();
sinon.restore();
});
describe('displays', () => {
it('status, user, and time', async () => {
await createElement();
expect(
$('span', element).map((e) => (e as HTMLElement).innerText)
).to.deep.equal(['No longer Broken! ', '[alice 2w ago]']);
});
});
describe('triggers', () => {
it('tree-status-update event', async () => {
const ep = eventPromise('tree-status-update');
await createElement();
const treeStatus = ((await ep) as CustomEvent).detail as TreeStatus;
const rotations = treeStatus.rotations;
expect(rotations).to.have.length(4);
expect(rotations.map((r) => r.role)).to.deep.equal([
'Skia',
'GPU',
'Android',
'Infra',
]);
expect(rotations.map((r) => r.name)).to.deep.equal([
'alice',
'bob',
'christy',
'dan',
]);
expect(treeStatus.status).to.deep.equal(treeStatusResp);
});
});
});