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