@shopify/shopify-app-remix
Version:
Shopify Remix - to simplify the building of Shopify Apps with Remix
50 lines (42 loc) • 1.39 kB
text/typescript
import {ApiVersion, Session} from '@shopify/shopify-api';
import type {StorefrontContext} from '../clients';
import {mockExternalRequest} from './request-mock';
import {TEST_SHOP} from './const';
export function expectStorefrontApiClient(
factory: () => Promise<{
storefront: StorefrontContext;
expectedSession: Session;
actualSession: Session;
}>,
) {
it('Storefront client can perform GraphQL Requests', async () => {
// GIVEN
const {storefront, actualSession} = await factory();
const apiResponse = {data: {blogs: {nodes: [{id: 1}]}}, headers: {}};
await mockExternalRequest({
request: new Request(
`https://${TEST_SHOP}/api/${ApiVersion.July25}/graphql.json`,
{
method: 'POST',
headers: {
'Shopify-Storefront-Private-Token': actualSession.accessToken!,
},
},
),
response: new Response(JSON.stringify(apiResponse)),
});
// WHEN
const response = await storefront.graphql(
'blogs(first: 1) { nodes { id }}',
);
// THEN
expect(response.status).toEqual(200);
expect(await response.json()).toEqual(apiResponse);
});
it('Storefront client uses the correct session', async () => {
// GIVEN
const {expectedSession, actualSession} = await factory();
// THEN
expect(expectedSession).toEqual(actualSession);
});
}