v2.31 — Login, Einstellungen & Cloud Sync Redesign
- Login-Screen im Melo-Design (Schwarz+Rot) mit Baka-Auth JWT
- AuthService fuer Token-Management ueber baka-net.de/auth
- Registrierungs-Modus + 'Ohne Login fortfahren'
- Navidrome-Credentials optional im Login aufklappbar
- SettingsScreen ersetzt AlertDialog
- BottomNav navigiert statt Dialog zu triggern
- Cloud Sync, Server verbinden, Diagnosedaten, App-Info, Abmelden
- CloudEinstellungen-Dialog entfernt, alles in CloudScreen konsolidiert
- Hardcode login('Baka','') entfernt → AuthService.benutzer
- Gradient-Statuskarte, animierte Segment-Intervall-Auswahl
- JWT Authorization statt Klartext-Passwort
- AppConfig: API-Key defaultValue entfernt (kein Fallback-Leak)
- Build crasht ohne --dart-define MELO_API_KEY
Build: split APK (arm64 19.6M, armeabi 17.1M, x86_64 21.1M)
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:melo_app/models/song.dart';
|
||||
|
||||
void main() {
|
||||
group('Song Model', () {
|
||||
test('toMap / fromMap roundtrip', () {
|
||||
final song = Song(
|
||||
id: 1,
|
||||
titel: 'Test Song',
|
||||
kuenstler: 'Test Artist',
|
||||
album: 'Test Album',
|
||||
dauerSekunden: 180,
|
||||
dateiPfad: '/music/test.mp3',
|
||||
groesseBytes: 5242880,
|
||||
istHeruntergeladen: true,
|
||||
downloadQuelle: 'local',
|
||||
);
|
||||
|
||||
final map = song.toMap();
|
||||
final restored = Song.fromMap(map);
|
||||
|
||||
expect(restored.titel, song.titel);
|
||||
expect(restored.kuenstler, song.kuenstler);
|
||||
expect(restored.album, song.album);
|
||||
expect(restored.dauerSekunden, song.dauerSekunden);
|
||||
expect(restored.dateiPfad, song.dateiPfad);
|
||||
expect(restored.groesseBytes, song.groesseBytes);
|
||||
expect(restored.istHeruntergeladen, song.istHeruntergeladen);
|
||||
});
|
||||
|
||||
test('dauerFormatiert formats correctly', () {
|
||||
final song = Song(
|
||||
titel: 'Test', kuenstler: 'T', dauerSekunden: 125, dateiPfad: '',
|
||||
);
|
||||
expect(song.dauerFormatiert, '2:05');
|
||||
|
||||
final short = Song(
|
||||
titel: 'Test', kuenstler: 'T', dauerSekunden: 7, dateiPfad: '',
|
||||
);
|
||||
expect(short.dauerFormatiert, '0:07');
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user