97 lines
3.7 KiB
TypeScript
97 lines
3.7 KiB
TypeScript
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
import { SettingsDeleteAllPlaylistsDialogComponent } from './settings-delete-all-playlists-dialog.component';
|
|
|
|
describe('SettingsDeleteAllPlaylistsDialogComponent', () => {
|
|
let component: SettingsDeleteAllPlaylistsDialogComponent;
|
|
let fixture: ComponentFixture<SettingsDeleteAllPlaylistsDialogComponent>;
|
|
let translate: TranslateService;
|
|
|
|
beforeEach(async () => {
|
|
await TestBed.configureTestingModule({
|
|
imports: [
|
|
SettingsDeleteAllPlaylistsDialogComponent,
|
|
NoopAnimationsModule,
|
|
TranslateModule.forRoot(),
|
|
],
|
|
providers: [
|
|
{
|
|
provide: MAT_DIALOG_DATA,
|
|
useValue: {
|
|
summary: {
|
|
total: 6,
|
|
m3u: 3,
|
|
xtream: 2,
|
|
stalker: 1,
|
|
},
|
|
},
|
|
},
|
|
],
|
|
}).compileComponents();
|
|
|
|
translate = TestBed.inject(TranslateService);
|
|
translate.setTranslation(
|
|
'en',
|
|
{
|
|
CANCEL: 'Cancel',
|
|
HOME: {
|
|
PLAYLIST_TYPES: {
|
|
M3U: 'M3U',
|
|
XTREAM: 'Xtream',
|
|
STALKER: 'Stalker',
|
|
},
|
|
},
|
|
SETTINGS: {
|
|
REMOVE_DIALOG: {
|
|
TITLE: 'Delete all playlists?',
|
|
MESSAGE: 'Delete all {{count}} playlists from the app.',
|
|
SUMMARY_TITLE: 'Playlist sources',
|
|
CONSEQUENCES_TITLE: 'This also removes',
|
|
CONSEQUENCE_FAVORITES: 'Favorites',
|
|
CONSEQUENCE_RECENTLY_VIEWED: 'Recently viewed history',
|
|
CONSEQUENCE_PLAYBACK: 'Playback positions',
|
|
CONSEQUENCE_DOWNLOADS: 'Download history',
|
|
CONSEQUENCE_XTREAM_CACHE: 'Xtream cache',
|
|
BACKUP_HINT: 'Use Export first if you need a backup.',
|
|
CONFIRM: 'Delete everything',
|
|
},
|
|
},
|
|
},
|
|
true
|
|
);
|
|
translate.use('en');
|
|
|
|
fixture = TestBed.createComponent(
|
|
SettingsDeleteAllPlaylistsDialogComponent
|
|
);
|
|
component = fixture.componentInstance;
|
|
fixture.detectChanges();
|
|
});
|
|
|
|
it('renders the playlist type summary and destructive guidance', () => {
|
|
const text = (fixture.nativeElement as HTMLElement).textContent ?? '';
|
|
|
|
expect(component.summaryItems().map((item) => item.count)).toEqual([
|
|
3, 2, 1,
|
|
]);
|
|
expect(text).toContain('Delete all playlists?');
|
|
expect(text).toContain('Delete all 6 playlists from the app.');
|
|
expect(text).toContain('Playlist sources');
|
|
expect(text).toContain('M3U');
|
|
expect(text).toContain('Xtream');
|
|
expect(text).toContain('Stalker');
|
|
expect(text).toContain('Favorites');
|
|
expect(text).toContain('Use Export first if you need a backup.');
|
|
});
|
|
|
|
it('renders cancel and confirm actions', () => {
|
|
const buttons = Array.from(
|
|
(fixture.nativeElement as HTMLElement).querySelectorAll('button')
|
|
).map((button) => button.textContent?.trim());
|
|
|
|
expect(buttons).toEqual(['Cancel', 'Delete everything']);
|
|
});
|
|
});
|