mirror of
https://github.com/nolanlawson/pinafore
synced 2024-12-11 09:45:24 +01:00
568a3f51fe
work on #1633
87 lines
4.0 KiB
JavaScript
87 lines
4.0 KiB
JavaScript
import { loginAsFoobar } from '../roles'
|
|
import {
|
|
avatarInComposeBox, closeDialogButton, composeInput, getNthDialogOptionsOption, getNthPinnedStatus,
|
|
getNthPinnedStatusFavoriteButton,
|
|
getNthStatus, getNthStatusContent,
|
|
getNthStatusOptionsButton, getUrl, homeNavButton, postStatusButton, scrollToTop, scrollToBottom,
|
|
settingsNavButton, sleep
|
|
} from '../utils'
|
|
import { users } from '../users'
|
|
import { postAs } from '../serverActions'
|
|
|
|
fixture`117-pin-unpin.js`
|
|
.page`http://localhost:4002`
|
|
|
|
test('Can pin statuses', async t => {
|
|
await loginAsFoobar(t)
|
|
await t
|
|
.typeText(composeInput, 'I am going to pin this', { paste: true })
|
|
.click(postStatusButton)
|
|
.expect(getNthStatus(1).innerText).contains('I am going to pin this')
|
|
.click(avatarInComposeBox)
|
|
.expect(getUrl()).contains(`/accounts/${users.foobar.id}`)
|
|
.expect(getNthPinnedStatus(1).getAttribute('aria-setsize')).eql('1')
|
|
.expect(getNthPinnedStatus(1).innerText).contains('this is unlisted')
|
|
.expect(getNthStatus(1).innerText).contains('I am going to pin this')
|
|
.click(getNthStatusOptionsButton(1))
|
|
.expect(getNthDialogOptionsOption(1).innerText).contains('Delete')
|
|
.expect(getNthDialogOptionsOption(2).innerText).contains('Pin to profile')
|
|
.click(getNthDialogOptionsOption(2))
|
|
.expect(getNthPinnedStatus(1).getAttribute('aria-setsize')).eql('2')
|
|
.expect(getNthPinnedStatus(1).innerText).contains('I am going to pin this')
|
|
.expect(getNthPinnedStatus(2).innerText).contains('this is unlisted')
|
|
.expect(getNthStatus(1).innerText).contains('I am going to pin this')
|
|
.click(getNthStatusOptionsButton(1))
|
|
.expect(getNthDialogOptionsOption(1).innerText).contains('Delete')
|
|
.expect(getNthDialogOptionsOption(2).innerText).contains('Unpin from profile')
|
|
.click(getNthDialogOptionsOption(2))
|
|
.expect(getUrl()).contains(`/accounts/${users.foobar.id}`)
|
|
.expect(getNthPinnedStatus(1).getAttribute('aria-setsize')).eql('1')
|
|
.expect(getNthPinnedStatus(1).innerText).contains('this is unlisted')
|
|
.expect(getNthStatus(1).innerText).contains('I am going to pin this')
|
|
})
|
|
|
|
test('Can favorite a pinned status', async t => {
|
|
await loginAsFoobar(t)
|
|
await t
|
|
.click(avatarInComposeBox)
|
|
.expect(getNthPinnedStatus(1).getAttribute('aria-setsize')).eql('1')
|
|
.expect(getNthPinnedStatusFavoriteButton(1).getAttribute('aria-label')).eql('Favorite')
|
|
.click(getNthPinnedStatusFavoriteButton(1))
|
|
.expect(getNthPinnedStatusFavoriteButton(1).getAttribute('aria-label')).eql('Unfavorite')
|
|
.click(getNthPinnedStatusFavoriteButton(1))
|
|
.expect(getNthPinnedStatusFavoriteButton(1).getAttribute('aria-label')).eql('Favorite')
|
|
})
|
|
|
|
test('Saved pinned/unpinned state of status', async t => {
|
|
const timeout = 20000
|
|
await postAs('foobar', 'hey I am going to pin and unpin this')
|
|
await loginAsFoobar(t)
|
|
await t
|
|
.expect(getNthStatusContent(1).innerText).contains('hey I am going to pin and unpin this', { timeout })
|
|
.click(getNthStatusOptionsButton(1))
|
|
.expect(getNthDialogOptionsOption(2).innerText).contains('Pin to profile')
|
|
.click(getNthDialogOptionsOption(2))
|
|
await sleep(1)
|
|
await t
|
|
.click(getNthStatusOptionsButton(1))
|
|
.expect(getNthDialogOptionsOption(2).innerText).contains('Unpin from profile')
|
|
.click(closeDialogButton)
|
|
|
|
// scroll down and back up to force an unrender
|
|
await scrollToBottom()
|
|
await sleep(1)
|
|
await scrollToTop()
|
|
|
|
await t
|
|
.expect(getNthStatusContent(1).innerText).contains('hey I am going to pin and unpin this', { timeout })
|
|
.click(getNthStatusOptionsButton(1))
|
|
.expect(getNthDialogOptionsOption(2).innerText).contains('Unpin from profile', { timeout })
|
|
// navigate to another page and back to force another unrender
|
|
.click(settingsNavButton)
|
|
.click(homeNavButton)
|
|
.expect(getNthStatusContent(1).innerText).contains('hey I am going to pin and unpin this', { timeout })
|
|
.click(getNthStatusOptionsButton(1))
|
|
.expect(getNthDialogOptionsOption(2).innerText).contains('Unpin from profile', { timeout })
|
|
})
|