import { loginAsFoobar } from '../roles'
import {
  composeInput, getNthComposeReplyButton, getNthComposeReplyInput, getNthReplyButton, getNthStatus, getUrl,
  homeNavButton, notificationsNavButton,
  postStatusButton
} from '../utils'

fixture`103-compose.js`
  .page`http://localhost:4002`

test('statuses show up in home timeline', async t => {
  await loginAsFoobar(t)
  await t
    .typeText(composeInput, 'hello world', { paste: true })
    .click(postStatusButton)
    .expect(getNthStatus(1).innerText).contains('hello world')
    .click(notificationsNavButton)
    .expect(getUrl()).contains('/notifications')
    .click(homeNavButton)
    .expect(getUrl()).eql('http://localhost:4002/')
    .expect(getNthStatus(1).innerText).contains('hello world')
    .navigateTo('/')
    .expect(getNthStatus(1).innerText).contains('hello world')
})

test('statuses in threads show up in right order', async t => {
  await loginAsFoobar(t)
  await t
    .navigateTo('/accounts/5')
    .click(getNthStatus(3))
    .expect(getUrl()).contains('/statuses')
    .click(getNthReplyButton(4))
    .typeText(getNthComposeReplyInput(4), 'my reply!', { paste: true })
    .click(getNthComposeReplyButton(4))
    .expect(getNthComposeReplyInput(4).exists).notOk()
    .expect(getNthStatus(6).innerText).contains('@baz my reply!')
    .navigateTo('/accounts/5')
    .click(getNthStatus(3))
    .expect(getNthStatus(6).innerText).contains('@baz my reply!')
})