You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
import'package:flutter_test/flutter_test.dart';
import'package:graphql_flutter/graphql_flutter.dart';
voidmain() {
final client =GraphQLClient(
link:AuthLink(
getToken: () =>"Bearer ***",
).concat(
HttpLink(
"https://rickandmortyapi.com/graphql",
),
),
cache:GraphQLCache(),
);
/// entity identifiers for normalizationfinal idFields = {'__typename':'MyType', 'id':1};
/// The direct cache API uses `gql_link` Requests directly /// These can also be obtained via `options.asRequest` from any `Options` object, /// or via `Operation(document: gql(...)).asRequest()`final queryRequest =Request(
operation:Operation(
document:gql(
r'''{ someField { __typename, id, myField } }''',
),
),
);
final queryData = {
'someField': {
...idFields,
'myField':'originalValue',
},
};
/// `broadcast: true` (the default) would rebroadcast cache updates to all safe instances of `ObservableQuery` /// **NOTE**: only `GraphQLClient` can immediately call for a query rebroadcast. if you request a rebroadcast directly /// from the cache, it still has to wait for the client to check in on it
client.writeQuery(queryRequest, data: queryData, broadcast:false);
/// `optimistic: true` (the default) integrates optimistic data /// written to the cache into your read.expect(client.readQuery(queryRequest, optimistic:false), equals(queryData));
/// While fragments are never executed themselves, we provide a `gql_link`-like API for consistency. /// These can also be obtained via `Fragment(document: gql(...)).asRequest()`.final fragmentRequest =FragmentRequest(
fragment:Fragment(
document:gql(
r''' fragment mySmallSubset on MyType { myField, someNewField } ''',
),
),
idFields: idFields);
/// We've specified `idFields` and are only editing a subset of the datafinal fragmentData = {
'myField':'updatedValue',
'someNewField': [
{'newData':false}
],
};
/// We didn't disable `broadcast`, so all instances of `ObservableQuery` will be notified of any changes
client.writeFragment(fragmentRequest, data: fragmentData);
/// __typename is automatically included in all readsexpect(
client.readFragment(fragmentRequest),
equals({
'__typename':'MyType',
...fragmentData,
}),
);
final updatedQueryData = {
'someField': {
...idFields,
'myField':'updatedValue',
},
};
/// `myField` is updated, but we don't have `someNewField`, as expected.expect(client.readQuery(queryRequest), equals(updatedQueryData));
}
Ran it:
C:\Users\***\Documents\flutter\bin\flutter.bat --no-color test --machine --start-paused test\test.dart
Testing started at 22:45 ...
package:normalize/src/normalize_node.dart 86:13 normalizeNode.<fn>
dart:collection ListBase.fold
package:normalize/src/normalize_node.dart 61:19 normalizeNode
package:normalize/src/normalize_operation.dart 75:5 normalizeOperation
package:graphql/src/cache/_normalizing_data_proxy.dart 128:7 NormalizingDataProxy.writeQuery
package:graphql/src/graphql_client.dart 257:11 GraphQLClient.writeQuery
test\test.dart 57:10 main
Failed to load "C:/Users/***/Desktop/flutter/graphql/test/test.dart": PartialDataException(path: __typename)
Hello!
So I grabbed an example from -- https://pub.dev/documentation/graphql/latest/graphql/GraphQLDataProxy-class.html
Ran it:
I use git dependencies:
! graphql 5.2.0-beta.7 from git https://github.com/zino-hofmann/graphql-flutter.git at 41cd27 in packages/graphql (overridden)
I just wanted to use local state and it doesnt work (I also tested with Hive cache backend, no difference).
The text was updated successfully, but these errors were encountered: