import {
  composeContentWarning, composeInput, composeLengthIndicator, contentWarningButton, homeNavButton,
  notificationsNavButton
} from '../utils'
import { loginAsFoobar } from '../roles'

fixture`015-compose-content-warnings.js`
  .page`http://localhost:4002`

test('Changes content warnings', async t => {
  await loginAsFoobar(t)
  await t
    .expect(composeContentWarning.exists).notOk()
    .expect(contentWarningButton.getAttribute('aria-label')).eql('Add content warning')
    .expect(contentWarningButton.getAttribute('title')).eql('Add content warning')
    .click(contentWarningButton)
    .expect(composeContentWarning.exists).ok()
    .expect(contentWarningButton.getAttribute('aria-label')).eql('Remove content warning')
    .expect(contentWarningButton.getAttribute('title')).eql('Remove content warning')
    .typeText(composeContentWarning, 'hello content warning', { paste: true })
    .typeText(composeInput, 'secret text', { paste: true })
    .click(notificationsNavButton)
    .click(homeNavButton)
    .expect(contentWarningButton.getAttribute('aria-label')).eql('Remove content warning')
    .expect(contentWarningButton.getAttribute('title')).eql('Remove content warning')
    .expect(composeContentWarning.value).eql('hello content warning')
    .expect(composeInput.value).eql('secret text')
    .selectText(composeInput)
    .pressKey('delete')
    .selectText(composeContentWarning)
    .pressKey('delete')
    .expect(composeContentWarning.value).eql('')
    .expect(composeInput.value).eql('')
    .click(contentWarningButton)
    .expect(composeContentWarning.exists).notOk()
    .expect(contentWarningButton.getAttribute('aria-label')).eql('Add content warning')
    .expect(contentWarningButton.getAttribute('title')).eql('Add content warning')
})

test('Considers content warnings for length limits', async t => {
  await loginAsFoobar(t)
  await t
    .expect(composeLengthIndicator.innerText).eql('500')
    .click(contentWarningButton)
    .typeText(composeContentWarning, 'my content warning', { paste: true })
    .expect(composeLengthIndicator.innerText).eql('482')
    .typeText(composeInput, 'secret text', { paste: true })
    .expect(composeLengthIndicator.innerText).eql('471')
    .selectText(composeContentWarning)
    .pressKey('delete')
    .expect(composeLengthIndicator.innerText).eql('489')
    .selectText(composeInput)
    .pressKey('delete')
    .expect(composeLengthIndicator.innerText).eql('500')
})

test('Content warning goes away if you hide it', async t => {
  await loginAsFoobar(t)
  await t
    .click(contentWarningButton)
    .expect(composeContentWarning.value).eql('')
    .typeText(composeContentWarning, 'yo', { paste: true })
    .expect(composeContentWarning.value).eql('yo')
    .expect(composeLengthIndicator.innerText).eql('498')
    .click(contentWarningButton)
    .expect(composeContentWarning.exists).notOk()
    .expect(composeLengthIndicator.innerText).eql('500')
    .click(contentWarningButton)
    .expect(composeContentWarning.value).eql('')
    .expect(composeLengthIndicator.innerText).eql('500')
})
