Skip to content

Commit 38becef

Browse files
hamed-rezaeevincenzopalazzo
authored andcommitted
feat(graphql): add queryRequestTimeout parameter to GraphQLClient class
1 parent afd16e1 commit 38becef

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed

packages/graphql/lib/src/graphql_client.dart

+4
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,17 @@ class GraphQLClient implements GraphQLDataProxy {
5656
GraphQLCache? cache,
5757
DefaultPolicies? defaultPolicies,
5858
bool? alwaysRebroadcast,
59+
DeepEqualsFn? deepEquals,
60+
bool deduplicatePollers = false,
5961
Duration? queryRequestTimeout,
6062
}) {
6163
return GraphQLClient(
6264
link: link ?? this.link,
6365
cache: cache ?? this.cache,
6466
defaultPolicies: defaultPolicies ?? this.defaultPolicies,
6567
alwaysRebroadcast: alwaysRebroadcast ?? queryManager.alwaysRebroadcast,
68+
deepEquals: deepEquals,
69+
deduplicatePollers: deduplicatePollers,
6670
queryRequestTimeout: queryRequestTimeout ?? queryManager.requestTimeout,
6771
);
6872
}

packages/graphql/test/graphql_client_test.dart

+100
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)