@ehrenkind/shopify-lib 0.2.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generated-api-types/2025-04/admin.generated.d.ts +137 -0
- package/dist/generated-api-types/2025-04/admin.generated.d.ts.map +1 -1
- package/dist/index.cjs +59 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +81 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +57 -3
- package/dist/index.mjs.map +1 -1
- package/dist/mutations/customers/deleteCustomerById.d.ts +1 -3
- package/dist/mutations/customers/deleteCustomerById.d.ts.map +1 -1
- package/dist/mutations/customers/deleteCustomerById.js +1 -4
- package/dist/mutations/customers/deleteCustomerById.js.map +1 -1
- package/dist/mutations/orders/cancelOrderById.d.ts +23 -0
- package/dist/mutations/orders/cancelOrderById.d.ts.map +1 -0
- package/dist/mutations/orders/cancelOrderById.js +63 -0
- package/dist/mutations/orders/cancelOrderById.js.map +1 -0
- package/dist/mutations/orders/cancelOrderById.mock.d.ts +15 -0
- package/dist/mutations/orders/cancelOrderById.mock.d.ts.map +1 -0
- package/dist/mutations/orders/cancelOrderById.mock.js +17 -0
- package/dist/mutations/orders/cancelOrderById.mock.js.map +1 -0
- package/dist/mutations/orders/cancelOrderById.test.d.ts +2 -0
- package/dist/mutations/orders/cancelOrderById.test.d.ts.map +1 -0
- package/dist/mutations/orders/cancelOrderById.test.js +42 -0
- package/dist/mutations/orders/cancelOrderById.test.js.map +1 -0
- package/dist/queries/customers/getCustomersByEmail.d.ts +13 -0
- package/dist/queries/customers/getCustomersByEmail.d.ts.map +1 -0
- package/dist/queries/customers/getCustomersByEmail.js +26 -0
- package/dist/queries/customers/getCustomersByEmail.js.map +1 -0
- package/dist/queries/customers/getCustomersByEmail.mock.d.ts +8 -0
- package/dist/queries/customers/getCustomersByEmail.mock.d.ts.map +1 -0
- package/dist/queries/customers/getCustomersByEmail.mock.js +54 -0
- package/dist/queries/customers/getCustomersByEmail.mock.js.map +1 -0
- package/dist/queries/customers/getCustomersByEmail.queries.d.ts +2 -0
- package/dist/queries/customers/getCustomersByEmail.queries.d.ts.map +1 -0
- package/dist/queries/customers/getCustomersByEmail.queries.js +41 -0
- package/dist/queries/customers/getCustomersByEmail.queries.js.map +1 -0
- package/dist/queries/customers/getCustomersByEmail.test.d.ts +2 -0
- package/dist/queries/customers/getCustomersByEmail.test.d.ts.map +1 -0
- package/dist/queries/customers/getCustomersByEmail.test.js +29 -0
- package/dist/queries/customers/getCustomersByEmail.test.js.map +1 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.d.ts +14 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.d.ts.map +1 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.js +27 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.js.map +1 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.mock.d.ts +12 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.mock.d.ts.map +1 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.mock.js +41 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.mock.js.map +1 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.queries.d.ts +2 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.queries.d.ts.map +1 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.queries.js +28 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.queries.js.map +1 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.test.d.ts +2 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.test.d.ts.map +1 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.test.js +19 -0
- package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.test.js.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentById.d.ts +12 -0
- package/dist/queries/fulfillments/getFulfillmentById.d.ts.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentById.js +27 -0
- package/dist/queries/fulfillments/getFulfillmentById.js.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentById.mock.d.ts +21 -0
- package/dist/queries/fulfillments/getFulfillmentById.mock.d.ts.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentById.mock.js +83 -0
- package/dist/queries/fulfillments/getFulfillmentById.mock.js.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentById.queries.d.ts +2 -0
- package/dist/queries/fulfillments/getFulfillmentById.queries.d.ts.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentById.queries.js +60 -0
- package/dist/queries/fulfillments/getFulfillmentById.queries.js.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentById.test.d.ts +2 -0
- package/dist/queries/fulfillments/getFulfillmentById.test.d.ts.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentById.test.js +37 -0
- package/dist/queries/fulfillments/getFulfillmentById.test.js.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.d.ts +14 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.d.ts.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.js +36 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.js.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.mock.d.ts +5 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.mock.d.ts.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.mock.js +20 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.mock.js.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.queries.d.ts +2 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.queries.d.ts.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.queries.js +13 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.queries.js.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.test.d.ts +2 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.test.d.ts.map +1 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.test.js +61 -0
- package/dist/queries/fulfillments/getFulfillmentTrackingIds.test.js.map +1 -0
- package/dist/queries/orders/getOrderById.d.ts +14 -14
- package/dist/queries/orders/getOrderById.mock.d.ts.map +1 -1
- package/dist/queries/orders/getOrderByName.d.ts +6 -6
- package/dist/queries/orders/getOrderCancellationInfo.d.ts +12 -0
- package/dist/queries/orders/getOrderCancellationInfo.d.ts.map +1 -0
- package/dist/queries/orders/getOrderCancellationInfo.js +35 -0
- package/dist/queries/orders/getOrderCancellationInfo.js.map +1 -0
- package/dist/queries/orders/getOrderCancellationInfo.mock.d.ts +6 -0
- package/dist/queries/orders/getOrderCancellationInfo.mock.d.ts.map +1 -0
- package/dist/queries/orders/getOrderCancellationInfo.mock.js +29 -0
- package/dist/queries/orders/getOrderCancellationInfo.mock.js.map +1 -0
- package/dist/queries/orders/getOrderCancellationInfo.queries.d.ts +2 -0
- package/dist/queries/orders/getOrderCancellationInfo.queries.d.ts.map +1 -0
- package/dist/queries/orders/getOrderCancellationInfo.queries.js +15 -0
- package/dist/queries/orders/getOrderCancellationInfo.queries.js.map +1 -0
- package/dist/queries/orders/getOrderCancellationInfo.test.d.ts +2 -0
- package/dist/queries/orders/getOrderCancellationInfo.test.d.ts.map +1 -0
- package/dist/queries/orders/getOrderCancellationInfo.test.js +34 -0
- package/dist/queries/orders/getOrderCancellationInfo.test.js.map +1 -0
- package/dist/queries/orders/getOrderPaymentDetails.d.ts +5 -123
- package/dist/queries/orders/getOrderPaymentDetails.d.ts.map +1 -1
- package/dist/queries/orders/getOrderPaymentDetails.js +3 -22
- package/dist/queries/orders/getOrderPaymentDetails.js.map +1 -1
- package/dist/queries/orders/getOrderPaymentDetails.mock.d.ts +7 -9
- package/dist/queries/orders/getOrderPaymentDetails.mock.d.ts.map +1 -1
- package/dist/queries/orders/getOrderPaymentDetails.mock.js +1 -3
- package/dist/queries/orders/getOrderPaymentDetails.mock.js.map +1 -1
- package/dist/queries/orders/getOrdersByCustomerId.d.ts +15 -0
- package/dist/queries/orders/getOrdersByCustomerId.d.ts.map +1 -0
- package/dist/queries/orders/getOrdersByCustomerId.js +32 -0
- package/dist/queries/orders/getOrdersByCustomerId.js.map +1 -0
- package/dist/queries/orders/getOrdersByCustomerId.mock.d.ts +15 -0
- package/dist/queries/orders/getOrdersByCustomerId.mock.d.ts.map +1 -0
- package/dist/queries/orders/getOrdersByCustomerId.mock.js +76 -0
- package/dist/queries/orders/getOrdersByCustomerId.mock.js.map +1 -0
- package/dist/queries/orders/getOrdersByCustomerId.queries.d.ts +2 -0
- package/dist/queries/orders/getOrdersByCustomerId.queries.d.ts.map +1 -0
- package/dist/queries/orders/getOrdersByCustomerId.queries.js +41 -0
- package/dist/queries/orders/getOrdersByCustomerId.queries.js.map +1 -0
- package/dist/queries/orders/getOrdersByCustomerId.test.d.ts +2 -0
- package/dist/queries/orders/getOrdersByCustomerId.test.d.ts.map +1 -0
- package/dist/queries/orders/getOrdersByCustomerId.test.js +33 -0
- package/dist/queries/orders/getOrdersByCustomerId.test.js.map +1 -0
- package/dist/queries/productVariants/getLeanProductVariants.d.ts +2 -2
- package/dist/utils/mswHandlers.d.ts +6 -0
- package/dist/utils/mswHandlers.d.ts.map +1 -1
- package/dist/utils/mswHandlers.js +23 -2
- package/dist/utils/mswHandlers.js.map +1 -1
- package/dist/utils/shopifyFetch.d.ts +25 -4
- package/dist/utils/shopifyFetch.d.ts.map +1 -1
- package/dist/utils/shopifyFetch.js +23 -1
- package/dist/utils/shopifyFetch.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { graphql, passthrough } from 'msw';
|
|
2
|
+
import { describe, expect, it } from 'vitest';
|
|
3
|
+
import { server } from '../../utils/mswHandlers';
|
|
4
|
+
import { getFulfillmentById } from './getFulfillmentById';
|
|
5
|
+
import { expectedFulfillmentById } from './getFulfillmentById.mock';
|
|
6
|
+
describe('getFulfillmentById', () => {
|
|
7
|
+
it('should return fulfillment when found with GID string', async () => {
|
|
8
|
+
const result = await getFulfillmentById('gid://shopify/Fulfillment/5765989589285');
|
|
9
|
+
expect(result).toEqual(expectedFulfillmentById);
|
|
10
|
+
});
|
|
11
|
+
it('should return fulfillment when found with numeric ID', async () => {
|
|
12
|
+
const result = await getFulfillmentById(5765989589285n);
|
|
13
|
+
expect(result).toEqual(expectedFulfillmentById);
|
|
14
|
+
});
|
|
15
|
+
it('should return fulfillment when found with number', async () => {
|
|
16
|
+
const result = await getFulfillmentById(5765989589285);
|
|
17
|
+
expect(result).toEqual(expectedFulfillmentById);
|
|
18
|
+
});
|
|
19
|
+
it('should include fulfillmentLineItems', async () => {
|
|
20
|
+
const result = await getFulfillmentById('gid://shopify/Fulfillment/5765989589285');
|
|
21
|
+
expect(result?.fulfillmentLineItems.edges).toHaveLength(2);
|
|
22
|
+
expect(result?.fulfillmentLineItems.edges[0]?.node.lineItem.sku).toBe('MATTRESS-001');
|
|
23
|
+
});
|
|
24
|
+
it('should include tracking info', async () => {
|
|
25
|
+
const result = await getFulfillmentById('gid://shopify/Fulfillment/5765989589285');
|
|
26
|
+
expect(result?.trackingInfo).toHaveLength(1);
|
|
27
|
+
expect(result?.trackingInfo[0]?.company).toBe('DHL');
|
|
28
|
+
});
|
|
29
|
+
describe('Live', () => {
|
|
30
|
+
it('should return null when fulfillment not found', async () => {
|
|
31
|
+
server.use(graphql.query('fulfillmentById', () => passthrough()));
|
|
32
|
+
const result = await getFulfillmentById('gid://shopify/Fulfillment/99999999999');
|
|
33
|
+
expect(result).toBeNull();
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=getFulfillmentById.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFulfillmentById.test.js","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentById.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAEnE,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,yCAAyC,CAC1C,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,cAAc,CAAC,CAAA;QACvD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,aAAa,CAAC,CAAA;QACtD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,yCAAyC,CAC1C,CAAA;QACD,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC1D,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CACnE,cAAc,CACf,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,yCAAyC,CAC1C,CAAA;QACD,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC5C,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;YACjE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,uCAAuC,CACxC,CAAA;YACD,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;QAC3B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type FulfillmentTrackingIds = {
|
|
2
|
+
trackingNumbers: string[];
|
|
3
|
+
trackingCompany: string | null;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Retrieves tracking information for a fulfillment by its ID.
|
|
7
|
+
* Returns the tracking numbers and the tracking company.
|
|
8
|
+
*
|
|
9
|
+
* @param {string | number | bigint} id - The Shopify fulfillment ID. Can be a GID string (e.g., "gid://shopify/Fulfillment/123456789") or a numeric ID (e.g., 123456789 or 123456789n).
|
|
10
|
+
* @returns {Promise<FulfillmentTrackingIds | null>} A promise that resolves to the tracking info or null if fulfillment not found.
|
|
11
|
+
* @throws {Error} If the GraphQL query fails.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getFulfillmentTrackingIds(id: string | number | bigint): Promise<FulfillmentTrackingIds | null>;
|
|
14
|
+
//# sourceMappingURL=getFulfillmentTrackingIds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFulfillmentTrackingIds.d.ts","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,sBAAsB,GAAG;IACnC,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B,CAAA;AAED;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAC3B,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAgCxC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { logger } from '../../utils/logger.js';
|
|
2
|
+
import { convertIdIntoGid, fetchShopifyGraphql, } from '../../utils/shopifyFetch.js';
|
|
3
|
+
import { queryFulfillmentTrackingIds } from './getFulfillmentTrackingIds.queries.js';
|
|
4
|
+
/**
|
|
5
|
+
* Retrieves tracking information for a fulfillment by its ID.
|
|
6
|
+
* Returns the tracking numbers and the tracking company.
|
|
7
|
+
*
|
|
8
|
+
* @param {string | number | bigint} id - The Shopify fulfillment ID. Can be a GID string (e.g., "gid://shopify/Fulfillment/123456789") or a numeric ID (e.g., 123456789 or 123456789n).
|
|
9
|
+
* @returns {Promise<FulfillmentTrackingIds | null>} A promise that resolves to the tracking info or null if fulfillment not found.
|
|
10
|
+
* @throws {Error} If the GraphQL query fails.
|
|
11
|
+
*/
|
|
12
|
+
export async function getFulfillmentTrackingIds(id) {
|
|
13
|
+
const gid = typeof id === 'string'
|
|
14
|
+
? id
|
|
15
|
+
: convertIdIntoGid(typeof id === 'number' ? BigInt(id) : id, 'Fulfillment');
|
|
16
|
+
const variables = { id: gid };
|
|
17
|
+
const response = await fetchShopifyGraphql({
|
|
18
|
+
query: queryFulfillmentTrackingIds,
|
|
19
|
+
variables,
|
|
20
|
+
});
|
|
21
|
+
if (!response.fulfillment) {
|
|
22
|
+
logger.debug(`No fulfillment found with ID: ${id}`);
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
const trackingInfo = response.fulfillment.trackingInfo;
|
|
26
|
+
const trackingNumbers = trackingInfo
|
|
27
|
+
.map((info) => info.number)
|
|
28
|
+
.filter((num) => num != null);
|
|
29
|
+
// Use the first company found (typically all tracking numbers share the same company)
|
|
30
|
+
const trackingCompany = trackingInfo[0]?.company ?? null;
|
|
31
|
+
return {
|
|
32
|
+
trackingNumbers,
|
|
33
|
+
trackingCompany,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=getFulfillmentTrackingIds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFulfillmentTrackingIds.js","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAA;AAOpF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,EAA4B;IAE5B,MAAM,GAAG,GACP,OAAO,EAAE,KAAK,QAAQ;QACpB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,gBAAgB,CACd,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EACxC,aAAa,CACd,CAAA;IAEP,MAAM,SAAS,GAAyC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAA;IAEnE,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAA8B;QACtE,KAAK,EAAE,2BAA2B;QAClC,SAAS;KACV,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,CAAC,CAAA;QACnD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAA;IACtD,MAAM,eAAe,GAAG,YAAY;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;SAC1B,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,CAAA;IAC9C,sFAAsF;IACtF,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,IAAI,CAAA;IAExD,OAAO;QACL,eAAe;QACf,eAAe;KAChB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FulfillmentTrackingIdsQuery } from '../../generated-api-types/2025-04/admin.generated';
|
|
2
|
+
import type { FulfillmentTrackingIds } from './getFulfillmentTrackingIds';
|
|
3
|
+
export declare const fulfillmentTrackingIdsMock: FulfillmentTrackingIdsQuery;
|
|
4
|
+
export declare const expectedFulfillmentTrackingIds: FulfillmentTrackingIds;
|
|
5
|
+
//# sourceMappingURL=getFulfillmentTrackingIds.mock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFulfillmentTrackingIds.mock.d.ts","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAA;AACpG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEzE,eAAO,MAAM,0BAA0B,EAAE,2BAcxC,CAAA;AAED,eAAO,MAAM,8BAA8B,EAAE,sBAG5C,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const fulfillmentTrackingIdsMock = {
|
|
2
|
+
fulfillment: {
|
|
3
|
+
id: 'gid://shopify/Fulfillment/5765989589285',
|
|
4
|
+
trackingInfo: [
|
|
5
|
+
{
|
|
6
|
+
company: 'DHL',
|
|
7
|
+
number: '123456789012',
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
company: 'DHL',
|
|
11
|
+
number: '987654321098',
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
export const expectedFulfillmentTrackingIds = {
|
|
17
|
+
trackingNumbers: ['123456789012', '987654321098'],
|
|
18
|
+
trackingCompany: 'DHL',
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=getFulfillmentTrackingIds.mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFulfillmentTrackingIds.mock.js","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.mock.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,0BAA0B,GAAgC;IACrE,WAAW,EAAE;QACX,EAAE,EAAE,yCAAyC;QAC7C,YAAY,EAAE;YACZ;gBACE,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,cAAc;aACvB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,cAAc;aACvB;SACF;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,8BAA8B,GAA2B;IACpE,eAAe,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;IACjD,eAAe,EAAE,KAAK;CACvB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFulfillmentTrackingIds.queries.d.ts","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.queries.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,2BAA2B,QAUvC,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { gql } from '../../utils/logger';
|
|
2
|
+
export const queryFulfillmentTrackingIds = gql `#graphql
|
|
3
|
+
query fulfillmentTrackingIds($id: ID!) {
|
|
4
|
+
fulfillment(id: $id) {
|
|
5
|
+
id
|
|
6
|
+
trackingInfo(first: 50) {
|
|
7
|
+
company
|
|
8
|
+
number
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
`;
|
|
13
|
+
//# sourceMappingURL=getFulfillmentTrackingIds.queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFulfillmentTrackingIds.queries.js","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAExC,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAA;;;;;;;;;;CAU7C,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFulfillmentTrackingIds.test.d.ts","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { HttpResponse, graphql, passthrough } from 'msw';
|
|
2
|
+
import { describe, expect, it } from 'vitest';
|
|
3
|
+
import { server } from '../../utils/mswHandlers';
|
|
4
|
+
import { getFulfillmentTrackingIds } from './getFulfillmentTrackingIds';
|
|
5
|
+
import { expectedFulfillmentTrackingIds } from './getFulfillmentTrackingIds.mock';
|
|
6
|
+
describe('getFulfillmentTrackingIds', () => {
|
|
7
|
+
it('should return tracking info when found with GID string', async () => {
|
|
8
|
+
const result = await getFulfillmentTrackingIds('gid://shopify/Fulfillment/5765989589285');
|
|
9
|
+
expect(result).toEqual(expectedFulfillmentTrackingIds);
|
|
10
|
+
});
|
|
11
|
+
it('should return tracking info when found with numeric ID', async () => {
|
|
12
|
+
const result = await getFulfillmentTrackingIds(5765989589285n);
|
|
13
|
+
expect(result).toEqual(expectedFulfillmentTrackingIds);
|
|
14
|
+
});
|
|
15
|
+
it('should return tracking info when found with number', async () => {
|
|
16
|
+
const result = await getFulfillmentTrackingIds(5765989589285);
|
|
17
|
+
expect(result).toEqual(expectedFulfillmentTrackingIds);
|
|
18
|
+
});
|
|
19
|
+
it('should return empty tracking when fulfillment has no tracking info', async () => {
|
|
20
|
+
server.use(graphql.query('fulfillmentTrackingIds', () => HttpResponse.json({
|
|
21
|
+
data: {
|
|
22
|
+
fulfillment: {
|
|
23
|
+
id: 'gid://shopify/Fulfillment/5765989589285',
|
|
24
|
+
trackingInfo: [],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
})));
|
|
28
|
+
const result = await getFulfillmentTrackingIds(5765989589285);
|
|
29
|
+
expect(result).toEqual({
|
|
30
|
+
trackingNumbers: [],
|
|
31
|
+
trackingCompany: null,
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
it('should filter out null tracking numbers', async () => {
|
|
35
|
+
server.use(graphql.query('fulfillmentTrackingIds', () => HttpResponse.json({
|
|
36
|
+
data: {
|
|
37
|
+
fulfillment: {
|
|
38
|
+
id: 'gid://shopify/Fulfillment/5765989589285',
|
|
39
|
+
trackingInfo: [
|
|
40
|
+
{ number: '123456789', company: 'DHL' },
|
|
41
|
+
{ number: null, company: 'DHL' },
|
|
42
|
+
{ number: '987654321', company: 'DHL' },
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
})));
|
|
47
|
+
const result = await getFulfillmentTrackingIds(5765989589285);
|
|
48
|
+
expect(result).toEqual({
|
|
49
|
+
trackingNumbers: ['123456789', '987654321'],
|
|
50
|
+
trackingCompany: 'DHL',
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe('Live', () => {
|
|
54
|
+
it('should return null when fulfillment not found', async () => {
|
|
55
|
+
server.use(graphql.query('fulfillmentTrackingIds', () => passthrough()));
|
|
56
|
+
const result = await getFulfillmentTrackingIds('gid://shopify/Fulfillment/99999999999');
|
|
57
|
+
expect(result).toBeNull();
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=getFulfillmentTrackingIds.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFulfillmentTrackingIds.test.js","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,11 +11,11 @@ declare const GetLeanOrderByIdReturn: z.ZodNullable<z.ZodObject<{
|
|
|
11
11
|
amount: z.ZodString;
|
|
12
12
|
currencyCode: z.ZodString;
|
|
13
13
|
}, "strip", z.ZodTypeAny, {
|
|
14
|
-
currencyCode: string;
|
|
15
14
|
amount: string;
|
|
16
|
-
}, {
|
|
17
15
|
currencyCode: string;
|
|
16
|
+
}, {
|
|
18
17
|
amount: string;
|
|
18
|
+
currencyCode: string;
|
|
19
19
|
}>;
|
|
20
20
|
customer: z.ZodNullable<z.ZodObject<{
|
|
21
21
|
id: z.ZodString;
|
|
@@ -26,14 +26,14 @@ declare const GetLeanOrderByIdReturn: z.ZodNullable<z.ZodObject<{
|
|
|
26
26
|
}, "strip", z.ZodTypeAny, {
|
|
27
27
|
id: string;
|
|
28
28
|
displayName: string;
|
|
29
|
-
lastName: string | null;
|
|
30
29
|
firstName: string | null;
|
|
30
|
+
lastName: string | null;
|
|
31
31
|
emailAddress: string | null;
|
|
32
32
|
}, {
|
|
33
33
|
id: string;
|
|
34
34
|
displayName: string;
|
|
35
|
-
lastName: string | null;
|
|
36
35
|
firstName: string | null;
|
|
36
|
+
lastName: string | null;
|
|
37
37
|
emailAddress: string | null;
|
|
38
38
|
}>>;
|
|
39
39
|
financialStatus: z.ZodNullable<z.ZodString>;
|
|
@@ -48,8 +48,8 @@ declare const GetLeanOrderByIdReturn: z.ZodNullable<z.ZodObject<{
|
|
|
48
48
|
country: z.ZodNullable<z.ZodString>;
|
|
49
49
|
zip: z.ZodNullable<z.ZodString>;
|
|
50
50
|
}, "strip", z.ZodTypeAny, {
|
|
51
|
-
lastName: string | null;
|
|
52
51
|
firstName: string | null;
|
|
52
|
+
lastName: string | null;
|
|
53
53
|
address1: string | null;
|
|
54
54
|
address2: string | null;
|
|
55
55
|
city: string | null;
|
|
@@ -57,8 +57,8 @@ declare const GetLeanOrderByIdReturn: z.ZodNullable<z.ZodObject<{
|
|
|
57
57
|
country: string | null;
|
|
58
58
|
zip: string | null;
|
|
59
59
|
}, {
|
|
60
|
-
lastName: string | null;
|
|
61
60
|
firstName: string | null;
|
|
61
|
+
lastName: string | null;
|
|
62
62
|
address1: string | null;
|
|
63
63
|
address2: string | null;
|
|
64
64
|
city: string | null;
|
|
@@ -71,18 +71,19 @@ declare const GetLeanOrderByIdReturn: z.ZodNullable<z.ZodObject<{
|
|
|
71
71
|
createdAt: string;
|
|
72
72
|
updatedAt: string;
|
|
73
73
|
name: string;
|
|
74
|
+
fulfillmentStatus: string | null;
|
|
74
75
|
cancelledAt: string | null;
|
|
75
76
|
cancelReason: string | null;
|
|
76
77
|
customer: {
|
|
77
78
|
id: string;
|
|
78
79
|
displayName: string;
|
|
79
|
-
lastName: string | null;
|
|
80
80
|
firstName: string | null;
|
|
81
|
+
lastName: string | null;
|
|
81
82
|
emailAddress: string | null;
|
|
82
83
|
} | null;
|
|
83
84
|
shippingAddress: {
|
|
84
|
-
lastName: string | null;
|
|
85
85
|
firstName: string | null;
|
|
86
|
+
lastName: string | null;
|
|
86
87
|
address1: string | null;
|
|
87
88
|
address2: string | null;
|
|
88
89
|
city: string | null;
|
|
@@ -91,28 +92,28 @@ declare const GetLeanOrderByIdReturn: z.ZodNullable<z.ZodObject<{
|
|
|
91
92
|
zip: string | null;
|
|
92
93
|
} | null;
|
|
93
94
|
totalPrice: {
|
|
94
|
-
currencyCode: string;
|
|
95
95
|
amount: string;
|
|
96
|
+
currencyCode: string;
|
|
96
97
|
};
|
|
97
|
-
fulfillmentStatus: string | null;
|
|
98
98
|
financialStatus: string | null;
|
|
99
99
|
}, {
|
|
100
100
|
id: string;
|
|
101
101
|
createdAt: string;
|
|
102
102
|
updatedAt: string;
|
|
103
103
|
name: string;
|
|
104
|
+
fulfillmentStatus: string | null;
|
|
104
105
|
cancelledAt: string | null;
|
|
105
106
|
cancelReason: string | null;
|
|
106
107
|
customer: {
|
|
107
108
|
id: string;
|
|
108
109
|
displayName: string;
|
|
109
|
-
lastName: string | null;
|
|
110
110
|
firstName: string | null;
|
|
111
|
+
lastName: string | null;
|
|
111
112
|
emailAddress: string | null;
|
|
112
113
|
} | null;
|
|
113
114
|
shippingAddress: {
|
|
114
|
-
lastName: string | null;
|
|
115
115
|
firstName: string | null;
|
|
116
|
+
lastName: string | null;
|
|
116
117
|
address1: string | null;
|
|
117
118
|
address2: string | null;
|
|
118
119
|
city: string | null;
|
|
@@ -121,10 +122,9 @@ declare const GetLeanOrderByIdReturn: z.ZodNullable<z.ZodObject<{
|
|
|
121
122
|
zip: string | null;
|
|
122
123
|
} | null;
|
|
123
124
|
totalPrice: {
|
|
124
|
-
currencyCode: string;
|
|
125
125
|
amount: string;
|
|
126
|
+
currencyCode: string;
|
|
126
127
|
};
|
|
127
|
-
fulfillmentStatus: string | null;
|
|
128
128
|
financialStatus: string | null;
|
|
129
129
|
}>>;
|
|
130
130
|
export type LeanOrder = z.infer<typeof GetLeanOrderByIdReturn>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getOrderById.mock.d.ts","sourceRoot":"","sources":["../../../src/queries/orders/getOrderById.mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACf,MAAM,mDAAmD,CAAA;AAS1D,eAAO,MAAM,aAAa,EAAE,cAoC3B,CAAA;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BjC,CAAA;AAGD,eAAO,MAAM,iBAAiB,EAAE,kBAmI/B,CAAA;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"getOrderById.mock.d.ts","sourceRoot":"","sources":["../../../src/queries/orders/getOrderById.mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACf,MAAM,mDAAmD,CAAA;AAS1D,eAAO,MAAM,aAAa,EAAE,cAoC3B,CAAA;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BjC,CAAA;AAGD,eAAO,MAAM,iBAAiB,EAAE,kBAmI/B,CAAA;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;qBAC4oB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cADnnB,CAAA"}
|
|
@@ -9,11 +9,11 @@ declare const GetLeanOrderByNameReturn: z.ZodNullable<z.ZodObject<{
|
|
|
9
9
|
amount: z.ZodString;
|
|
10
10
|
currencyCode: z.ZodString;
|
|
11
11
|
}, "strip", z.ZodTypeAny, {
|
|
12
|
-
currencyCode: string;
|
|
13
12
|
amount: string;
|
|
14
|
-
}, {
|
|
15
13
|
currencyCode: string;
|
|
14
|
+
}, {
|
|
16
15
|
amount: string;
|
|
16
|
+
currencyCode: string;
|
|
17
17
|
}>;
|
|
18
18
|
customer: z.ZodNullable<z.ZodObject<{
|
|
19
19
|
id: z.ZodString;
|
|
@@ -35,32 +35,32 @@ declare const GetLeanOrderByNameReturn: z.ZodNullable<z.ZodObject<{
|
|
|
35
35
|
createdAt: string;
|
|
36
36
|
updatedAt: string;
|
|
37
37
|
name: string;
|
|
38
|
+
fulfillmentStatus: string | null;
|
|
38
39
|
customer: {
|
|
39
40
|
id: string;
|
|
40
41
|
displayName: string;
|
|
41
42
|
emailAddress: string | null;
|
|
42
43
|
} | null;
|
|
43
44
|
totalPrice: {
|
|
44
|
-
currencyCode: string;
|
|
45
45
|
amount: string;
|
|
46
|
+
currencyCode: string;
|
|
46
47
|
};
|
|
47
|
-
fulfillmentStatus: string | null;
|
|
48
48
|
financialStatus: string | null;
|
|
49
49
|
}, {
|
|
50
50
|
id: string;
|
|
51
51
|
createdAt: string;
|
|
52
52
|
updatedAt: string;
|
|
53
53
|
name: string;
|
|
54
|
+
fulfillmentStatus: string | null;
|
|
54
55
|
customer: {
|
|
55
56
|
id: string;
|
|
56
57
|
displayName: string;
|
|
57
58
|
emailAddress: string | null;
|
|
58
59
|
} | null;
|
|
59
60
|
totalPrice: {
|
|
60
|
-
currencyCode: string;
|
|
61
61
|
amount: string;
|
|
62
|
+
currencyCode: string;
|
|
62
63
|
};
|
|
63
|
-
fulfillmentStatus: string | null;
|
|
64
64
|
financialStatus: string | null;
|
|
65
65
|
}>>;
|
|
66
66
|
export type LeanOrderByName = z.infer<typeof GetLeanOrderByNameReturn>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { OrderCancellationInfoByNameQuery } from '../../generated-api-types/2025-04/admin.generated.js';
|
|
2
|
+
export type OrderCancellationInfo = NonNullable<OrderCancellationInfoByNameQuery['orders']['edges'][number]['node']>;
|
|
3
|
+
/**
|
|
4
|
+
* Retrieves cancellation information for an order by its name (e.g., "B12345").
|
|
5
|
+
* Returns null if no order is found with the specified name.
|
|
6
|
+
*
|
|
7
|
+
* @param {string} orderName - The order name to search for (e.g., "B12345").
|
|
8
|
+
* @returns {Promise<OrderCancellationInfo | null>} A promise that resolves to the order cancellation info or null if not found.
|
|
9
|
+
* @throws {Error} If the GraphQL query fails or if the response structure is invalid.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getOrderCancellationInfoByName(orderName: string): Promise<OrderCancellationInfo | null>;
|
|
12
|
+
//# sourceMappingURL=getOrderCancellationInfo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrderCancellationInfo.d.ts","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gCAAgC,EAEjC,MAAM,sDAAsD,CAAA;AAM7D,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAC7C,gCAAgC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CACpE,CAAA;AAED;;;;;;;GAOG;AACH,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAgCvC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { logger } from '../../utils/logger.js';
|
|
2
|
+
import { fetchShopifyGraphql } from '../../utils/shopifyFetch.js';
|
|
3
|
+
import { queryOrderCancellationInfoByName } from './getOrderCancellationInfo.queries.js';
|
|
4
|
+
/**
|
|
5
|
+
* Retrieves cancellation information for an order by its name (e.g., "B12345").
|
|
6
|
+
* Returns null if no order is found with the specified name.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} orderName - The order name to search for (e.g., "B12345").
|
|
9
|
+
* @returns {Promise<OrderCancellationInfo | null>} A promise that resolves to the order cancellation info or null if not found.
|
|
10
|
+
* @throws {Error} If the GraphQL query fails or if the response structure is invalid.
|
|
11
|
+
*/
|
|
12
|
+
export async function getOrderCancellationInfoByName(orderName) {
|
|
13
|
+
const variables = {
|
|
14
|
+
first: 1,
|
|
15
|
+
queryFilter: `name:${orderName}`,
|
|
16
|
+
};
|
|
17
|
+
const response = await fetchShopifyGraphql({
|
|
18
|
+
query: queryOrderCancellationInfoByName,
|
|
19
|
+
variables,
|
|
20
|
+
});
|
|
21
|
+
if (!response.orders) {
|
|
22
|
+
throw new Error("Invalid GraphQL response for getOrderCancellationInfoByName: 'orders' field is missing.");
|
|
23
|
+
}
|
|
24
|
+
if (!Array.isArray(response.orders.edges)) {
|
|
25
|
+
throw new Error("Invalid GraphQL response for getOrderCancellationInfoByName: 'orders.edges' is not an array.");
|
|
26
|
+
}
|
|
27
|
+
const firstEdge = response.orders.edges[0];
|
|
28
|
+
const order = firstEdge?.node;
|
|
29
|
+
if (!order) {
|
|
30
|
+
logger.debug(`No order found with name: ${orderName}`);
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return order;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=getOrderCancellationInfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrderCancellationInfo.js","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAA;AAOxF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,SAAiB;IAEjB,MAAM,SAAS,GAA8C;QAC3D,KAAK,EAAE,CAAC;QACR,WAAW,EAAE,QAAQ,SAAS,EAAE;KACjC,CAAA;IAED,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAmC;QAC3E,KAAK,EAAE,gCAAgC;QACvC,SAAS;KACV,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAA;IACH,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,8FAA8F,CAC/F,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1C,MAAM,KAAK,GAAG,SAAS,EAAE,IAAI,CAAA;IAE7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAA;QACtD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { OrderCancellationInfoByNameQuery } from '../../generated-api-types/2025-04/admin.generated';
|
|
2
|
+
export declare const orderCancellationInfoMock: OrderCancellationInfoByNameQuery;
|
|
3
|
+
export declare const expectedOrderCancellationInfo: Pick<import("../../generated-api-types/2025-04/admin.types").Order, "id" | "name" | "cancelledAt"> | undefined;
|
|
4
|
+
export declare const orderCancellationInfoNotCancelledMock: OrderCancellationInfoByNameQuery;
|
|
5
|
+
export declare const expectedOrderCancellationInfoNotCancelled: Pick<import("../../generated-api-types/2025-04/admin.types").Order, "id" | "name" | "cancelledAt"> | undefined;
|
|
6
|
+
//# sourceMappingURL=getOrderCancellationInfo.mock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrderCancellationInfo.mock.d.ts","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mDAAmD,CAAA;AAEzG,eAAO,MAAM,yBAAyB,EAAE,gCAYvC,CAAA;AAED,eAAO,MAAM,6BAA6B,gHACO,CAAA;AAEjD,eAAO,MAAM,qCAAqC,EAAE,gCAajD,CAAA;AAEH,eAAO,MAAM,yCAAyC,gHACO,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const orderCancellationInfoMock = {
|
|
2
|
+
orders: {
|
|
3
|
+
edges: [
|
|
4
|
+
{
|
|
5
|
+
node: {
|
|
6
|
+
id: 'gid://shopify/Order/5765989589285',
|
|
7
|
+
name: 'B12345',
|
|
8
|
+
cancelledAt: '2024-01-15T10:30:00Z',
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
],
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
export const expectedOrderCancellationInfo = orderCancellationInfoMock.orders.edges[0]?.node;
|
|
15
|
+
export const orderCancellationInfoNotCancelledMock = {
|
|
16
|
+
orders: {
|
|
17
|
+
edges: [
|
|
18
|
+
{
|
|
19
|
+
node: {
|
|
20
|
+
id: 'gid://shopify/Order/5765989589286',
|
|
21
|
+
name: 'B12346',
|
|
22
|
+
cancelledAt: null,
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
export const expectedOrderCancellationInfoNotCancelled = orderCancellationInfoNotCancelledMock.orders.edges[0]?.node;
|
|
29
|
+
//# sourceMappingURL=getOrderCancellationInfo.mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrderCancellationInfo.mock.js","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.mock.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,yBAAyB,GAAqC;IACzE,MAAM,EAAE;QACN,KAAK,EAAE;YACL;gBACE,IAAI,EAAE;oBACJ,EAAE,EAAE,mCAAmC;oBACvC,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sBAAsB;iBACpC;aACF;SACF;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GACxC,yBAAyB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;AAEjD,MAAM,CAAC,MAAM,qCAAqC,GAChD;IACE,MAAM,EAAE;QACN,KAAK,EAAE;YACL;gBACE,IAAI,EAAE;oBACJ,EAAE,EAAE,mCAAmC;oBACvC,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,IAAI;iBAClB;aACF;SACF;KACF;CACF,CAAA;AAEH,MAAM,CAAC,MAAM,yCAAyC,GACpD,qCAAqC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrderCancellationInfo.queries.d.ts","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.queries.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gCAAgC,QAY5C,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { gql } from '../../utils/logger';
|
|
2
|
+
export const queryOrderCancellationInfoByName = gql `#graphql
|
|
3
|
+
query orderCancellationInfoByName($first: Int!, $queryFilter: String!) {
|
|
4
|
+
orders(first: $first, query: $queryFilter) {
|
|
5
|
+
edges {
|
|
6
|
+
node {
|
|
7
|
+
id
|
|
8
|
+
name
|
|
9
|
+
cancelledAt
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
`;
|
|
15
|
+
//# sourceMappingURL=getOrderCancellationInfo.queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrderCancellationInfo.queries.js","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAExC,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,CAAA;;;;;;;;;;;;CAYlD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrderCancellationInfo.test.d.ts","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { graphql, passthrough } from 'msw';
|
|
2
|
+
import { describe, expect, it } from 'vitest';
|
|
3
|
+
import { server } from '../../utils/mswHandlers';
|
|
4
|
+
import { createGqlResponse } from '../../utils/mswHandlers';
|
|
5
|
+
import { getOrderCancellationInfoByName } from './getOrderCancellationInfo';
|
|
6
|
+
import { expectedOrderCancellationInfo, expectedOrderCancellationInfoNotCancelled, orderCancellationInfoNotCancelledMock, } from './getOrderCancellationInfo.mock';
|
|
7
|
+
describe('getOrderCancellationInfoByName', () => {
|
|
8
|
+
it('should return cancellation info when order is found and cancelled', async () => {
|
|
9
|
+
const result = await getOrderCancellationInfoByName('B12345');
|
|
10
|
+
expect(result).toEqual(expectedOrderCancellationInfo);
|
|
11
|
+
});
|
|
12
|
+
it('should return order with cancelledAt as null when order is not cancelled', async () => {
|
|
13
|
+
server.use(graphql.query('orderCancellationInfoByName', createGqlResponse(orderCancellationInfoNotCancelledMock)));
|
|
14
|
+
const result = await getOrderCancellationInfoByName('B12346');
|
|
15
|
+
expect(result).toEqual(expectedOrderCancellationInfoNotCancelled);
|
|
16
|
+
expect(result?.cancelledAt).toBeNull();
|
|
17
|
+
});
|
|
18
|
+
it('should return the order id as GID', async () => {
|
|
19
|
+
const result = await getOrderCancellationInfoByName('B12345');
|
|
20
|
+
expect(result?.id).toBe('gid://shopify/Order/5765989589285');
|
|
21
|
+
});
|
|
22
|
+
it('should return the order name', async () => {
|
|
23
|
+
const result = await getOrderCancellationInfoByName('B12345');
|
|
24
|
+
expect(result?.name).toBe('B12345');
|
|
25
|
+
});
|
|
26
|
+
describe('Live', () => {
|
|
27
|
+
it('should return null when order not found', async () => {
|
|
28
|
+
server.use(graphql.query('orderCancellationInfoByName', () => passthrough()));
|
|
29
|
+
const result = await getOrderCancellationInfoByName('NONEXISTENT_ORDER_12345');
|
|
30
|
+
expect(result).toBeNull();
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=getOrderCancellationInfo.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrderCancellationInfo.test.js","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAA;AAC3E,OAAO,EACL,6BAA6B,EAC7B,yCAAyC,EACzC,qCAAqC,GACtC,MAAM,iCAAiC,CAAA;AAExC,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,QAAQ,CAAC,CAAA;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,CAAC,GAAG,CACR,OAAO,CAAC,KAAK,CACX,6BAA6B,EAC7B,iBAAiB,CAAC,qCAAqC,CAAC,CACzD,CACF,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,QAAQ,CAAC,CAAA;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAA;QACjE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,QAAQ,CAAC,CAAA;QAC7D,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,QAAQ,CAAC,CAAA;QAC7D,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,CAAC,GAAG,CACR,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAClE,CAAA;YACD,MAAM,MAAM,GAAG,MAAM,8BAA8B,CACjD,yBAAyB,CAC1B,CAAA;YACD,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;QAC3B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|