-
Notifications
You must be signed in to change notification settings - Fork 93
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
25 changed files
with
451 additions
and
276 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
import { ApplicationConfig } from '@angular/core'; | ||
import { provideEmojiLoader } from '@ctrl/ngx-emoji-mart/ngx-emoji'; | ||
import { from, map } from 'rxjs'; | ||
|
||
export const appConfig: ApplicationConfig = { | ||
providers: [ | ||
provideEmojiLoader({ | ||
skins: () => from(import('@ctrl/ngx-emoji-mart/emojis')).pipe(map(m => m.skins)), | ||
emojis: () => from(import('@ctrl/ngx-emoji-mart/emojis')).pipe(map(m => m.emojis)), | ||
categories: () => from(import('@ctrl/ngx-emoji-mart/emojis')).pipe(map(m => m.categories)), | ||
}), | ||
], | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,43 +1,45 @@ | ||
import { inject, TestBed, waitForAsync } from '@angular/core/testing'; | ||
import { of } from 'rxjs'; | ||
|
||
import { EmojiService } from '@ctrl/ngx-emoji-mart/ngx-emoji'; | ||
import { EmojiService, provideEmojiLoader } from './ngx-emoji'; | ||
import { categories, emojis, skins } from './emojis'; | ||
import { EmojiFrequentlyService } from './emoji-frequently.service'; | ||
|
||
describe('EmojiFrequently', () => { | ||
beforeEach( | ||
waitForAsync(() => { | ||
localStorage.clear(); | ||
TestBed.configureTestingModule({}).compileComponents(); | ||
}), | ||
); | ||
beforeEach(waitForAsync(() => { | ||
localStorage.clear(); | ||
TestBed.configureTestingModule({ | ||
providers: [ | ||
provideEmojiLoader({ | ||
skins: () => of(skins), | ||
emojis: () => of(emojis), | ||
categories: () => of(categories), | ||
}), | ||
], | ||
}).compileComponents(); | ||
})); | ||
|
||
it( | ||
'should get default', | ||
inject([EmojiFrequentlyService], (ef: EmojiFrequentlyService) => { | ||
const defaults = ef.get(ef.DEFAULTS.length, 4); | ||
expect(defaults.length).toEqual(ef.DEFAULTS.length); | ||
}), | ||
); | ||
it('should get default', inject([EmojiFrequentlyService], (ef: EmojiFrequentlyService) => { | ||
const defaults = ef.get(ef.DEFAULTS.length, 4); | ||
expect(defaults.length).toEqual(ef.DEFAULTS.length); | ||
})); | ||
|
||
it( | ||
'should get shorter default', | ||
inject([EmojiFrequentlyService], (ef: EmojiFrequentlyService) => { | ||
it('should get shorter default', inject( | ||
[EmojiFrequentlyService], | ||
(ef: EmojiFrequentlyService) => { | ||
const defaults = ef.get(8, 4); | ||
expect(defaults.length).toEqual(8); | ||
}), | ||
); | ||
}, | ||
)); | ||
|
||
it( | ||
'should add emoji', | ||
inject( | ||
[EmojiFrequentlyService, EmojiService], | ||
(ef: EmojiFrequentlyService, es: EmojiService) => { | ||
const pineapple = es.getData('pineapple'); | ||
ef.get(8, 4); | ||
ef.add(pineapple!); | ||
const result = ef.get(8, 4); | ||
expect(result.length).toEqual(9); | ||
}, | ||
), | ||
); | ||
it('should add emoji', inject( | ||
[EmojiFrequentlyService, EmojiService], | ||
(ef: EmojiFrequentlyService, es: EmojiService) => { | ||
const pineapple = es.getData('pineapple'); | ||
ef.get(8, 4); | ||
ef.add(pineapple!); | ||
const result = ef.get(8, 4); | ||
expect(result.length).toEqual(9); | ||
}, | ||
)); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,58 +1,62 @@ | ||
import { inject, TestBed, waitForAsync } from '@angular/core/testing'; | ||
import { TestBed, waitForAsync } from '@angular/core/testing'; | ||
import { firstValueFrom, of } from 'rxjs'; | ||
|
||
import { EmojiData } from '@ctrl/ngx-emoji-mart/ngx-emoji'; | ||
import { EmojiData, provideEmojiLoader } from '@ctrl/ngx-emoji-mart/ngx-emoji'; | ||
|
||
import { categories, emojis, skins } from './emojis'; | ||
import { EmojiSearch } from './emoji-search.service'; | ||
|
||
describe('EmojiSearch', () => { | ||
let es: EmojiSearch; | ||
|
||
beforeEach(waitForAsync(() => { | ||
TestBed.configureTestingModule({}).compileComponents(); | ||
TestBed.configureTestingModule({ | ||
providers: [ | ||
provideEmojiLoader({ | ||
skins: () => of(skins), | ||
emojis: () => of(emojis), | ||
categories: () => of(categories), | ||
}), | ||
], | ||
}); | ||
})); | ||
|
||
it('should return nothing', inject([EmojiSearch], (es: EmojiSearch) => { | ||
expect(es.search('')).toEqual(null); | ||
})); | ||
beforeEach(() => { | ||
es = TestBed.inject(EmojiSearch); | ||
}); | ||
|
||
it('should search', inject([EmojiSearch], (es: EmojiSearch) => { | ||
const res = es.search('pineapple'); | ||
it('should return nothing', async () => { | ||
expect(await firstValueFrom(es.search(''))).toEqual(null); | ||
}); | ||
|
||
it('should search', async () => { | ||
const res = await firstValueFrom(es.search('pineapple')); | ||
expect(res).toBeDefined(); | ||
expect(res!.length).toBe(1); | ||
expect(res![0].name).toBe('Pineapple'); | ||
})); | ||
|
||
it('should filter only emojis we care about, exclude pineapple', inject( | ||
[EmojiSearch], | ||
(es: EmojiSearch) => { | ||
const emojisToShowFilter = (data: EmojiData) => { | ||
return data.unified !== '1F34D'; | ||
}; | ||
const apples = es.search('apple', emojisToShowFilter)!.map(obj => obj.id); | ||
expect(apples.length).toBe(3); | ||
expect(apples).not.toContain('pineapple'); | ||
}, | ||
)); | ||
|
||
it('can include/exclude categories', inject( | ||
[EmojiSearch], | ||
(es: EmojiSearch) => { | ||
expect(es.search('flag', undefined, undefined, ['people'])).toEqual([]); | ||
}, | ||
)); | ||
|
||
it('can search for thinking_face', inject( | ||
[EmojiSearch], | ||
(es: EmojiSearch) => { | ||
expect(es.search('thinking_fac')!.map((x: any) => x.id)).toEqual([ | ||
'thinking_face', | ||
]); | ||
}, | ||
)); | ||
|
||
it('can search for woman-facepalming', inject( | ||
[EmojiSearch], | ||
(es: EmojiSearch) => { | ||
expect(es.search('woman-facep')!.map(x => x.id)).toEqual([ | ||
'woman-facepalming', | ||
]); | ||
}, | ||
)); | ||
}); | ||
|
||
it('should filter only emojis we care about, exclude pineapple', async () => { | ||
const emojisToShowFilter = (data: EmojiData) => { | ||
return data.unified !== '1F34D'; | ||
}; | ||
const res = await firstValueFrom(es.search('apple', emojisToShowFilter)); | ||
const apples = res!.map(obj => obj.id); | ||
expect(apples.length).toBe(3); | ||
expect(apples).not.toContain('pineapple'); | ||
}); | ||
|
||
it('can include/exclude categories', async () => { | ||
expect(await firstValueFrom(es.search('flag', undefined, undefined, ['people']))).toEqual([]); | ||
}); | ||
|
||
it('can search for thinking_face', async () => { | ||
const res = await firstValueFrom(es.search('thinking_fac')); | ||
expect(res!.map((x: any) => x.id)).toEqual(['thinking_face']); | ||
}); | ||
|
||
it('can search for woman-facepalming', async () => { | ||
const res = await firstValueFrom(es.search('woman-facep')); | ||
expect(res!.map(x => x.id)).toEqual(['woman-facepalming']); | ||
}); | ||
}); |
Oops, something went wrong.