blob: 1238bc73396c2b2c25730803702cff4d4b351450 [file] [log] [blame]
import './index';
import sinon from 'sinon';
import { expect } from 'chai';
import fetchMock from 'fetch-mock';
import { $ } from 'common-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);
});
});
});