kopia lustrzana https://github.com/nolanlawson/pinafore
				
				
				
			
		
			
				
	
	
		
			94 wiersze
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			94 wiersze
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
| import { Selector as $ } from 'testcafe'
 | |
| import {
 | |
|   composeButton, composeInput, composeLengthIndicator, emojiButton, getComposeSelectionStart, getUrl,
 | |
|   homeNavButton,
 | |
|   notificationsNavButton
 | |
| } from '../utils'
 | |
| import { foobarRole } from '../roles'
 | |
| import times from 'lodash/times'
 | |
| 
 | |
| fixture`012-compose.js`
 | |
|   .page`http://localhost:4002`
 | |
| 
 | |
| test('shows compose limits', async t => {
 | |
|   await t.useRole(foobarRole)
 | |
|     .hover(composeInput)
 | |
|     .expect(composeLengthIndicator.innerText).eql('500')
 | |
|     .expect(composeButton.hasAttribute('disabled')).notOk()
 | |
|     .typeText(composeInput, 'typing some text')
 | |
|     .expect(composeLengthIndicator.innerText).eql('484')
 | |
|     .expect(composeButton.hasAttribute('disabled')).notOk()
 | |
|     .typeText(composeInput, times(50, () => 'hello world').join(' '), {replace: true, paste: true})
 | |
|     .expect(composeLengthIndicator.innerText).eql('-99')
 | |
|     .expect(composeButton.getAttribute('disabled')).eql('')
 | |
|     .typeText(composeInput, 'hello world', {replace: true})
 | |
|     .click(notificationsNavButton)
 | |
|     .expect(getUrl()).contains('/notifications')
 | |
|     .click(homeNavButton)
 | |
|     .expect(getUrl()).eql('http://localhost:4002/')
 | |
|     .expect(composeInput.value).eql('hello world')
 | |
|     .expect(composeLengthIndicator.innerText).eql('489')
 | |
|     .expect(composeButton.hasAttribute('disabled')).notOk()
 | |
|     .selectText(composeInput)
 | |
|     .pressKey('delete')
 | |
|     .expect(composeInput.value).eql('')
 | |
|     .expect(composeLengthIndicator.innerText).eql('500')
 | |
|     .expect(composeButton.hasAttribute('disabled')).notOk()
 | |
| })
 | |
| 
 | |
| test('shows compose limits for URLs/handles', async t => {
 | |
|   await t.useRole(foobarRole)
 | |
|     .expect(composeLengthIndicator.innerText).eql('500')
 | |
|     .expect(composeButton.hasAttribute('disabled')).notOk()
 | |
|     .typeText(composeInput, 'hello world ' +
 | |
|       'http://foo.bar.baz.whatever.example.com/hello ' +
 | |
|       '@reallylongnamethatstretchesonandon@foo.example.com', {paste: true})
 | |
|     .expect(composeLengthIndicator.innerText).eql('429')
 | |
|     .expect(composeButton.hasAttribute('disabled')).notOk()
 | |
| })
 | |
| 
 | |
| test('shows compose limits for emoji', async t => {
 | |
|   await t.useRole(foobarRole)
 | |
|     .typeText(composeInput, 'hello world \ud83c\ude01 \ud83d\udc6a')
 | |
|     .expect(composeLengthIndicator.innerText).eql('485')
 | |
|     .expect(composeButton.hasAttribute('disabled')).notOk()
 | |
| })
 | |
| 
 | |
| test('shows compose limits for custom emoji', async t => {
 | |
|   await t.useRole(foobarRole)
 | |
|     .typeText(composeInput, 'hello world ')
 | |
|     .click(emojiButton)
 | |
|     .click($('button img[title=":blobnom:"]'))
 | |
|     .expect(composeInput.value).eql('hello world :blobnom: ')
 | |
|     .expect(composeLengthIndicator.innerText).eql('478')
 | |
| })
 | |
| 
 | |
| test('inserts custom emoji correctly', async t => {
 | |
|   await t.useRole(foobarRole)
 | |
|     .typeText(composeInput, 'hello world')
 | |
|     .selectText(composeInput, 6, 6)
 | |
|     .expect(getComposeSelectionStart()).eql(6)
 | |
|     .click(emojiButton)
 | |
|     .click($('button img[title=":blobpats:"]'))
 | |
|     .expect(composeInput.value).eql('hello :blobpats: world')
 | |
|     .selectText(composeInput, 0, 0)
 | |
|     .expect(getComposeSelectionStart()).eql(0)
 | |
|     .click(emojiButton)
 | |
|     .click($('button img[title=":blobnom:"]'))
 | |
|     .expect(composeInput.value).eql(':blobnom: hello :blobpats: world')
 | |
|     .typeText(composeInput, ' foobar ')
 | |
|     .click(emojiButton)
 | |
|     .click($('button img[title=":blobpeek:"]'))
 | |
|     .expect(composeInput.value).eql(':blobnom: hello :blobpats: world foobar :blobpeek: ')
 | |
| })
 | |
| 
 | |
| test('inserts emoji without typing anything', async t => {
 | |
|   await t.useRole(foobarRole)
 | |
|     .click(emojiButton)
 | |
|     .click($('button img[title=":blobpats:"]'))
 | |
|     .expect(composeInput.value).eql(':blobpats: ')
 | |
|     .click(emojiButton)
 | |
|     .click($('button img[title=":blobpeek:"]'))
 | |
|     .expect(composeInput.value).eql(':blobpeek: :blobpats: ')
 | |
| })
 |