<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1786000462000" clover="4.4.1">
  <project timestamp="1786000462000" name="Novus Checkout Service">
    <metrics statements="140" coveredstatements="127" conditionals="24" coveredconditionals="17" methods="20" coveredmethods="18" elements="184" coveredelements="162" complexity="32" loc="200" ncloc="200" packages="2" files="4" classes="4"/>
    <package name="cart">
      <metrics statements="77" coveredstatements="68" conditionals="14" coveredconditionals="10" methods="11" coveredmethods="9" files="2" classes="2"/>
      <file name="pricing.js" path="src/cart/pricing.js">
        <metrics statements="44" coveredstatements="40" conditionals="8" coveredconditionals="6" methods="6" coveredmethods="5" classes="1" loc="62" ncloc="62"/>
        <line num="2" count="25" type="method" name="unitPrice" visibility="public"/>
        <line num="3" count="21" type="stmt"/>
        <line num="4" count="23" type="stmt"/>
        <line num="5" count="10" type="cond" truecount="1" falsecount="1"/>
        <line num="6" count="8" type="stmt"/>
        <line num="8" count="8" type="method" name="quantityMultiplier" visibility="public"/>
        <line num="9" count="47" type="stmt"/>
        <line num="10" count="2" type="stmt"/>
        <line num="11" count="0" type="stmt"/>
        <line num="12" count="29" type="stmt"/>
        <line num="13" count="9" type="method" name="roundHalfUp" visibility="public"/>
        <line num="15" count="14" type="cond" truecount="1" falsecount="1"/>
        <line num="16" count="36" type="stmt"/>
        <line num="17" count="40" type="stmt"/>
        <line num="18" count="5" type="stmt"/>
        <line num="19" count="37" type="method" name="applyTax" visibility="public"/>
        <line num="20" count="0" type="stmt"/>
        <line num="22" count="47" type="stmt"/>
        <line num="23" count="18" type="stmt"/>
        <line num="24" count="29" type="cond" truecount="1" falsecount="0"/>
        <line num="25" count="35" type="method" name="bulkRate" visibility="public"/>
        <line num="26" count="42" type="stmt"/>
        <line num="27" count="17" type="stmt"/>
        <line num="29" count="33" type="stmt"/>
        <line num="30" count="0" type="stmt"/>
        <line num="31" count="0" type="method" name="convertCurrency" visibility="public"/>
        <line num="32" count="42" type="stmt"/>
        <line num="33" count="9" type="cond" truecount="1" falsecount="0"/>
        <line num="34" count="13" type="stmt"/>
        <line num="36" count="45" type="stmt"/>
        <line num="37" count="16" type="stmt"/>
        <line num="38" count="20" type="stmt"/>
        <line num="39" count="0" type="stmt"/>
        <line num="40" count="18" type="stmt"/>
        <line num="41" count="24" type="stmt"/>
        <line num="43" count="15" type="stmt"/>
        <line num="44" count="30" type="stmt"/>
        <line num="45" count="33" type="stmt"/>
        <line num="46" count="16" type="stmt"/>
        <line num="47" count="9" type="stmt"/>
        <line num="48" count="46" type="stmt"/>
        <line num="50" count="15" type="stmt"/>
        <line num="51" count="15" type="stmt"/>
        <line num="52" count="2" type="stmt"/>
      </file>
      <file name="discounts.js" path="src/cart/discounts.js">
        <metrics statements="33" coveredstatements="28" conditionals="6" coveredconditionals="4" methods="5" coveredmethods="4" classes="1" loc="48" ncloc="48"/>
        <line num="2" count="30" type="method" name="percentageDiscount" visibility="public"/>
        <line num="3" count="2" type="stmt"/>
        <line num="4" count="40" type="stmt"/>
        <line num="5" count="11" type="cond" truecount="1" falsecount="1"/>
        <line num="6" count="29" type="stmt"/>
        <line num="8" count="12" type="method" name="stackDiscounts" visibility="public"/>
        <line num="9" count="8" type="stmt"/>
        <line num="10" count="29" type="stmt"/>
        <line num="11" count="5" type="stmt"/>
        <line num="12" count="25" type="stmt"/>
        <line num="13" count="31" type="method" name="isCouponExpired" visibility="public"/>
        <line num="15" count="7" type="cond" truecount="1" falsecount="0"/>
        <line num="16" count="31" type="stmt"/>
        <line num="17" count="5" type="stmt"/>
        <line num="18" count="42" type="stmt"/>
        <line num="19" count="7" type="method" name="loyaltyTier" visibility="public"/>
        <line num="20" count="23" type="stmt"/>
        <line num="22" count="30" type="stmt"/>
        <line num="23" count="2" type="stmt"/>
        <line num="24" count="17" type="cond" truecount="1" falsecount="0"/>
        <line num="25" count="0" type="method" name="freeShippingThreshold" visibility="public"/>
        <line num="26" count="42" type="stmt"/>
        <line num="27" count="14" type="stmt"/>
        <line num="29" count="42" type="stmt"/>
        <line num="30" count="22" type="stmt"/>
        <line num="31" count="0" type="stmt"/>
        <line num="32" count="40" type="stmt"/>
        <line num="33" count="44" type="stmt"/>
        <line num="34" count="12" type="stmt"/>
        <line num="36" count="30" type="stmt"/>
        <line num="37" count="33" type="stmt"/>
        <line num="38" count="5" type="stmt"/>
        <line num="39" count="27" type="stmt"/>
      </file>
    </package>
    <package name="checkout">
      <metrics statements="63" coveredstatements="59" conditionals="10" coveredconditionals="7" methods="9" coveredmethods="9" files="2" classes="2"/>
      <file name="session.js" path="src/checkout/session.js">
        <metrics statements="39" coveredstatements="36" conditionals="6" coveredconditionals="4" methods="6" coveredmethods="6" classes="1" loc="55" ncloc="55"/>
        <line num="2" count="13" type="method" name="createSession" visibility="public"/>
        <line num="3" count="36" type="stmt"/>
        <line num="4" count="34" type="stmt"/>
        <line num="5" count="17" type="cond" truecount="1" falsecount="1"/>
        <line num="6" count="27" type="stmt"/>
        <line num="8" count="36" type="method" name="expireSession" visibility="public"/>
        <line num="9" count="2" type="stmt"/>
        <line num="10" count="27" type="stmt"/>
        <line num="11" count="45" type="stmt"/>
        <line num="12" count="0" type="stmt"/>
        <line num="13" count="26" type="method" name="restoreCart" visibility="public"/>
        <line num="15" count="45" type="cond" truecount="1" falsecount="0"/>
        <line num="16" count="45" type="stmt"/>
        <line num="17" count="35" type="stmt"/>
        <line num="18" count="6" type="stmt"/>
        <line num="19" count="20" type="method" name="rotateToken" visibility="public"/>
        <line num="20" count="23" type="stmt"/>
        <line num="22" count="3" type="stmt"/>
        <line num="23" count="0" type="stmt"/>
        <line num="24" count="15" type="cond" truecount="1" falsecount="0"/>
        <line num="25" count="23" type="method" name="persistCart" visibility="public"/>
        <line num="26" count="39" type="stmt"/>
        <line num="27" count="6" type="stmt"/>
        <line num="29" count="27" type="stmt"/>
        <line num="30" count="42" type="stmt"/>
        <line num="31" count="8" type="method" name="readSessionCookie" visibility="public"/>
        <line num="32" count="32" type="stmt"/>
        <line num="33" count="0" type="stmt"/>
        <line num="34" count="9" type="stmt"/>
        <line num="36" count="5" type="stmt"/>
        <line num="37" count="6" type="stmt"/>
        <line num="38" count="13" type="stmt"/>
        <line num="39" count="46" type="stmt"/>
        <line num="40" count="7" type="stmt"/>
        <line num="41" count="41" type="stmt"/>
        <line num="43" count="32" type="stmt"/>
        <line num="44" count="26" type="stmt"/>
        <line num="45" count="22" type="stmt"/>
        <line num="46" count="11" type="stmt"/>
      </file>
      <file name="receipt.js" path="src/checkout/receipt.js">
        <metrics statements="24" coveredstatements="23" conditionals="4" coveredconditionals="3" methods="3" coveredmethods="3" classes="1" loc="35" ncloc="35"/>
        <line num="2" count="34" type="method" name="renderTotals" visibility="public"/>
        <line num="3" count="11" type="stmt"/>
        <line num="4" count="12" type="stmt"/>
        <line num="5" count="37" type="cond" truecount="1" falsecount="1"/>
        <line num="6" count="33" type="stmt"/>
        <line num="8" count="23" type="method" name="renderLineItems" visibility="public"/>
        <line num="9" count="2" type="stmt"/>
        <line num="10" count="4" type="stmt"/>
        <line num="11" count="41" type="stmt"/>
        <line num="12" count="30" type="stmt"/>
        <line num="13" count="29" type="method" name="formatCurrency" visibility="public"/>
        <line num="15" count="39" type="cond" truecount="1" falsecount="0"/>
        <line num="16" count="0" type="stmt"/>
        <line num="17" count="24" type="stmt"/>
        <line num="18" count="41" type="stmt"/>
        <line num="19" count="29" type="stmt"/>
        <line num="20" count="25" type="stmt"/>
        <line num="22" count="27" type="stmt"/>
        <line num="23" count="47" type="stmt"/>
        <line num="24" count="39" type="stmt"/>
        <line num="25" count="43" type="stmt"/>
        <line num="26" count="28" type="stmt"/>
        <line num="27" count="13" type="stmt"/>
        <line num="29" count="42" type="stmt"/>
      </file>
    </package>
  </project>
</coverage>
