import {
  getNthStatus, getNthStatusContent, getNthStatusSpoiler, getUrl, sleep
} from '../utils'
import { loginAsFoobar } from '../roles'
import { postReplyWithSpoilerAs, postWithSpoilerAndPrivacyAs } from '../serverActions'

fixture`137-shortcut-spoiler.js`
  .page`http://localhost:4002`

test('Can toggle all spoilers with shortcut', async t => {
  const { id: statusId1 } = await postWithSpoilerAndPrivacyAs('admin', 'the content', 'yolo', 'public')
  const { id: statusId2 } = await postReplyWithSpoilerAs('admin', 'the content', statusId1, 'haha')
  await postReplyWithSpoilerAs('admin', 'the content', statusId2, 'wheeee')
  await sleep(500)
  await loginAsFoobar(t)
  await t
    .expect(getNthStatusSpoiler(1).innerText).eql('wheeee')
    .click(getNthStatus(1))
    .expect(getUrl()).contains('/statuses')
    .expect(getNthStatusSpoiler(1).innerText).eql('yolo')
    .expect(getNthStatusSpoiler(2).innerText).eql('haha')
    .expect(getNthStatusSpoiler(3).innerText).eql('wheeee')
    .expect(getNthStatusContent(1).visible).notOk()
    .expect(getNthStatusContent(2).visible).notOk()
    .expect(getNthStatusContent(3).visible).notOk()
  await sleep(500)
  await t
    .pressKey('z')
    .expect(getNthStatusContent(1).innerText).contains('the content')
    .expect(getNthStatusContent(2).innerText).contains('the content')
    .expect(getNthStatusContent(3).innerText).contains('the content')
    .expect(getNthStatusContent(1).visible).ok()
    .expect(getNthStatusContent(2).visible).ok()
    .expect(getNthStatusContent(3).visible).ok()
  await sleep(500)
  await t
    .pressKey('z')
    .expect(getNthStatusContent(1).visible).notOk()
    .expect(getNthStatusContent(2).visible).notOk()
    .expect(getNthStatusContent(3).visible).notOk()
})