­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ describe("createCheckoutPlaceOrderApi",()=>{let e,t,s,n;beforeEach(()=>{n=null;let a=!1;const o=new Set,r=new Set;s={addClass:jest.fn(e=>(e.split(" ").forEach(e=>r.add("terms-row")),e.split(" ").forEach(e=>o.add(e)),s)),removeClass:jest.fn(e=>(e.split(" ").forEach(e=>o["delete"](e)),e.includes("woocommerce-invalid")&&r["delete"]("terms-row"),s)),hasClass:jest.fn(e=>o.has(e)),length:1,offset:jest.fn(()=>({top:100}))},(t={length:1,is:jest.fn(e=>":checked"===e&&a),closest:jest.fn(()=>s),trigger:jest.fn()}).setChecked=(e=>{a=e}),(e={length:1,find:jest.fn(e=>'input[name="terms"]:visible'===e?t:".input-text, select, input:checkbox"===e?{trigger:jest.fn()}:".woocommerce-invalid"===e?{length:r.size,first:jest.fn(()=>({length:r.size>0?1:0,offset:jest.fn(()=>({top:100}))}))}:".validate-required:visible"===e?{each:jest.fn()}:'input[name="payment_method"]:checked'===e?{val:jest.fn(()=>"test-gateway")}:{length:0,trigger:jest.fn()}),trigger:jest.fn()}).on=jest.fn(()=>e),e.attr=jest.fn(()=>e);const l=()=>{const e={length:0,on:jest.fn(()=>e),off:jest.fn(()=>e),attr:jest.fn(()=>e),find:jest.fn(()=>l()),first:jest.fn(()=>l()),filter:jest.fn(()=>l()),eq:jest.fn(()=>l()),trigger:jest.fn(()=>e),val:jest.fn(),prop:jest.fn(()=>e),each:jest.fn(()=>e),data:jest.fn(),serialize:jest.fn(()=>""),addClass:jest.fn(()=>e),removeClass:jest.fn(()=>e),hasClass:jest.fn(()=>!1),is:jest.fn(()=>!1),get:jest.fn(()=>[]),text:jest.fn(()=>""),html:jest.fn(()=>""),closest:jest.fn(()=>l()),parent:jest.fn(()=>l()),parents:jest.fn(()=>l()),siblings:jest.fn(()=>l()),children:jest.fn(()=>l()),append:jest.fn(()=>e),prepend:jest.fn(()=>e),remove:jest.fn(()=>e),empty:jest.fn(()=>e),show:jest.fn(()=>e),hide:jest.fn(()=>e),css:jest.fn(()=>e),slideUp:jest.fn(()=>e),slideDown:jest.fn(()=>e),fadeIn:jest.fn(()=>e),fadeOut:jest.fn(()=>e),offset:jest.fn(()=>({top:0,left:0})),width:jest.fn(()=>0),height:jest.fn(()=>0),outerWidth:jest.fn(()=>0),outerHeight:jest.fn(()=>0),scrollTop:jest.fn(()=>0),focus:jest.fn(()=>e),blur:jest.fn(()=>e),block:jest.fn(()=>e),unblock:jest.fn(()=>e)};return e},f={},c={on:jest.fn((e,t)=>(f[e]||(f[e]=[]),f[e].push(t),c)),trigger:jest.fn((e,t)=>{return(f[e]||[]).forEach(e=>e({},...t||[])),c}),hasClass:jest.fn(()=>!1)},i=jest.fn(t=>"function"==typeof t?(t(i),i):"form.checkout"===t?e:"#order_review"===t?{length:0,on:jest.fn(),attr:jest.fn(),find:jest.fn(()=>({length:0,val:jest.fn()}))}:"html, body"===t?{animate:jest.fn()}:t===document.body?c:l());i.blockUI={defaults:{overlayCSS:{}}},global.window.jQuery=i,global.window.$=i,global.jQuery=i,global.$=i,global.window.wc_checkout_params={gateways_with_custom_place_order_button:["test-gateway"]},global.window.wc={customPlaceOrderButton:{__getForm:jest.fn(()=>e),__maybeShow:jest.fn((e,t)=>{n=t}),__maybeHideDefaultButtonOnInit:jest.fn(),__cleanup:jest.fn()}},jest.resetModules(),require("../checkout"),c.trigger("wc_custom_place_order_button_registered",["test-gateway"])}),afterEach(()=>{jest.clearAllMocks()}),describe("Terms checkbox validation",()=>{test("should return hasError: true when terms checkbox is not checked",async()=>{t.setChecked(!1);const e=await n.validate();expect(e.hasError).toBe(!0),expect(s.addClass).toHaveBeenCalledWith("woocommerce-invalid")}),test("should return hasError: false when terms checkbox is checked",async()=>{t.setChecked(!0);const e=await n.validate();expect(e.hasError).toBe(!1)}),test("should clear stale invalid state before re-validating terms",async()=>{t.setChecked(!1),await n.validate(),expect(s.addClass).toHaveBeenCalledWith("woocommerce-invalid"),s.removeClass.mockClear(),s.addClass.mockClear(),t.setChecked(!0);const e=await n.validate();expect(s.removeClass).toHaveBeenCalledWith("woocommerce-invalid"),expect(s.addClass).not.toHaveBeenCalledWith("woocommerce-invalid"),expect(e.hasError).toBe(!1)}),test("should allow submission after checking terms following a failed validation",async()=>{t.setChecked(!1);const e=await n.validate();expect(e.hasError).toBe(!0),t.setChecked(!0);const s=await n.validate();expect(s.hasError).toBe(!1)})})});