Skip to content

Commit

Permalink
Support mock.shop as a storeDomain (#986)
Browse files Browse the repository at this point in the history
* Auto add protocol if missing

* Stop adding protocol manually to storeDomain parameter

* Changesets

* Support mock.shop as storeDomain

* Do not throw errors when missing tokens for mock.shop

* Refactor

* Changesets
  • Loading branch information
frandiox committed Jun 8, 2023
1 parent 7b4afea commit 3251523
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 2 deletions.
5 changes: 5 additions & 0 deletions .changeset/curly-adults-develop.md
@@ -0,0 +1,5 @@
---
'@shopify/hydrogen-react': patch
---

Add support for [`mock.shop`](https://mock.shop/) as a `storeDomain`.
8 changes: 8 additions & 0 deletions packages/hydrogen-react/src/storefront-client.test.ts
Expand Up @@ -115,6 +115,14 @@ describe(`createStorefrontClient`, () => {
`https://newdomain.myshopify.com/api/${SFAPI_VERSION}/graphql.json`,
);
});

it(`generates a URL correctly for mock.shop`, () => {
const client = createStorefrontClient(
generateConfig({storeDomain: 'mock.shop'}),
);

expect(client.getStorefrontApiUrl()).toBe(`https://mock.shop/api`);
});
});

describe(`getPrivateTokenHeaders`, () => {
Expand Down
15 changes: 13 additions & 2 deletions packages/hydrogen-react/src/storefront-client.ts
Expand Up @@ -53,6 +53,7 @@ export function createStorefrontClient(
);
}

const isMockShop = (domain: string): boolean => domain.includes('mock.shop');
const getShopifyDomain: StorefrontClientReturn['getShopifyDomain'] = (
overrideProps,
) => {
Expand All @@ -66,12 +67,18 @@ export function createStorefrontClient(
const domain = getShopifyDomain(overrideProps);
const apiUrl = domain + (domain.endsWith('/') ? 'api' : '/api');

if (isMockShop(domain)) return apiUrl;

return `${apiUrl}/${
overrideProps?.storefrontApiVersion ?? storefrontApiVersion
}/graphql.json`;
},
getPrivateTokenHeaders(overrideProps): Record<string, string> {
if (!privateStorefrontToken && !overrideProps?.privateStorefrontToken) {
if (
!privateStorefrontToken &&
!overrideProps?.privateStorefrontToken &&
!isMockShop(storeDomain)
) {
throw new Error(
`StorefrontClient: You did not pass in a 'privateStorefrontToken' while using 'getPrivateTokenHeaders()'`,
);
Expand Down Expand Up @@ -102,7 +109,11 @@ export function createStorefrontClient(
};
},
getPublicTokenHeaders(overrideProps): Record<string, string> {
if (!publicStorefrontToken && !overrideProps?.publicStorefrontToken) {
if (
!publicStorefrontToken &&
!overrideProps?.publicStorefrontToken &&
!isMockShop(storeDomain)
) {
throw new Error(
`StorefrontClient: You did not pass in a 'publicStorefrontToken' while using 'getPublicTokenHeaders()'`,
);
Expand Down

0 comments on commit 3251523

Please sign in to comment.