import 'package:flutter_test/flutter_test.dart'; import 'package:melo/services/cover_cache.dart'; /// Der Schlüssel entscheidet, ob der Cover-Ordner je einen Treffer liefert. void main() { Uri cover(String id, {String token = 'abc', String salt = 'xyz'}) => Uri.parse('https://musik.example/rest/getCoverArt.view' '?id=$id&u=dustin&t=$token&s=$salt&v=1.16.1&c=Melo&f=json'); group('dateiName', () { test('dasselbe Cover ergibt denselben Namen', () { expect(CoverCache.dateiName(cover('al-7')), CoverCache.dateiName(cover('al-7'))); }); test('Token und Salt ändern den Namen nicht', () { // Beides wird bei jedem App-Start neu gewürfelt. Flösse es ein, wäre // dasselbe Bild jedes Mal ein anderer Eintrag — der Ordner wüchse, // ohne je einen Treffer zu liefern. expect( CoverCache.dateiName(cover('al-7', token: 'aaa', salt: 'bbb')), CoverCache.dateiName(cover('al-7', token: 'ccc', salt: 'ddd')), ); }); test('verschiedene Cover ergeben verschiedene Namen', () { expect(CoverCache.dateiName(cover('al-7')), isNot(CoverCache.dateiName(cover('al-8')))); }); test('eine Adresse ohne id fällt auf den Pfad zurück', () { expect( CoverCache.dateiName(Uri.parse('https://musik.example/bild.jpg')), isNot(CoverCache.dateiName(Uri.parse('https://musik.example/x.jpg'))), ); }); test('endet auf .img', () { expect(CoverCache.dateiName(cover('al-7')), endsWith('.img')); }); }); }