add import export and items

This commit is contained in:
atseirjo
2026-10-28 08:10:55 +01:00
parent 07a1bb02fd
commit 4a1731f986
22 changed files with 1118 additions and 106 deletions
+73 -9
View File
@@ -16,7 +16,6 @@ import 'package:ertl_filament_verwaltung/pages/home_view.dart';
import 'package:ertl_filament_verwaltung/services/get_storage_services.dart';
import 'package:ertl_filament_verwaltung/theme/app_theme.dart';
import 'package:ertl_filament_verwaltung/widgets/filament_card.dart';
import 'package:ertl_filament_verwaltung/widgets/entry_panel.dart';
import 'package:ertl_filament_verwaltung/widgets/bauteil_card.dart';
import 'helpers/memory_storage_service.dart';
@@ -131,19 +130,84 @@ void main() {
tag: 'reload',
);
expect(reloaded.anwendungen.single.anwendungId, saved.anwendungId);
expect(reloaded.druckController.text, '220.5');
expect(reloaded.druckbettController.text, '65.0');
expect(reloaded.bauraumController.text, '40.0');
expect(reloaded.bauraumGeschlossen.value, isTrue);
expect(reloaded.sonstigesController.text, 'Luefter 50 %');
expect(storage.getModelList(HomeController.storageKey), hasLength(2));
await tester.scrollUntilVisible(
find.byType(SavedEntryCard),
200,
scrollable: find.byType(Scrollable).first,
);
await tester.pumpAndSettle();
expect(find.text('Bauraum geschlossen: Ja'), findsOneWidget);
expect(controller.druckController.text, '220,5');
expect(find.text('Gespeicherte Profile'), findsNothing);
expect(tester.takeException(), isNull);
},
);
testWidgets('Editing replaces the profile and keeps its identity', (
tester,
) async {
final otherProfile = storage
.getModelList(AnwendungController.storageKey)
.single;
final original = profile('profile-a', 'a');
storage.tables[AnwendungController.storageKey]!.add(original.toJson());
final controller = Get.put(AnwendungController(filamentId: 'a'));
await show(tester, const AnwendungView());
expect(controller.druckController.text, '210.0');
expect(controller.druckbettController.text, '60.0');
expect(controller.bauraumController.text, isEmpty);
controller.druckController.text = '225';
controller.sonstigesController.text = 'Aktualisiert';
storage.failWrites = true;
await controller.saveAnwendung();
expect(controller.hasError.value, isTrue);
expect(controller.anwendungen.single.druckTemperatur, 210);
expect(controller.druckController.text, '225');
storage.failWrites = false;
await controller.saveAnwendung();
controller.druckController.text = '230';
await controller.saveAnwendung();
final stored = storage.getModelList(AnwendungController.storageKey);
expect(stored, hasLength(2));
expect(stored.first, otherProfile);
final updated = AnwendungModel.fromJson(stored.last);
expect(updated.anwendungId, original.anwendungId);
expect(updated.erstelltAm, original.erstelltAm);
expect(updated.druckTemperatur, 230);
expect(updated.sonstiges, 'Aktualisiert');
expect(controller.anwendungen, hasLength(1));
});
testWidgets('Legacy profiles load the latest and save one per filament', (
tester,
) async {
final latest = AnwendungModel(
anwendungId: 'latest-a',
filamentId: 'a',
erstelltAm: DateTime(2026, 10, 27),
druckbettTemperatur: 70,
druckTemperatur: 240,
bauraumGeschlossen: true,
bauraumTemperatur: 45,
sonstiges: 'Neuestes Profil',
);
storage.tables[AnwendungController.storageKey]!.addAll([
latest.toJson(),
profile('older-a', 'a').toJson(),
]);
final controller = Get.put(AnwendungController(filamentId: 'a'));
await show(tester, const AnwendungView());
expect(controller.druckController.text, '240.0');
expect(controller.bauraumGeschlossen.value, isTrue);
expect(controller.sonstigesController.text, 'Neuestes Profil');
await controller.saveAnwendung();
final stored = storage.getModelList(AnwendungController.storageKey);
expect(stored, hasLength(2));
expect(stored.where((item) => item['filamentId'] == 'a'), hasLength(1));
expect(stored.last['anwendungId'], 'latest-a');
});
testWidgets('Profile write failure retains input and does not add history', (
tester,
) async {