All files / src/components/Layout/Minicart index.tsx

85.71% Statements 6/7
83.33% Branches 5/6
66.67% Functions 2/3
85.71% Lines 6/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57    5x             5x 7x 7x   7x         2x                                                                            
import React from 'react';
import { STRAPI_URL } from '../../../configs/config';
const styles = require('./Minicart.module.css')
import { useCartContext } from '../../../contexts';
import { formatToPrice } from '../../../helpers';
import { useTranslation } from 'react-i18next';
import { ButtonClasses } from 'ag-ems-ui-library';
import { LocalizedLink as Link } from 'gatsby-theme-i18n';
 
export const Minicart = () => {
  const { t } = useTranslation();
  const { positions, totalPrice, remove } = useCartContext();
 
  return (
    <div className={styles.Minicart}>
      {positions && positions.length ? <>
        <ul className={styles.MinicartProducts}>
          {positions.map(item => (
            <li
              key={item.id}
              className={`${styles.MinicartProduct} ${item.strapiProduct.productType === 'bicycle' ? styles.bicycle : ''}`}
            >
              <Link className={styles.MinicartProductImage} to={'/' + item.strapiProduct.slug}>
                <img
                  src={STRAPI_URL + item.strapiProduct.thumbnail.formats.thumbnail.url}
                  alt={item.strapiProduct.name}
                />
              </Link>
              <div className={styles.MinicartProductInfo}>
                <Link className={styles.MinicartProductName}
                  to={'/' + item.strapiProduct.slug}>{item.strapiProduct.name} ({item.product.sku})</Link>
                <p className={styles.MinicartProductQuantity}>{t('cart.quantity')}: {item.quantity}</p>
                <p className={styles.MinicartProductPrice}>
                  {formatToPrice(item.product.price.regularPrice.amount.value)}
                </p>
                <button type="button" className={styles.MinicartProductRemove}
                  onClick={() => remove(item.id)}>{t('remove')}</button>
              </div>
            </li>
          ))}
        </ul>
        <div className={styles.MinicartFooter}>
          <p className={styles.MinicartTotalSum}>
            <span>{t('cart.totalSum')}:</span>
            <span className={styles.value}>{formatToPrice(totalPrice)}</span>
          </p>
          <Link to={'/cart'}
            className={`${styles.MinicartButton} ${ButtonClasses.xs} ${ButtonClasses['ks-primary']} ${ButtonClasses.fullWidth}`}>
            {t('cart.toCart')}
          </Link>
        </div>
      </> : (
          <p className={styles.MinicartText}>{t('cart.emptyText')}</p>
        )}
    </div>
  );
};