118 lines
4.6 KiB
JavaScript
118 lines
4.6 KiB
JavaScript
import {
|
|
composeButton,
|
|
composeInput,
|
|
getNthDeleteMediaButton,
|
|
getNthMedia,
|
|
getNthMediaAltInput,
|
|
getNthMediaListItem,
|
|
getNthStatusAndImage,
|
|
getUrl,
|
|
homeNavButton,
|
|
mediaButton,
|
|
notificationsNavButton,
|
|
uploadKittenImage,
|
|
composeMediaSensitiveCheckbox, getNthStatusAndSensitiveImage, getNthStatusAndSensitiveButton, getNthStatusContent
|
|
} from '../utils'
|
|
import { loginAsFoobar } from '../roles'
|
|
|
|
fixture`109-compose-media.js`
|
|
.page`http://localhost:4002`
|
|
|
|
async function uploadTwoKittens (t) {
|
|
await (uploadKittenImage(1)())
|
|
await t.expect(getNthMediaListItem(1).getAttribute('aria-label')).eql('kitten1.jpg')
|
|
await (uploadKittenImage(2)())
|
|
await t.expect(getNthMediaListItem(1).getAttribute('aria-label')).eql('kitten1.jpg')
|
|
.expect(getNthMediaListItem(2).getAttribute('aria-label')).eql('kitten2.jpg')
|
|
}
|
|
|
|
test('uploads alts for media', async t => {
|
|
await loginAsFoobar(t)
|
|
await t
|
|
.expect(mediaButton.hasAttribute('disabled')).notOk()
|
|
await uploadTwoKittens(t)
|
|
await t.typeText(getNthMediaAltInput(2), 'kitten 2')
|
|
.typeText(getNthMediaAltInput(1), 'kitten 1')
|
|
.click(composeButton)
|
|
.expect(getNthStatusAndImage(1, 1).getAttribute('alt')).eql('kitten 1')
|
|
.expect(getNthStatusAndImage(1, 1).getAttribute('title')).eql('kitten 1')
|
|
.expect(getNthStatusAndImage(1, 2).getAttribute('alt')).eql('kitten 2')
|
|
.expect(getNthStatusAndImage(1, 2).getAttribute('title')).eql('kitten 2')
|
|
})
|
|
|
|
test('uploads alts when deleting and re-uploading media', async t => {
|
|
await loginAsFoobar(t)
|
|
await t
|
|
.expect(mediaButton.hasAttribute('disabled')).notOk()
|
|
await (uploadKittenImage(1)())
|
|
await t.typeText(getNthMediaAltInput(1), 'this will be deleted')
|
|
.click(getNthDeleteMediaButton(1))
|
|
.expect(getNthMedia(1).exists).notOk()
|
|
await (uploadKittenImage(2)())
|
|
await t.expect(getNthMediaAltInput(1).value).eql('')
|
|
.expect(getNthMediaListItem(1).getAttribute('aria-label')).eql('kitten2.jpg')
|
|
.typeText(getNthMediaAltInput(1), 'this will not be deleted')
|
|
.click(composeButton)
|
|
.expect(getNthStatusAndImage(1, 1).getAttribute('alt')).eql('this will not be deleted')
|
|
})
|
|
|
|
test('uploads alts mixed with no-alts', async t => {
|
|
await loginAsFoobar(t)
|
|
await t
|
|
.expect(mediaButton.hasAttribute('disabled')).notOk()
|
|
await uploadTwoKittens(t)
|
|
await t.typeText(getNthMediaAltInput(2), 'kitten numero dos')
|
|
.click(composeButton)
|
|
.expect(getNthStatusAndImage(1, 1).getAttribute('alt')).eql('')
|
|
.expect(getNthStatusAndImage(1, 2).getAttribute('alt')).eql('kitten numero dos')
|
|
})
|
|
|
|
test('saves alts to local storage', async t => {
|
|
await loginAsFoobar(t)
|
|
await t
|
|
.expect(mediaButton.hasAttribute('disabled')).notOk()
|
|
await uploadTwoKittens(t)
|
|
await t.typeText(getNthMediaAltInput(1), 'kitten numero uno')
|
|
.typeText(getNthMediaAltInput(2), 'kitten numero dos')
|
|
.click(notificationsNavButton)
|
|
.expect(getUrl()).contains('/notifications')
|
|
.click(homeNavButton)
|
|
.expect(getUrl()).eql('http://localhost:4002/')
|
|
.expect(getNthMediaListItem(1).getAttribute('aria-label')).eql('kitten1.jpg')
|
|
.expect(getNthMediaListItem(2).getAttribute('aria-label')).eql('kitten2.jpg')
|
|
.expect(getNthMediaAltInput(1).value).eql('kitten numero uno')
|
|
.expect(getNthMediaAltInput(2).value).eql('kitten numero dos')
|
|
.click(composeButton)
|
|
.expect(getNthStatusAndImage(1, 1).getAttribute('alt')).eql('kitten numero uno')
|
|
.expect(getNthStatusAndImage(1, 2).getAttribute('alt')).eql('kitten numero dos')
|
|
})
|
|
|
|
test('can post a status with empty content if there is media', async t => {
|
|
await loginAsFoobar(t)
|
|
await t
|
|
.expect(mediaButton.hasAttribute('disabled')).notOk()
|
|
.typeText(composeInput, 'this is a toot')
|
|
await (uploadKittenImage(1)())
|
|
await t
|
|
.typeText(getNthMediaAltInput(1), 'just an image!')
|
|
await t.click(composeButton)
|
|
.expect(getNthStatusAndImage(1, 1).getAttribute('alt')).eql('just an image!')
|
|
})
|
|
|
|
test('can make an image sensitive without adding a CW', async t => {
|
|
await loginAsFoobar(t)
|
|
await t
|
|
.typeText(composeInput, 'this is just a kitteh')
|
|
await (uploadKittenImage(2)())
|
|
await t
|
|
.typeText(getNthMediaAltInput(1), 'sensitive kitteh')
|
|
.expect(composeMediaSensitiveCheckbox.checked).notOk()
|
|
.click(composeMediaSensitiveCheckbox)
|
|
.expect(composeMediaSensitiveCheckbox.checked).ok()
|
|
.click(composeButton)
|
|
.expect(getNthStatusContent(1).innerText).contains('this is just a kitteh')
|
|
.expect(getNthStatusAndSensitiveImage(1, 1).getAttribute('src')).match(/^blob:http:\/\/localhost/)
|
|
.click(getNthStatusAndSensitiveButton(1, 1))
|
|
.expect(getNthStatusAndImage(1, 1).getAttribute('alt')).eql('sensitive kitteh')
|
|
})
|