Home Reference Source Repository

src/container/__tests__/RelayContainer_hasPartialData-test.js

/**
 * Copyright (c) 2013-present, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 *
 * @emails oncall+relay
 */

'use strict';

require('configureForRelayOSS');

jest.unmock('RelayContainer');

const GraphQLStoreQueryResolver = require('GraphQLStoreQueryResolver');
const React = require('React');
const Relay = require('Relay');
const RelayEnvironment = require('RelayEnvironment');
const RelayRecordStatusMap = require('RelayRecordStatusMap');
const RelayTestUtils = require('RelayTestUtils');

describe('RelayContainer.hasPartialData', () => {
  let MockContainer;
  let environment;
  let RelayTestRenderer;

  beforeEach(() => {
    jest.resetModuleRegistry();

    class MockComponent extends React.Component {
      render() {
        return <div />;
      }
    }
    MockContainer = Relay.createContainer(MockComponent, {
      fragments: {foo: () => Relay.QL`fragment on Node{id}`},
    });
    environment = new RelayEnvironment();
    RelayTestRenderer = RelayTestUtils.createRenderer();

    GraphQLStoreQueryResolver.mockDefaultResolveImplementation((_, dataID) => {
      return {__dataID__: dataID, id: dataID};
    });

    jasmine.addMatchers(RelayTestUtils.matchers);
  });

  it('returns true for records with partial data bit set', () => {
    const instance = RelayTestRenderer.render(
      genMockPointer => <MockContainer foo={genMockPointer('123')} />,
      environment
    );
    const prop = {
      __dataID__: '123',
      __status__: RelayRecordStatusMap.setPartialStatus(0, true),
    };
    expect(instance.hasPartialData(prop)).toBe(true);
  });

  it('returns false for records without partial data bit set', () => {
    const instance = RelayTestRenderer.render(
      genMockPointer => <MockContainer foo={genMockPointer('123')} />,
      environment
    );
    expect(instance.hasPartialData({__dataID__: '123'})).toBe(false);
  });
});