import {assert, driver} from 'mocha-webdriver';
import * as gu from 'test/nbrowser/gristUtils';
import {cleanupExtraWindows, server, setupTestSuite} from 'test/nbrowser/testUtils';

describe('DetailView', function() {
  this.timeout(20000);
  cleanupExtraWindows();
  const cleanup = setupTestSuite();

  // Before create new document.
  before(async function() {
    const session = await gu.session().teamSite.login();
    await session.tempNewDoc(cleanup);

    await gu.sendActions([
      ['AddRecord', 'Table1', null, {A: 'some text', B: server.getHost()}],
    ]);
    await gu.addNewSection('Card', 'Table1');
  });

  it('opens cell for editing when clicked', async () => {
    const fieldA = await gu.getDetailCell('A', 1);

    // Make sure the cell is not in edit mode.
    assert.equal(await fieldA.getText(), 'some text');
    assert.equal(await driver.find('.test-widget-text-editor').isPresent(), false);

    // Now click on the cell and make sure it is in edit mode.
    await fieldA.click(); // first is to select it
    await fieldA.click(); // second is to edit it
    assert.equal(await driver.find('.test-widget-text-editor').isPresent(), true);
    await gu.checkTextEditor('some text');
  });

  it('does not opens cell for editing when clicked on link', async () => {
    const fieldB = await gu.getDetailCell('B', 1);

    // First select the cell.
    await fieldB.click();
    // Now click on the link and make sure it is not in edit mode.
    await fieldB.find(".test-tb-link-icon").click();

    assert.equal(await fieldB.getText(), server.getHost());
    await driver.sleep(100); // This click is ignored, so wait for a bit.
    assert.equal(await driver.find('.test-widget-text-editor').isPresent(), false);
  });
});