| import './index'; |
| |
| import { assert } from 'chai'; |
| import { $$ } from 'common-sk/modules/dom'; |
| import fetchMock from 'fetch-mock'; |
| import { MachineAppSk } from './index'; |
| import { FrontendDescription } from '../json'; |
| |
| /** |
| * Mock the machines-table-sk JSON endpoint to return a valid response. |
| */ |
| function mockMachinesResponse(): void { |
| const ARBITRARY_DATE = '2020-04-21T17:33:09.638275Z'; |
| const arbitraryResponse: Partial<FrontendDescription> = { |
| Mode: 'available', |
| Battery: 100, |
| Dimensions: { |
| id: ['skia-rpi2-rack4-shelf1-002'], |
| android_devices: ['1'], |
| device_os: ['H', 'HUAWEIELE-L29'], |
| }, |
| Note: { |
| User: '', |
| Message: '', |
| Timestamp: ARBITRARY_DATE, |
| }, |
| Annotation: { |
| User: '', |
| Message: '', |
| Timestamp: ARBITRARY_DATE, |
| }, |
| PowerCycle: false, |
| LastUpdated: ARBITRARY_DATE, |
| Temperature: { dumpsys_battery: 26 }, |
| }; |
| fetchMock.get('/_/machines', arbitraryResponse); |
| } |
| |
| const setUpElement = async (): Promise<MachineAppSk> => { |
| fetchMock.reset(); |
| fetchMock.config.overwriteRoutes = true; |
| mockMachinesResponse(); |
| |
| document.body.innerHTML = '<machine-app-sk></machine-app-sk>'; |
| |
| // Wait for the initial fetch to finish. |
| await fetchMock.flush(true); |
| |
| return document.body.firstElementChild as MachineAppSk; |
| }; |
| |
| describe('machine-app-sk', () => { |
| afterEach(() => { |
| document.body.innerHTML = ''; |
| }); |
| |
| it('starts requesting updates for the selected tab when you click on the refresh button', |
| () => window.customElements.whenDefined('machine-app-sk').then(async () => { |
| const s = await setUpElement(); |
| |
| // Now set up fetchMock for the requests that happen when the button is clicked. |
| fetchMock.reset(); |
| mockMachinesResponse(); |
| |
| // Click the button. |
| $$<HTMLButtonElement>('#refresh', s)!.click(); |
| |
| // Wait for all requests to finish. |
| await fetchMock.flush(true); |
| |
| // Confirm we are displaying the right icon. |
| assert.isNotNull($$('pause-icon-sk', s)); |
| })); |
| }); |