| 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); |
| }); |
| }); |
| }); |