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

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

test('Changes content warnings', async t => {
  await t.useRole(foobarRole)
    .expect(composeContentWarning.exists).notOk()
    .expect(contentWarningButton.getAttribute('aria-label')).eql('Add content warning')
    .expect(contentWarningButton.getAttribute('aria-pressed')).eql('false')
    .click(contentWarningButton)
    .expect(composeContentWarning.exists).ok()
    .expect(contentWarningButton.getAttribute('aria-label')).eql('Remove content warning')
    .expect(contentWarningButton.getAttribute('aria-pressed')).eql('true')
    .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('aria-pressed')).eql('true')
    .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('aria-pressed')).eql('false')
})

test('Considers content warnings for length limits', async t => {
  await t.useRole(foobarRole)
    .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('Considers hidden content warnings for length limits', async t => {
  await t.useRole(foobarRole)
    .expect(composeLengthIndicator.innerText).eql('500')
    .click(contentWarningButton)
    .typeText(composeContentWarning, 'my content warning', {paste: true})
    .expect(composeLengthIndicator.innerText).eql('482')
    .click(contentWarningButton)
    .expect(composeLengthIndicator.innerText).eql('500')
    .click(contentWarningButton)
    .expect(composeLengthIndicator.innerText).eql('482')
    .selectText(composeContentWarning)
    .pressKey('delete')
    .expect(composeLengthIndicator.innerText).eql('500')
})
