ionic-planb-logistic-app-fl.../test/api/grpc_client_test.dart
Mathias Beaulieu-Duncan 4bbf225aeb auto-claude: subtask-5-2 - End-to-end verification of gRPC integration
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>
2026-01-20 13:15:32 -05:00

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);
});
});
}