All files / src/components/Sidebar/LatestPost index.tsx

100% Statements 4/4
100% Branches 6/6
100% Functions 3/3
100% Lines 4/4

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                                    2x             7x             12x               1x                          
import React from "react";
import { Link, withPrefix } from "gatsby";
import ReactGA from "react-ga4";
import * as style from "./index.module.scss";
 
export type Post = {
  node: {
    frontmatter: {
      url: string;
      slug: string;
      title: string;
    };
    fields: {
      slug: string;
    };
  };
};
 
const LatestPost = ({
  posts,
  totalCount,
}: {
  posts: Post[];
  totalCount: number;
}) => (
  <div className={style.latestPost}>
    <p data-testid="latestArticleCount">
      <span className="icon-newspaper-o" />
      &nbsp;Recent posts&nbsp;&nbsp;6&nbsp;/&nbsp;
      {totalCount}
    </p>
    {posts.map(({ node }) => (
      <Link
        to={withPrefix(
          node.frontmatter.url || node.frontmatter.slug || node.fields.slug
        )}
        key={withPrefix(
          node.frontmatter.url || node.frontmatter.slug || node.fields.slug
        )}
        onClick={() =>
          ReactGA.event({
            category: "User",
            action: `Click latest-post item: ${node.fields.slug}`,
          })
        }
      >
        {node.frontmatter.title}
      </Link>
    ))}
  </div>
);
 
export default LatestPost;