feat: add Flutter mobile clients and staff delivery API
This commit is contained in:
31
apps/service_app/test/domain/service_models_test.dart
Normal file
31
apps/service_app/test/domain/service_models_test.dart
Normal file
@@ -0,0 +1,31 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:service_app/domain/models/service_models.dart';
|
||||
|
||||
void main() {
|
||||
group('WorkItem', () {
|
||||
test('maps delivery allowed actions from server', () {
|
||||
final item = WorkItem.delivery({
|
||||
'identity': 'order-1',
|
||||
'order_no': 'GAS001',
|
||||
'order_status': 33,
|
||||
'allowed_actions': ['append_tracks', 'arrive', 'exception'],
|
||||
});
|
||||
|
||||
expect(item.identity, 'order-1');
|
||||
expect(item.allowedActions, contains('arrive'));
|
||||
expect(statusName(item.status), '配送中');
|
||||
});
|
||||
|
||||
test('derives ticket actions from server status', () {
|
||||
final item = WorkItem.ticket({
|
||||
'identity': 'ticket-1',
|
||||
'ticket_no': 'TK001',
|
||||
'ticket_status': 11,
|
||||
'category': 'inspection',
|
||||
});
|
||||
|
||||
expect(item.title, '安全检查');
|
||||
expect(item.allowedActions, contains('submit_result'));
|
||||
});
|
||||
});
|
||||
}
|
||||
16
apps/service_app/test/ui/login_page_test.dart
Normal file
16
apps/service_app/test/ui/login_page_test.dart
Normal file
@@ -0,0 +1,16 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:service_app/app/dependencies.dart';
|
||||
import 'package:service_app/data/services/secure_session_store.dart';
|
||||
import 'package:service_app/ui/features/auth/login_page.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('staff login explains the single shared entry', (tester) async {
|
||||
final session = StaffSession(SecureSessionStore());
|
||||
await tester.pumpWidget(MaterialApp(home: LoginPage(session: session)));
|
||||
|
||||
expect(find.text('瓶安芯服务工作台'), findsOneWidget);
|
||||
expect(find.text('配送、安装维修与安检共用入口'), findsOneWidget);
|
||||
expect(find.byType(TextField), findsNWidgets(2));
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user