it('writes server payloads to `records`', () => { const storeData = new RelayStoreData(); // create the root node storeData.getRecordWriter().putRecord('123'); const mutationQuery = getNode(Relay.QL` mutation { feedbackLike(input:$input) { clientMutationId feedback { id doesViewerLike topLevelComments { count } } } } `); const payload = { [RelayConnectionInterface.CLIENT_MUTATION_ID]: 'abc', feedback: { id: '123', doesViewerLike: false, topLevelComments: { count: 1, }, }, }; storeData.handleUpdatePayload(mutationQuery, payload, { configs: [], isOptimisticUpdate: false, }); // results are written to `records` const recordStore = storeData.getRecordStore(); expect(recordStore.getRecordState('123')).toBe('EXISTENT'); expect(recordStore.getField('123', 'doesViewerLike')).toBe(false); const commentsID = recordStore.getLinkedRecordID('123', 'topLevelComments'); expect(recordStore.getField(commentsID, 'count')).toBe(1); // `queuedRecords` is unchanged expect(storeData.getQueuedData()).toEqual({}); });
it('writes responses to `records`', () => { const storeData = new RelayStoreData(); const query = getNode(Relay.QL` query { node(id:"123") { id doesViewerLike topLevelComments { count } } } `); const response = { node: { id: '123', doesViewerLike: false, topLevelComments: { count: 1, }, __typename: 'Story', }, }; storeData.handleQueryPayload(query, response); // results are written to `records` const recordStore = storeData.getRecordStore(); expect(recordStore.getRecordState('123')).toBe('EXISTENT'); expect(recordStore.getField('123', 'doesViewerLike')).toBe(false); const commentsID = recordStore.getLinkedRecordID('123', 'topLevelComments'); expect(recordStore.getField(commentsID, 'count')).toBe(1); // `queuedRecords` is unchanged expect(storeData.getQueuedData()).toEqual({}); });