import './index';

import { assert } from 'chai';
import fetchMock from 'fetch-mock';
import { $$ } from '../../../infra-sk/modules/dom';
import { MachineAppSk } from './index';
import { Description } 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<Description> = {
    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));
    }));
});
