Skip to content

Commit be67929

Browse files
committed
creating unit tests for blogs component
1 parent c272f2c commit be67929

File tree

2 files changed

+87
-1
lines changed

2 files changed

+87
-1
lines changed

www/__tests__/Blogs.test.tsx

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import { render, screen } from '@testing-library/react';
2+
import '@testing-library/jest-dom/extend-expect';
3+
import Blogs from '../src/pages/components/Blogs';
4+
5+
const posts = [
6+
{
7+
title: 'Our Legendary Article here',
8+
href: '#',
9+
category: { name: 'Greatness', href: '#' },
10+
description:
11+
'Reactime v17, we have come a long way from beta. Now introducing full Context API support and CustomHooks support: thereby allowing developers to better visualize the states and ... ',
12+
date: 'Dec 14, 2022',
13+
datetime: '2022-12-14',
14+
imageUrl:
15+
'https://images.unsplash.com/photo-1496128858413-b36217c2ce36?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1679&q=80',
16+
readingTime: '6 min',
17+
author: {
18+
name: 'James Nghiem',
19+
href: '#',
20+
imageUrl:
21+
'https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80',
22+
},
23+
},
24+
{
25+
title: 'Time-Traveling Through React State',
26+
href: 'https://rxlina.medium.com/time-traveling-through-react-state-with-reactime-9-0-371dbdc99319',
27+
category: { name: 'React', href: 'https://medium.com/tag/react' },
28+
description:
29+
'Reactime is a Chrome extension and time-travel debugger for React that allows developers to record, track, and visualize state changes. Reactime leverages React’s core reconciliation... ',
30+
date: 'Oct 7, 2021',
31+
datetime: '2020-10-07',
32+
imageUrl:
33+
'https://images.unsplash.com/photo-1547586696-ea22b4d4235d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1679&q=80',
34+
readingTime: '4 min',
35+
author: {
36+
name: 'Lina Shin',
37+
href: 'https://rxlina.medium.com/',
38+
imageUrl:
39+
'https://media-exp1.licdn.com/dms/image/C5603AQHQGFvRHt25WQ/profile-displayphoto-shrink_200_200/0/1623865299399?e=1676505600&v=beta&t=yDqgIaJOhO3oOWLROIH9rHPBHdVzDSV3VlB2axWqXr4',
40+
},
41+
},
42+
{
43+
title: 'What time is it? Reactime!',
44+
href: 'https://medium.com/@robbytiptontol/inter-route-time-travel-with-reactime-d84cd55ec73b',
45+
category: { name: 'React Devtools', href: 'https://medium.com/tag/react-devtools' },
46+
description: 'Reactime is a debugging tool that lets developers take snapshots of an application\’s state data as well as time-travel through these snapshots. The snapshots display React...',
47+
date: 'Jun 16, 2022',
48+
datetime: '2022-06-16',
49+
imageUrl:
50+
'https://images.unsplash.com/photo-1492724441997-5dc865305da7?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1679&q=80',
51+
readingTime: '9 min',
52+
author: {
53+
name: 'Robby Tipton',
54+
href: 'https://medium.com/@robbytiptontol',
55+
imageUrl:
56+
'https://miro.medium.com/fit/c/96/96/1*pi-RH2LRvsZA9vLZTvY2mg.jpeg',
57+
},
58+
},
59+
]
60+
61+
describe('Blog component test ', () => {
62+
beforeEach(() => {
63+
render (<Blogs />)
64+
})
65+
66+
it ('the title appears on the page', () => {
67+
expect(screen.getByText(/From the Blog/i)).toBeInTheDocument()
68+
expect(screen.getByText(/See the blogs from the most recent updates and to the past years!/i)).toBeInTheDocument()
69+
});
70+
71+
it ('displays the correct information for each blog post', () => {
72+
const blogs = screen.getAllByTestId('blog')
73+
blogs.forEach((blog, index) => {
74+
console.debug(blog)
75+
expect(blog).toHaveProperty('title', blog.title);
76+
// expect(blog).toHaveProperty('description', blog.description);
77+
// expect(blog).toHaveProperty('description', blog.);
78+
// expect(blog).toHaveProperty('category.name', blog.title);
79+
// expect(blog).toHaveProperty('author.name', blog.title);
80+
// expect(blog).toHaveProperty('date', blog.date);
81+
// expect(blog).toHaveProperty('readingTime', blog.title);
82+
})
83+
84+
});
85+
86+
});

www/src/pages/components/Blogs.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export default function Blogs() {
6969
</div>
7070
<div className="mx-auto mt-12 grid max-w-lg gap-5 lg:max-w-none lg:grid-cols-3">
7171
{posts.map((post) => (
72-
<div key={post.title} className="flex flex-col overflow-hidden rounded-lg shadow-lg">
72+
<div key={post.title} data-testid='blog' className="flex flex-col overflow-hidden rounded-lg shadow-lg">
7373
<div className="flex-shrink-0">
7474
<img className="h-48 w-full object-cover" src={post.imageUrl} alt="" />
7575
</div>

0 commit comments

Comments
 (0)