@@ -1447,5 +1447,105 @@ query WalletGetContent($input: WalletGetContentInput!) {
1447
1447
equals ('bar' ),
1448
1448
);
1449
1449
});
1450
+
1451
+ group ('GraphQLClient copyWith' , () {
1452
+ late GraphQLClient client;
1453
+ late Link link;
1454
+ late GraphQLCache cache;
1455
+ late DefaultPolicies defaultPolicies;
1456
+ late Duration queryRequestTimeout;
1457
+
1458
+ setUp (() {
1459
+ link = MockLink ();
1460
+ cache = GraphQLCache ();
1461
+ defaultPolicies = DefaultPolicies ();
1462
+ queryRequestTimeout = const Duration (seconds: 5 );
1463
+ client = GraphQLClient (
1464
+ link: link,
1465
+ cache: cache,
1466
+ defaultPolicies: defaultPolicies,
1467
+ queryRequestTimeout: queryRequestTimeout,
1468
+ );
1469
+ });
1470
+
1471
+ test ('copyWith updates link' , () {
1472
+ final newLink = MockLink ();
1473
+ final newClient = client.copyWith (link: newLink);
1474
+
1475
+ expect (newClient.link, equals (newLink));
1476
+ expect (newClient.cache, equals (client.cache));
1477
+ expect (newClient.defaultPolicies, equals (client.defaultPolicies));
1478
+ expect (
1479
+ newClient.queryManager.requestTimeout,
1480
+ equals (client.queryManager.requestTimeout),
1481
+ );
1482
+ });
1483
+
1484
+ test ('copyWith updates cache' , () {
1485
+ final newCache = GraphQLCache ();
1486
+ final newClient = client.copyWith (cache: newCache);
1487
+
1488
+ expect (newClient.cache, equals (newCache));
1489
+ expect (newClient.link, equals (client.link));
1490
+ expect (newClient.defaultPolicies, equals (client.defaultPolicies));
1491
+ expect (
1492
+ newClient.queryManager.requestTimeout,
1493
+ equals (client.queryManager.requestTimeout),
1494
+ );
1495
+ });
1496
+
1497
+ test ('copyWith updates defaultPolicies' , () {
1498
+ final newDefaultPolicies = DefaultPolicies ();
1499
+ final newClient = client.copyWith (defaultPolicies: newDefaultPolicies);
1500
+
1501
+ expect (newClient.defaultPolicies, equals (newDefaultPolicies));
1502
+ expect (newClient.link, equals (client.link));
1503
+ expect (newClient.cache, equals (client.cache));
1504
+ expect (
1505
+ newClient.queryManager.requestTimeout,
1506
+ equals (client.queryManager.requestTimeout),
1507
+ );
1508
+ });
1509
+
1510
+ test ('copyWith updates alwaysRebroadcast' , () {
1511
+ final newClient = client.copyWith (alwaysRebroadcast: true );
1512
+
1513
+ expect (newClient.queryManager.alwaysRebroadcast, isTrue);
1514
+ expect (newClient.link, equals (client.link));
1515
+ expect (newClient.cache, equals (client.cache));
1516
+ expect (newClient.defaultPolicies, equals (client.defaultPolicies));
1517
+ expect (
1518
+ newClient.queryManager.requestTimeout,
1519
+ equals (client.queryManager.requestTimeout),
1520
+ );
1521
+ });
1522
+
1523
+ test ('copyWith updates queryRequestTimeout' , () {
1524
+ final newTimeout = const Duration (seconds: 10 );
1525
+ final newClient = client.copyWith (queryRequestTimeout: newTimeout);
1526
+
1527
+ expect (newClient.queryManager.requestTimeout, equals (newTimeout));
1528
+ expect (newClient.link, equals (client.link));
1529
+ expect (newClient.cache, equals (client.cache));
1530
+ expect (newClient.defaultPolicies, equals (client.defaultPolicies));
1531
+ });
1532
+
1533
+ test ('copyWith does not override any properties if none are provided' ,
1534
+ () {
1535
+ final newClient = client.copyWith ();
1536
+
1537
+ expect (newClient.link, equals (client.link));
1538
+ expect (newClient.cache, equals (client.cache));
1539
+ expect (newClient.defaultPolicies, equals (client.defaultPolicies));
1540
+ expect (
1541
+ newClient.queryManager.alwaysRebroadcast,
1542
+ equals (client.queryManager.alwaysRebroadcast),
1543
+ );
1544
+ expect (
1545
+ newClient.queryManager.requestTimeout,
1546
+ equals (client.queryManager.requestTimeout),
1547
+ );
1548
+ });
1549
+ });
1450
1550
});
1451
1551
}
0 commit comments