@@ -1447,5 +1447,105 @@ query WalletGetContent($input: WalletGetContentInput!) {
14471447 equals ('bar' ),
14481448 );
14491449 });
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+ });
14501550 });
14511551}
0 commit comments