init
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
import { getQtyByVariantIdFromCart } from './getQtyByVariantIdFromCart';
|
||||
|
||||
describe('getQtyByVariantIdFromCart', () => {
|
||||
it('returns an empty map for an empty cart', () => {
|
||||
expect(getQtyByVariantIdFromCart([])).toEqual(new Map());
|
||||
});
|
||||
|
||||
it('sums quantities for duplicate variant rows', () => {
|
||||
expect(
|
||||
getQtyByVariantIdFromCart([
|
||||
{ variantId: 'variant-1', qty: 2 },
|
||||
{ variantId: 'variant-1', qty: 3 },
|
||||
{ variantId: 'variant-2', qty: 1 }
|
||||
])
|
||||
).toEqual(
|
||||
new Map([
|
||||
['variant-1', 5],
|
||||
['variant-2', 1]
|
||||
])
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,11 @@
|
||||
import type { CookieCart } from '../../modules/storefrontCore/types/cart/CookieCart';
|
||||
|
||||
export const getQtyByVariantIdFromCart = (cart: CookieCart): Map<string, number> => {
|
||||
const map = new Map<string, number>();
|
||||
|
||||
for (const line of cart) {
|
||||
map.set(line.variantId, (map.get(line.variantId) ?? 0) + line.qty);
|
||||
}
|
||||
|
||||
return map;
|
||||
};
|
||||
@@ -0,0 +1,16 @@
|
||||
import { getTotalCartQtyFromCart } from './getTotalCartQtyFromCart';
|
||||
|
||||
describe('getTotalCartQtyFromCart', () => {
|
||||
it('returns zero for an empty cart', () => {
|
||||
expect(getTotalCartQtyFromCart([])).toBe(0);
|
||||
});
|
||||
|
||||
it('sums line quantities', () => {
|
||||
expect(
|
||||
getTotalCartQtyFromCart([
|
||||
{ variantId: 'variant-1', qty: 2 },
|
||||
{ variantId: 'variant-2', qty: 3 }
|
||||
])
|
||||
).toBe(5);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,3 @@
|
||||
import type { CookieCart } from '../../modules/storefrontCore/types/cart/CookieCart';
|
||||
|
||||
export const getTotalCartQtyFromCart = (cart: CookieCart): number => cart.reduce((sum, line) => sum + line.qty, 0);
|
||||
Reference in New Issue
Block a user