77 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import { loginAsLockedAccount } from '../roles'
 | 
						|
import { followAs, unfollowAs } from '../serverActions'
 | 
						|
import {
 | 
						|
  avatarInComposeBox,
 | 
						|
  communityNavButton, followersButton, getNthSearchResult, getSearchResultByHref, getUrl, goBack,
 | 
						|
  homeNavButton, sleep
 | 
						|
} from '../utils'
 | 
						|
import { users } from '../users'
 | 
						|
import { Selector as $ } from 'testcafe'
 | 
						|
 | 
						|
fixture`116-follow-requests.js`
 | 
						|
  .page`http://localhost:4002`
 | 
						|
 | 
						|
const timeout = 30000
 | 
						|
 | 
						|
test('Can approve and reject follow requests', async t => {
 | 
						|
  await loginAsLockedAccount(t)
 | 
						|
 | 
						|
  // necessary for re-running this test in local testing
 | 
						|
  await Promise.all([
 | 
						|
    unfollowAs('admin', 'LockedAccount'),
 | 
						|
    unfollowAs('baz', 'LockedAccount'),
 | 
						|
    unfollowAs('quux', 'LockedAccount')
 | 
						|
  ])
 | 
						|
 | 
						|
  await Promise.all([
 | 
						|
    followAs('admin', 'LockedAccount'),
 | 
						|
    followAs('baz', 'LockedAccount'),
 | 
						|
    followAs('quux', 'LockedAccount')
 | 
						|
  ])
 | 
						|
 | 
						|
  await sleep(2000)
 | 
						|
 | 
						|
  const approveAdminButton = () => getSearchResultByHref(`/accounts/${users.admin.id}`).find('button:nth-child(1)')
 | 
						|
  const rejectBazButton = () => getSearchResultByHref(`/accounts/${users.baz.id}`).find('button:nth-child(2)')
 | 
						|
  const approveQuuxButton = () => getSearchResultByHref(`/accounts/${users.quux.id}`).find('button:nth-child(1)')
 | 
						|
 | 
						|
  await t.click(communityNavButton)
 | 
						|
    .click($('a[href="/requests"]'))
 | 
						|
    // no guaranteed order on these
 | 
						|
    .expect(getNthSearchResult(1).innerText).match(/(@admin|@baz|@quux)/)
 | 
						|
    .expect(getNthSearchResult(2).innerText).match(/(@admin|@baz|@quux)/)
 | 
						|
    .expect(getNthSearchResult(3).innerText).match(/(@admin|@baz|@quux)/)
 | 
						|
    .expect(getNthSearchResult(4).exists).notOk()
 | 
						|
    // approve admin
 | 
						|
    .expect(approveAdminButton().getAttribute('aria-label')).eql('Approve')
 | 
						|
    .hover(approveAdminButton())
 | 
						|
    .click(approveAdminButton())
 | 
						|
    .expect(getNthSearchResult(1).innerText).match(/(@baz|@quux)/, { timeout })
 | 
						|
    .expect(getNthSearchResult(2).innerText).match(/(@baz|@quux)/)
 | 
						|
    .expect(getNthSearchResult(3).exists).notOk()
 | 
						|
  await goBack()
 | 
						|
  await t
 | 
						|
    .click($('a[href="/requests"]'))
 | 
						|
    // reject baz
 | 
						|
    .expect(rejectBazButton().getAttribute('aria-label')).eql('Reject')
 | 
						|
    .hover(rejectBazButton())
 | 
						|
    .click(rejectBazButton())
 | 
						|
    .expect(getNthSearchResult(1).innerText).contains('@quux', { timeout })
 | 
						|
    .expect(getNthSearchResult(2).exists).notOk()
 | 
						|
  await goBack()
 | 
						|
  await t
 | 
						|
    .click($('a[href="/requests"]'))
 | 
						|
    // approve quux
 | 
						|
    .expect(approveQuuxButton().getAttribute('aria-label')).eql('Approve')
 | 
						|
    .hover(approveQuuxButton())
 | 
						|
    .click(approveQuuxButton())
 | 
						|
    .expect(getNthSearchResult(1).exists).notOk({ timeout })
 | 
						|
    // check our follow list to make sure they follow us
 | 
						|
    .click(homeNavButton)
 | 
						|
    .click(avatarInComposeBox)
 | 
						|
    .expect(getUrl()).contains(`/accounts/${users.LockedAccount.id}`)
 | 
						|
    .click(followersButton)
 | 
						|
    .expect(getNthSearchResult(1).innerText).match(/(@admin|@quux)/)
 | 
						|
    .expect(getNthSearchResult(2).innerText).match(/(@admin|@quux)/)
 | 
						|
    .expect(getNthSearchResult(3).exists).notOk()
 | 
						|
})
 |