import { foobarRole } from '../roles'
import {
  getNthStatus, scrollContainerToTop, showMoreButton, sleep
} from '../utils'
import { postAs } from '../serverActions'

fixture`104-streaming.js`
  .page`http://localhost:4002`

test('new incoming statuses show up immediately', async t => {
  await t.useRole(foobarRole)
    .hover(getNthStatus(0))
  await postAs('admin', 'hello my baby hello my honey')
  await t.expect(getNthStatus(0).innerText).contains('hello my baby hello my honey')
})

test('new incoming toots show a button if scrolled down', async t => {
  await t.useRole(foobarRole)
    .hover(getNthStatus(0))
    .hover(getNthStatus(2))
    .hover(getNthStatus(4))
  await sleep(1000)
  await postAs('admin', 'hello my ragtime gal')
  await postAs('admin', 'send me a kiss by wire')
  await sleep(4000)
  await t.hover(getNthStatus(2))
    .hover(getNthStatus(0))
  await scrollContainerToTop()
  await sleep(1000)
  await t
    .expect(showMoreButton.innerText).contains('Show 2 more')
  await postAs('admin', "baby my heart's on fire")
  await sleep(4000)
  await t.expect(showMoreButton.innerText).contains('Show 3 more')
    .click(showMoreButton)
  await t
    .expect(getNthStatus(0).innerText).contains("baby my heart's on fire")
    .expect(getNthStatus(1).innerText).contains('send me a kiss by wire')
    .expect(getNthStatus(2).innerText).contains('hello my ragtime gal')
    .navigateTo('/')
    .expect(getNthStatus(0).innerText).contains("baby my heart's on fire")
    .expect(getNthStatus(1).innerText).contains('send me a kiss by wire')
    .expect(getNthStatus(2).innerText).contains('hello my ragtime gal')
})