Added comprehensive test suite and documentation for gRPC integration: - test/api/grpc_config_test.dart: Unit tests for GrpcConfig - test/api/grpc_client_test.dart: Unit tests for GrpcCqrsApiClient - test/api/api_mode_config_test.dart: Unit tests for ApiModeConfig - test/e2e/GRPC_E2E_VERIFICATION.md: Manual E2E testing guide All 18 tests pass. Flutter analyze shows no issues. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
86 lines
2.3 KiB
Dart
86 lines
2.3 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:planb_logistic/api/grpc_client.dart';
|
|
import 'package:planb_logistic/api/grpc_config.dart';
|
|
|
|
void main() {
|
|
group('GrpcCqrsApiClient', () {
|
|
test('can be created with development config', () {
|
|
final client = GrpcCqrsApiClient(
|
|
config: GrpcConfig.development,
|
|
authService: null,
|
|
);
|
|
|
|
expect(client.config, equals(GrpcConfig.development));
|
|
expect(client.isConnected, isFalse);
|
|
});
|
|
|
|
test('can be created with production config', () {
|
|
final client = GrpcCqrsApiClient(
|
|
config: GrpcConfig.production,
|
|
authService: null,
|
|
);
|
|
|
|
expect(client.config, equals(GrpcConfig.production));
|
|
expect(client.isConnected, isFalse);
|
|
});
|
|
|
|
test('channel is created lazily', () {
|
|
final client = GrpcCqrsApiClient(
|
|
config: GrpcConfig.development,
|
|
authService: null,
|
|
);
|
|
|
|
expect(client.isConnected, isFalse);
|
|
|
|
// Access the channel to trigger lazy initialization
|
|
final channel = client.channel;
|
|
|
|
expect(channel, isNotNull);
|
|
expect(client.isConnected, isTrue);
|
|
});
|
|
|
|
test('delivery client is created lazily', () {
|
|
final client = GrpcCqrsApiClient(
|
|
config: GrpcConfig.development,
|
|
authService: null,
|
|
);
|
|
|
|
// Access delivery client (implicitly creates channel first)
|
|
final deliveryClient = client.deliveryClient;
|
|
|
|
expect(deliveryClient, isNotNull);
|
|
expect(client.isConnected, isTrue);
|
|
});
|
|
|
|
test('shutdown clears channel and client', () async {
|
|
final client = GrpcCqrsApiClient(
|
|
config: GrpcConfig.development,
|
|
authService: null,
|
|
);
|
|
|
|
// Initialize the channel
|
|
final _ = client.channel;
|
|
expect(client.isConnected, isTrue);
|
|
|
|
// Shutdown
|
|
await client.shutdown();
|
|
expect(client.isConnected, isFalse);
|
|
});
|
|
|
|
test('terminate clears channel and client', () async {
|
|
final client = GrpcCqrsApiClient(
|
|
config: GrpcConfig.development,
|
|
authService: null,
|
|
);
|
|
|
|
// Initialize the channel
|
|
final _ = client.channel;
|
|
expect(client.isConnected, isTrue);
|
|
|
|
// Terminate
|
|
await client.terminate();
|
|
expect(client.isConnected, isFalse);
|
|
});
|
|
});
|
|
}
|