| | import { describe, expect, test } from 'vitest' |
| |
|
| | import { analyzeComment, getGuessedLanguage } from '../lib/analyze-comment' |
| |
|
| | describe('analyzeComment', () => { |
| | test('email only', async () => { |
| | |
| | { |
| | const { signals, rating } = await analyzeComment(' foo@example.com \n') |
| | expect(signals.includes('email-only')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| |
|
| | |
| | { |
| | const { signals } = await analyzeComment('one@example.com\ntwo@example.com') |
| | expect(signals.includes('email-only')).toBeFalsy() |
| | } |
| | { |
| | const { signals } = await analyzeComment('one@two@thee') |
| | expect(signals.includes('email-only')).toBeFalsy() |
| | } |
| | }) |
| |
|
| | test('contains email', async () => { |
| | const { signals, rating } = await analyzeComment(' foo@example.com and more words here\n') |
| | expect(signals.includes('contains-email')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | }) |
| |
|
| | test('url only', async () => { |
| | |
| | { |
| | const { signals, rating } = await analyzeComment(' https://github.com ') |
| | expect(signals.includes('url-only')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| | { |
| | const { signals, rating } = await analyzeComment( |
| | ' http://user:pass@github.com/path?query=string#hash', |
| | ) |
| | expect(signals.includes('url-only')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| |
|
| | |
| | { |
| | const { signals } = await analyzeComment('https://example.com but more text') |
| | expect(signals.includes('url-only')).toBeFalsy() |
| | } |
| | { |
| | const { signals } = await analyzeComment('foo.bar.com') |
| | expect(signals.includes('url-only')).toBeFalsy() |
| | } |
| | }) |
| |
|
| | test('numbers only', async () => { |
| | |
| | { |
| | const { signals, rating } = await analyzeComment(' 1234 ') |
| | expect(signals.includes('numbers-only')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| | { |
| | const { signals, rating } = await analyzeComment('123 456') |
| | expect(signals.includes('numbers-only')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| |
|
| | |
| | { |
| | const { signals } = await analyzeComment('123 fake street') |
| | expect(signals.includes('numbers-only')).toBeFalsy() |
| | } |
| | { |
| | const { signals } = await analyzeComment('00000-11111') |
| | expect(signals.includes('numbers-only')).toBeFalsy() |
| | } |
| | }) |
| |
|
| | test('all uppercase', async () => { |
| | |
| | { |
| | const { signals, rating } = await analyzeComment(' SHOUTING ') |
| | expect(signals.includes('all-uppercase')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| | { |
| | const { signals, rating } = await analyzeComment('ALS0 SHOUTING!') |
| | expect(signals.includes('all-uppercase')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| |
|
| | |
| | { |
| | const { signals } = await analyzeComment('Not All Uppercase') |
| | expect(signals.includes('all-uppercase')).toBeFalsy() |
| | } |
| | }) |
| |
|
| | test('too-short', async () => { |
| | |
| | { |
| | const { signals, rating } = await analyzeComment('Oneword ') |
| | expect(signals.includes('too-short')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| | { |
| | const { signals, rating } = await analyzeComment('.!?') |
| | expect(signals.includes('too-short')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| | { |
| | const { signals, rating } = await analyzeComment(' Oneword two words') |
| | expect(signals.includes('too-short')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| | { |
| | const { signals, rating } = await analyzeComment('A\nB') |
| | expect(signals.includes('too-short')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| |
|
| | |
| | { |
| | const { signals } = await analyzeComment('A\nB\nC\nD') |
| | expect(signals.includes('too-short')).toBeFalsy() |
| | } |
| | { |
| | const { signals } = await analyzeComment('One two three four ') |
| | expect(signals.includes('too-short')).toBeFalsy() |
| | } |
| | }) |
| |
|
| | test('single-word', async () => { |
| | |
| | { |
| | const { signals, rating } = await analyzeComment(' Word ') |
| | expect(signals.includes('single-word')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| | { |
| | const { signals, rating } = await analyzeComment('.!?') |
| | expect(signals.includes('single-word')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| | { |
| | const { signals, rating } = await analyzeComment('www.example.com/some/path') |
| | expect(signals.includes('single-word')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| |
|
| | |
| | { |
| | const { signals } = await analyzeComment('One two') |
| | expect(signals.includes('single-word')).toBeFalsy() |
| | } |
| | { |
| | const { signals } = await analyzeComment(' one two\tthree ') |
| | expect(signals.includes('single-word')).toBeFalsy() |
| | } |
| | }) |
| |
|
| | test('not-language', async () => { |
| | |
| | { |
| | const { signals, rating } = await analyzeComment('Garçon') |
| | expect(signals.includes('not-language')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| | { |
| | |
| | const { signals, rating } = await analyzeComment('english word') |
| | expect(signals.includes('not-language')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| |
|
| | |
| | { |
| | const { signals } = await analyzeComment('english words longer sentence this time') |
| | expect(signals.includes('not-language')).toBeFalsy() |
| | } |
| | |
| | { |
| | const { signals } = await analyzeComment('english words longer sentence this time', 'fr') |
| | expect(signals.includes('not-language')).toBeFalsy() |
| | } |
| | { |
| | const { signals } = await analyzeComment('Garçon des la voituré', 'fr') |
| | expect(signals.includes('not-language')).toBeFalsy() |
| | } |
| | }) |
| |
|
| | test('cuss-words-likely', async () => { |
| | |
| | const { signals, rating } = await analyzeComment('f*CK you'.replace('*', 'u')) |
| | expect(signals.includes('cuss-words-likely')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | }) |
| |
|
| | test('cuss-words-maybe', async () => { |
| | const { signals, rating } = await analyzeComment('oh s**t'.replace('**', 'hi')) |
| | expect(signals.includes('cuss-words-maybe')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | }) |
| |
|
| | test('mostly-emoji', async () => { |
| | |
| | { |
| | const { signals, rating } = await analyzeComment('Hello World\n 😆 😆 😆 😆 😆 😆\n') |
| | expect(signals.includes('mostly-emoji')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| | { |
| | const { signals, rating } = await analyzeComment('🌈 🌈 🌧️\n') |
| | expect(signals.includes('mostly-emoji')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| |
|
| | |
| | { |
| | const { signals } = await analyzeComment('Great 👍') |
| | expect(signals.includes('mostly-emoji')).toBeFalsy() |
| | } |
| | }) |
| |
|
| | test('spammy-words', async () => { |
| | |
| | { |
| | const { signals, rating } = await analyzeComment('Roblox free roblux') |
| | expect(signals.includes('spammy-words')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| | { |
| | const { signals, rating } = await analyzeComment('GOOGLE \n\nGAME') |
| | expect(signals.includes('spammy-words')).toBeTruthy() |
| | expect(rating).toBeLessThan(1.0) |
| | } |
| |
|
| | |
| | { |
| | const { signals } = await analyzeComment('GitHub is great!') |
| | expect(signals.includes('spammy-words')).toBeFalsy() |
| | } |
| | |
| | { |
| | const { signals } = await analyzeComment('MinecraftFacebook') |
| | expect(signals.includes('spammy-words')).toBeFalsy() |
| | } |
| | }) |
| |
|
| | test('guessed-language', async () => { |
| | |
| | { |
| | const guessedLanguage = await getGuessedLanguage('Garçon des la voituré') |
| | expect(guessedLanguage).toBe('fr') |
| | } |
| | { |
| | const guessedLanguage = await getGuessedLanguage('english words longer sentence this time') |
| | expect(guessedLanguage).toBe('en') |
| | } |
| |
|
| | |
| | { |
| | const guessedLanguage = await analyzeComment('Hello') |
| | expect(guessedLanguage).not.toBe('en') |
| | } |
| | { |
| | const guessedLanguage = await analyzeComment('Garçon') |
| | expect(guessedLanguage).not.toBe('fr') |
| | } |
| | }) |
| | }) |
| |
|