edit_resource_screen_test.dart 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_test/flutter_test.dart';
  3. import 'package:rackpeek_mobile/data/api_client.dart';
  4. import 'package:rackpeek_mobile/design.dart';
  5. import 'package:rackpeek_mobile/models/inventory.dart';
  6. import 'package:rackpeek_mobile/screens/edit_resource_screen.dart';
  7. import 'package:rackpeek_mobile/state/inventory_store.dart';
  8. void main() {
  9. testWidgets('edit title indicates pending changes and clears when reverted', (
  10. tester,
  11. ) async {
  12. final resource = Resource(kind: 'Other', name: 'lab-device', model: 'Old');
  13. final store = InventoryStore(
  14. RackPeekApi(baseUrl: 'https://server.example.test', apiKey: 'test-key'),
  15. );
  16. await tester.pumpWidget(
  17. MaterialApp(
  18. theme: scribeTheme(),
  19. home: Scaffold(
  20. body: EditResourceScreen(store: store, resource: resource),
  21. ),
  22. ),
  23. );
  24. expect(find.text('Not saved'), findsNothing);
  25. final modelField = find.byType(TextField).first;
  26. await tester.enterText(modelField, 'New model');
  27. await tester.pump();
  28. expect(find.text('Not saved'), findsOneWidget);
  29. await tester.enterText(modelField, 'Old');
  30. await tester.pump();
  31. expect(find.text('Not saved'), findsNothing);
  32. store.dispose();
  33. });
  34. }