Added some tests
This commit is contained in:
parent
47211fb32c
commit
4efcda1b41
@ -142,7 +142,7 @@ const parseAttachment = (data) => {
|
|||||||
|
|
||||||
return output
|
return output
|
||||||
}
|
}
|
||||||
const addEmojis = (string, emojis) => {
|
export const addEmojis = (string, emojis) => {
|
||||||
return emojis.reduce((acc, emoji) => {
|
return emojis.reduce((acc, emoji) => {
|
||||||
return acc.replace(
|
return acc.replace(
|
||||||
new RegExp(`:${emoji.shortcode}:`, 'g'),
|
new RegExp(`:${emoji.shortcode}:`, 'g'),
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { parseStatus, parseUser, parseNotification } from '../../../../../src/services/entity_normalizer/entity_normalizer.service.js'
|
import { parseStatus, parseUser, parseNotification, addEmojis } from '../../../../../src/services/entity_normalizer/entity_normalizer.service.js'
|
||||||
import mastoapidata from '../../../../fixtures/mastoapi.json'
|
import mastoapidata from '../../../../fixtures/mastoapi.json'
|
||||||
import qvitterapidata from '../../../../fixtures/statuses.json'
|
import qvitterapidata from '../../../../fixtures/statuses.json'
|
||||||
|
|
||||||
@ -143,6 +143,23 @@ const makeMockNotificationQvitter = (overrides = {}) => {
|
|||||||
}, overrides)
|
}, overrides)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const makeMockEmojiMasto = (overrides = [{}]) => {
|
||||||
|
return [
|
||||||
|
Object.assign({
|
||||||
|
shortcode: 'image',
|
||||||
|
static_url: 'https://example.com/image.png',
|
||||||
|
url: 'https://example.com/image.png',
|
||||||
|
visible_in_picker: false
|
||||||
|
}, overrides[0]),
|
||||||
|
Object.assign({
|
||||||
|
shortcode: 'thinking',
|
||||||
|
static_url: 'https://example.com/think.png',
|
||||||
|
url: 'https://example.com/think.png',
|
||||||
|
visible_in_picker: false
|
||||||
|
}, overrides[1])
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
parseNotification
|
parseNotification
|
||||||
parseUser
|
parseUser
|
||||||
parseStatus
|
parseStatus
|
||||||
@ -218,6 +235,22 @@ describe('API Entities normalizer', () => {
|
|||||||
expect(parsedRepeat).to.have.property('retweeted_status')
|
expect(parsedRepeat).to.have.property('retweeted_status')
|
||||||
expect(parsedRepeat).to.have.deep.property('retweeted_status.id', 'deadbeef')
|
expect(parsedRepeat).to.have.deep.property('retweeted_status.id', 'deadbeef')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('adds emojis to post content', () => {
|
||||||
|
const post = makeMockStatusMasto({ emojis: makeMockEmojiMasto(), content: 'Makes you think :thinking:' })
|
||||||
|
|
||||||
|
const parsedPost = parseStatus(post)
|
||||||
|
|
||||||
|
expect(parsedPost).to.have.property('statusnet_html').that.contains('<img')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('adds emojis to subject line', () => {
|
||||||
|
const post = makeMockStatusMasto({ emojis: makeMockEmojiMasto(), spoiler_text: 'CW: 300 IQ :thinking:' })
|
||||||
|
|
||||||
|
const parsedPost = parseStatus(post)
|
||||||
|
|
||||||
|
expect(parsedPost).to.have.property('summary_html').that.contains('<img')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -230,6 +263,22 @@ describe('API Entities normalizer', () => {
|
|||||||
expect(parseUser(local)).to.have.property('is_local', true)
|
expect(parseUser(local)).to.have.property('is_local', true)
|
||||||
expect(parseUser(remote)).to.have.property('is_local', false)
|
expect(parseUser(remote)).to.have.property('is_local', false)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('adds emojis to user name', () => {
|
||||||
|
const user = makeMockUserMasto({ emojis: makeMockEmojiMasto(), display_name: 'The :thinking: thinker' })
|
||||||
|
|
||||||
|
const parsedUser = parseUser(user)
|
||||||
|
|
||||||
|
expect(parsedUser).to.have.property('name_html').that.contains('<img')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('adds emojis to user bio', () => {
|
||||||
|
const user = makeMockUserMasto({ emojis: makeMockEmojiMasto(), note: 'Hello i like to :thinking: a lot' })
|
||||||
|
|
||||||
|
const parsedUser = parseUser(user)
|
||||||
|
|
||||||
|
expect(parsedUser).to.have.property('description_html').that.contains('<img')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
// We currently use QvitterAPI notifications only, and especially due to MastoAPI lacking is_seen, support for MastoAPI
|
// We currently use QvitterAPI notifications only, and especially due to MastoAPI lacking is_seen, support for MastoAPI
|
||||||
@ -267,4 +316,28 @@ describe('API Entities normalizer', () => {
|
|||||||
expect(parseNotification(notif)).to.have.deep.property('from_profile.id', 'spurdo')
|
expect(parseNotification(notif)).to.have.deep.property('from_profile.id', 'spurdo')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('MastoAPI emoji adder', () => {
|
||||||
|
const emojis = makeMockEmojiMasto()
|
||||||
|
const imageHtml = '<img src="https://example.com/image.png" alt="image" class="emoji" />'
|
||||||
|
.replace(/"/g, '\'')
|
||||||
|
const thinkHtml = '<img src="https://example.com/think.png" alt="thinking" class="emoji" />'
|
||||||
|
.replace(/"/g, '\'')
|
||||||
|
|
||||||
|
it('correctly replaces shortcodes in supplied string', () => {
|
||||||
|
const result = addEmojis('This post has :image: emoji and :thinking: emoji', emojis)
|
||||||
|
expect(result).to.include(thinkHtml)
|
||||||
|
expect(result).to.include(imageHtml)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('handles consecutive emojis correctly', () => {
|
||||||
|
const result = addEmojis('Lelel emoji spam :thinking::thinking::thinking::thinking:', emojis)
|
||||||
|
expect(result).to.include(thinkHtml + thinkHtml + thinkHtml + thinkHtml)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Doesn\'t replace nonexistent emojis', () => {
|
||||||
|
const result = addEmojis('Admin add the :tenshi: emoji', emojis)
|
||||||
|
expect(result).to.equal('Admin add the :tenshi: emoji')
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user