/* eslint-disable jest/no-conditional-expect */
import { render } from '@testing-library/react'
import Card from './card'
import Configuration, {
Font,
Pattern,
Theme
} from '../../../common/types/configType'
test('Card #1 renders', () => {
const config: Configuration = {
font: Font.inter,
logo: '',
name: {
value: 'project_name',
state: true
},
pattern: Pattern.brickWall,
theme: Theme.light
}
const { container } = render()
const cardWrapper = container.firstElementChild! as HTMLDivElement
expect(cardWrapper).toMatchSnapshot()
expect(cardWrapper).toBeTruthy()
expect(cardWrapper.classList.contains('card-wrapper')).toBe(true)
expect(cardWrapper.style.fontFamily).toStrictEqual(config.font)
expect(
cardWrapper.classList.contains(`theme-${config.theme.toLowerCase()}`)
).toBe(true)
expect(cardWrapper.querySelectorAll('.card-logo-wrapper img').length).toBe(1)
expect(
cardWrapper.querySelectorAll(
'.card-logo-wrapper img'
)?.[0]?.alt
).toBe('Logo')
expect(cardWrapper.querySelectorAll('.card-logo-divider').length).toBe(0)
expect(
cardWrapper.querySelector('.card-name-name')?.textContent
).toStrictEqual(config.name?.value)
expect(cardWrapper.querySelector('.card-description-wrapper')).toBeFalsy()
expect(cardWrapper.querySelectorAll('.card-badges-wrapper').length).toBe(0)
})
test('Card #2 renders', () => {
const config: Configuration = {
font: Font.koHo,
logo: 'data:image/gif;base64,R0lGODlhAQABAAAAACw=',
name: {
value: 'project_name',
state: true
},
pattern: Pattern.brickWall,
theme: Theme.dark,
description: {
value: 'TEST DESCRIPTION',
state: true
},
owner: {
value: 'owner',
state: true
},
language: {
value: 'JavaScript',
state: true
},
language2: {
value: 'TypeScript',
state: true
},
stargazers: {
value: 1,
state: true
},
forks: {
value: 2,
state: true
},
issues: {
value: 3,
state: true
},
pulls: {
value: 4,
state: true
}
}
const { container } = render()
const cardWrapper = container.firstElementChild! as HTMLDivElement
expect(cardWrapper).toMatchSnapshot()
expect(cardWrapper).toBeTruthy()
expect(cardWrapper.classList.contains('card-wrapper')).toBe(true)
expect(cardWrapper.style.fontFamily).toStrictEqual(config.font)
expect(
cardWrapper.classList.contains(`theme-${config.theme.toLowerCase()}`)
).toBe(true)
expect(
cardWrapper.querySelector('.card-name-name')?.textContent
).toStrictEqual(config.name?.value)
expect(cardWrapper.querySelectorAll('.card-logo-wrapper img').length).toBe(2)
expect(
cardWrapper.querySelectorAll(
'.card-logo-wrapper img'
)?.[0].src
).toBe(config.logo)
expect(
cardWrapper.querySelectorAll(
'.card-logo-wrapper img'
)?.[0]?.alt
).toBe('Logo')
expect(cardWrapper.querySelectorAll('.card-logo-divider').length).toBe(1)
expect(
cardWrapper.querySelectorAll(
'.card-logo-wrapper img'
)?.[1]?.alt
).toBe('JavaScript')
expect(
cardWrapper.querySelector('.card-description-wrapper')?.textContent
).toStrictEqual(config.description?.value)
expect(cardWrapper.querySelectorAll('.card-badges-wrapper').length).toBe(1)
expect(cardWrapper.querySelectorAll('.card-badges-wrapper > *').length).toBe(
4
)
expect(
cardWrapper.querySelectorAll('.card-badges-wrapper > *')[0]
?.firstElementChild?.textContent
).toStrictEqual('stars')
expect(
cardWrapper.querySelectorAll('.card-badges-wrapper > *')[0]
?.lastElementChild?.textContent
).toStrictEqual(`${config.stargazers?.value}`)
expect(
cardWrapper.querySelectorAll('.card-badges-wrapper > *')[1]
?.firstElementChild?.textContent
).toStrictEqual('forks')
expect(
cardWrapper.querySelectorAll('.card-badges-wrapper > *')[1]
?.lastElementChild?.textContent
).toStrictEqual(`${config.forks?.value}`)
expect(
cardWrapper.querySelectorAll('.card-badges-wrapper > *')[2]
?.firstElementChild?.textContent
).toStrictEqual('issues')
expect(
cardWrapper.querySelectorAll('.card-badges-wrapper > *')[2]
?.lastElementChild?.textContent
).toStrictEqual(`${config.issues?.value}`)
expect(
cardWrapper.querySelectorAll('.card-badges-wrapper > *')[3]
?.firstElementChild?.textContent
).toStrictEqual('pulls')
expect(
cardWrapper.querySelectorAll('.card-badges-wrapper > *')[3]
?.lastElementChild?.textContent
).toStrictEqual(`${config.pulls?.value}`)
})