New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

graphql-hooks

Package Overview
Dependencies
Maintainers
1
Versions
89
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

graphql-hooks - npm Package Compare versions

Comparing version 2.0.2 to 2.0.3

4

package.json
{
"name": "graphql-hooks",
"version": "2.0.2",
"version": "2.0.3",
"description": "Graphql Hooks",

@@ -38,3 +38,3 @@ "main": "src/index.js",

"react-dom": "16.8.2",
"react-testing-library": "5.8.0"
"react-testing-library": "5.9.0"
},

@@ -41,0 +41,0 @@ "dependencies": {},

@@ -11,5 +11,6 @@ const ClientContext = require('./ClientContext');

useQuery,
useManualQuery: (query, options) =>
useClientRequest(query, { useCache: true, ...options }),
// alias
useMutation: useClientRequest,
useManualQuery: useClientRequest
useMutation: useClientRequest
};

@@ -1,5 +0,151 @@

import { useQuery } from '../../src';
import React from 'react';
import { testHook } from 'react-testing-library';
import { ClientContext, useQuery, useClientRequest } from '../../src';
jest.mock('../../src/useClientRequest');
let mockQueryReq, mockState, mockClient;
const Wrapper = props => (
<ClientContext.Provider value={mockClient}>
{props.children}
</ClientContext.Provider>
);
const TEST_QUERY = `query Test($limit: Int) {
tests(limit: $limit) {
id
}
}`;
const ANOTHER_TEST_QUERY = `query AnotherTest($limit: Int) {
another(limit: $limit) {
id
}
}`;
describe('useQuery', () => {
it('runs a test', () => {});
beforeEach(() => {
mockQueryReq = jest.fn();
mockState = { loading: true, cacheHit: false };
useClientRequest.mockReturnValue([mockQueryReq, mockState]);
mockClient = {
ssrMode: false,
ssrPromises: []
};
});
afterEach(() => {
jest.unmock('../../src/useClientRequest');
});
it('calls useClientRequest with query', () => {
testHook(() => useQuery(TEST_QUERY), { wrapper: Wrapper });
expect(useClientRequest).toHaveBeenCalledWith(TEST_QUERY, {
useCache: true
});
});
it('calls useClientRequest with options', () => {
testHook(() => useQuery(TEST_QUERY, { useCache: false, extra: 'option' }), {
wrapper: Wrapper
});
expect(useClientRequest).toHaveBeenCalledWith(TEST_QUERY, {
useCache: false,
extra: 'option'
});
});
it('returns initial state from useClientRequest & refetch', () => {
let state;
testHook(() => (state = useQuery(TEST_QUERY)), { wrapper: Wrapper });
expect(state).toEqual({
loading: true,
cacheHit: false,
refetch: expect.any(Function)
});
});
it('bypasses cache when refetch is called', () => {
let refetch;
testHook(() => ({ refetch } = useQuery(TEST_QUERY)), { wrapper: Wrapper });
refetch();
expect(mockQueryReq).toHaveBeenCalledWith({ skipCache: true });
});
it('sends the query on mount if no data & no error', () => {
testHook(() => useQuery(TEST_QUERY), { wrapper: Wrapper });
expect(mockQueryReq).toHaveBeenCalledTimes(1);
});
it('does not send the same query on mount if data is already present', () => {
mockState.data = { some: 'data' };
testHook(() => useQuery(TEST_QUERY), { wrapper: Wrapper });
expect(mockQueryReq).not.toHaveBeenCalled();
});
it('does not send the query on mount if there is an error', () => {
mockState.error = true;
testHook(() => useQuery(TEST_QUERY), { wrapper: Wrapper });
expect(mockQueryReq).not.toHaveBeenCalled();
});
it('adds query to ssrPromises when in ssrMode if no data & no error', () => {
mockClient.ssrMode = true;
mockQueryReq.mockResolvedValueOnce('data');
testHook(() => useQuery(TEST_QUERY), { wrapper: Wrapper });
expect(mockClient.ssrPromises[0]).resolves.toBe('data');
});
it('does not add query to ssrPromises when in ssrMode if there is already data', () => {
mockState.data = { some: 'data ' };
mockClient.ssrMode = true;
mockQueryReq.mockResolvedValueOnce('data');
testHook(() => useQuery(TEST_QUERY), { wrapper: Wrapper });
expect(mockClient.ssrPromises).toHaveLength(0);
});
it('does not add query to ssrPromises when in ssrMode if there is an error', () => {
mockState.error = true;
mockClient.ssrMode = true;
mockQueryReq.mockResolvedValueOnce('data');
testHook(() => useQuery(TEST_QUERY), { wrapper: Wrapper });
expect(mockClient.ssrPromises).toHaveLength(0);
});
it('does not add query to ssrPromises when in ssrMode if ssr is overridden in options', () => {
mockClient.ssrMode = true;
mockQueryReq.mockResolvedValueOnce('data');
testHook(() => useQuery(TEST_QUERY, { ssr: false }), { wrapper: Wrapper });
expect(mockClient.ssrPromises).toHaveLength(0);
});
it('does not send the same query twice', () => {
const { rerender } = testHook(() => useQuery(TEST_QUERY), {
wrapper: Wrapper
});
rerender();
expect(mockQueryReq).toHaveBeenCalledTimes(1);
});
it('sends the query again if the variables change', () => {
let options = { variables: { limit: 2 } };
const { rerender } = testHook(() => useQuery(TEST_QUERY, options), {
wrapper: Wrapper
});
options.variables.limit = 3;
rerender();
expect(mockQueryReq).toHaveBeenCalledTimes(2);
});
it('sends another query if the query changes', () => {
let query = TEST_QUERY;
const { rerender } = testHook(() => useQuery(query), {
wrapper: Wrapper
});
query = ANOTHER_TEST_QUERY;
rerender();
expect(mockQueryReq).toHaveBeenCalledTimes(2);
});
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc