Example #1
0
    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({});
    });
Example #2
0
    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({});
    });