PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.3
4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / dist / components / collection / functions / line-items / test / functions-line-items.spec.js
surecart / dist / components / collection / functions / line-items / test Last commit date
functions-line-items.spec.js 1 month ago functions-line-items.spec.js.map 1 month ago
functions-line-items.spec.js
1 lines
1 import{calculateInitialLineItems,getSessionId,getPerBundleQuantity,getBundleComponentRowsFromLineItems,groupBundleLineItems}from"../index";const prices=[{id:"price1",product_id:"product1",quantity:1,enabled:!0},{id:"price2",product_id:"product1",quantity:2,enabled:!0},{id:"price3",product_id:"product2",quantity:3,enabled:!0},{id:"price4",product_id:"product2",quantity:4,enabled:!0}];describe("Line items functions",(()=>{it("calculateInitialLineItems",(()=>{expect(calculateInitialLineItems(prices,"all")).toEqual([{price_id:"price1",quantity:1},{price_id:"price2",quantity:2},{price_id:"price3",quantity:3},{price_id:"price4",quantity:4}]),expect(calculateInitialLineItems(prices,"multiple")).toEqual([{price_id:"price1",quantity:1}]),expect(calculateInitialLineItems(prices,"single")).toEqual([{price_id:"price1",quantity:1}])})),describe("getPerBundleQuantity",(()=>{it("divides the component total by the parent quantity",(()=>{expect(getPerBundleQuantity({quantity:2},2)).toBe(1),expect(getPerBundleQuantity({quantity:4},2)).toBe(2)})),it("defaults the parent quantity to 1 and never returns below 1",(()=>{expect(getPerBundleQuantity({quantity:3})).toBe(3),expect(getPerBundleQuantity({quantity:0},5)).toBe(1)}))})),describe("getBundleComponentRowsFromLineItems",(()=>{const e=[{id:"c1",quantity:4,variant_options:["Red","XL"],price:{product:{name:"Air Beats"}}},{id:"c2",quantity:2,variant_display_options:"10°C",price:{product:{name:"Sleeping Bag"}}},{id:"c3",quantity:2,variant_options:[],price:{product:{name:"No Variant"}}}];it('builds per-bundle rows: options joined by " · ", display string fallback, all shown by default',(()=>{const t=getBundleComponentRowsFromLineItems(e,2);expect(t).toEqual([{id:"c1",name:"Air Beats",variants:"Red · XL",qty:2},{id:"c2",name:"Sleeping Bag",variants:"10°C",qty:1},{id:"c3",name:"No Variant",variants:"",qty:1}])})),it("drops components without a variant selection in variants-only mode",(()=>{const t=getBundleComponentRowsFromLineItems(e,2,!1);expect(t.map((e=>e.id))).toEqual(["c1","c2"])}))})),describe("groupBundleLineItems",(()=>{it("orders bundle components by position, regardless of payload order",(()=>{const{componentsByParent:e}=groupBundleLineItems([{id:"bundle",price:{product:{bundle:!0}},component_line_items:{data:[{id:"c-third",position:2},{id:"c-first",position:0},{id:"c-second",position:1}]}}]);expect(e.bundle.map((e=>e.id))).toEqual(["c-first","c-second","c-third"])})),it("preserves payload order when position is missing",(()=>{const{componentsByParent:e}=groupBundleLineItems([{id:"bundle",price:{product:{bundle:!0}},component_line_items:{data:[{id:"a"},{id:"b"},{id:"c"}]}}]);expect(e.bundle.map((e=>e.id))).toEqual(["a","b","c"])}))})),describe("getSessionId",(()=>{it("Should be able to refresh",(async()=>{expect(getSessionId("asdf",{id:"existing"},!0)).toBe(!1)})),it("Should return the checkout session id if it already exists",(async()=>{expect(getSessionId("asdf",{id:"existing"})).toBe("existing")})),it("Should get the checkout session from the url, first",(async()=>{delete window.location,window.location=new URL("https://www.example.com?order=urltest"),expect(getSessionId("asdf",{})).toBe("urltest")})),it("Should get the checkout session from localstorage, second",(async()=>{jest.spyOn(window.localStorage.__proto__,"getItem"),window.localStorage.__proto__.getItem=jest.fn(),getSessionId("asdf",{}),expect(localStorage.getItem).toHaveBeenCalled()}))}))}));