|
|
@@ -481,6 +481,30 @@ describe('home learning modules', () => {
|
|
|
expect(harness.routeNativeElement?.querySelector('.pending-column .word-select-list > button.selected')).not.toBeNull();
|
|
|
});
|
|
|
|
|
|
+ it('pronounces a wordbook word on row click and only once on speaker click', async () => {
|
|
|
+ const api = TestBed.inject(ApiService) as unknown as LearningModulesApiService;
|
|
|
+ const get = api.get.bind(api);
|
|
|
+ spyOn(api, 'get').and.callFake((action, params) => action === 'e_words_list'
|
|
|
+ ? of({ retcode: 1, result: [{ GeneralID: 601, xxcs: 1, detail: [{ GeneralID: 701, Title: 'tend', yp: 'UploadFiles/tend.mp3' }] }],
|
|
|
+ page: { itemCount: 1, pageCount: 1, pageIndex: 1, pageSize: Number(params?.['psize']) } } as ApiEnvelope<any>)
|
|
|
+ : get(action, params));
|
|
|
+ const play = spyOn(TestBed.inject(PlatformService), 'play');
|
|
|
+ const harness = await RouterTestingHarness.create();
|
|
|
+ await harness.navigateByUrl('/pages/member/starshop');
|
|
|
+ harness.fixture.detectChanges();
|
|
|
+ const row = harness.routeNativeElement?.querySelector('.pending-column .word-select-list > button') as HTMLButtonElement;
|
|
|
+ row.querySelector('strong')!.click();
|
|
|
+ harness.fixture.detectChanges();
|
|
|
+ expect(row.classList.contains('selected')).toBeTrue();
|
|
|
+ expect(play).toHaveBeenCalledTimes(1);
|
|
|
+ expect(play.calls.mostRecent().args[0]).toBe('UploadFiles/tend.mp3');
|
|
|
+ expect(play.calls.mostRecent().args[0]).not.toContain('UploadFiles/UploadFiles');
|
|
|
+ (row.querySelector('.audio') as HTMLElement).click();
|
|
|
+ harness.fixture.detectChanges();
|
|
|
+ expect(play).toHaveBeenCalledTimes(2);
|
|
|
+ expect(row.classList.contains('selected')).toBeTrue();
|
|
|
+ });
|
|
|
+
|
|
|
it('shows 30 wordbook words per page while counting every learning status', async () => {
|
|
|
const api = TestBed.inject(ApiService) as unknown as LearningModulesApiService;
|
|
|
const get = api.get.bind(api);
|