@shopify/shopify-app-remix
Version:
Shopify Remix - to simplify the building of Shopify Apps with Remix
52 lines (44 loc) • 1.45 kB
text/typescript
import {ApiVersion, Session} from '@shopify/shopify-api';
import type {AdminApiContext} from '../clients';
import {TEST_SHOP} from './const';
import {mockExternalRequest} from './request-mock';
export function expectAdminApiClient(
factory: () => Promise<{
admin: AdminApiContext;
expectedSession: Session;
actualSession: Session;
}>,
) {
describe('Graphql client', () => {
it('can perform requests', async () => {
// GIVEN
const {admin, actualSession} = await factory();
await mockExternalRequest({
request: new Request(
`https://${TEST_SHOP}/admin/api/${ApiVersion.July25}/graphql.json`,
{
method: 'POST',
headers: {'X-Shopify-Access-Token': actualSession.accessToken!},
},
),
response: new Response(
JSON.stringify({data: {shop: {name: 'Test shop'}}}),
),
});
// WHEN
const response = await admin.graphql('{ shop { name } }');
// THEN
expect(response.status).toEqual(200);
expect(await response.json()).toEqual({
data: {shop: {name: 'Test shop'}},
headers: {'Content-Type': ['application/json']},
});
});
it('returns a session object as part of the context', async () => {
// GIVEN
const {expectedSession, actualSession} = await factory();
// THEN
expect(expectedSession).toEqual(actualSession);
});
});
}