import React from 'react'; import { composeStories } from '@storybook/testing-react'; import * as stories from './Avatar.stories'; import { roundedEdgeValue } from './Avatar.styles'; import { render, screen } from '@testing-library/react'; const { AvatarImageDefault, AvatarImageCustom, AvatarLetters, RoundedAvatarImageCustom, RoundedAvatarImageDefault, RoundedAvatarLetters, CustomBackgroundAndBorderRadius, CustomSizeAndFontSize, } = composeStories(stories); const testTextId = 'test-text'; export const testAvatarId = 'test-avatar'; test('Avatar - Default Guy', () => { render(); const element = screen.getByTestId(testAvatarId); expect(element).not.toBeNull(); // It is not rounded const styles = element && getComputedStyle(element); expect(styles?.borderRadius).toBe('0px'); // It is an svg element expect(element?.firstChild?.nodeName).toEqual('svg'); }); test('Avatar - Letters', () => { render(); const element = screen.getByTestId(testAvatarId); expect(element).not.toBeNull(); // It is not rounded const styles = element && getComputedStyle(element); expect(styles?.borderRadius).toBe('0px'); // It has text const avatarText = screen.getByTestId(testTextId); expect(avatarText?.textContent).toEqual('DM'); }); test('Avatar - Custom Image', () => { render(); const element = screen.getByTestId(testAvatarId); expect(element).not.toBeNull(); // It is not rounded const styles = element && getComputedStyle(element); expect(styles?.borderRadius).toBe('0px'); // It has a custom background image expect(styles?.backgroundImage).toBe( 'url(https://nftcoders.com/avatar/avatar-cool.svg)', ); }); test('Avatar - Letters Rounded', () => { render(); const element = screen.getByTestId(testAvatarId); expect(element).not.toBeNull(); // It is rounded const styles = element && getComputedStyle(element); expect(styles?.borderRadius).toBe(roundedEdgeValue); // It has text const avatarText = screen.getByTestId(testTextId); expect(avatarText?.textContent).toEqual('DM'); }); test('Avatar - Default Guy Rounded ', () => { render(); const element = screen.getByTestId(testAvatarId); expect(element).not.toBeNull(); // It is rounded const styles = element && getComputedStyle(element); expect(styles?.borderRadius).toBe(roundedEdgeValue); // It is an svg element expect(element?.firstChild?.nodeName).toEqual('svg'); }); test('Avatar - Custom Image Rounded', () => { render(); const element = screen.getByTestId(testAvatarId); expect(element).not.toBeNull(); // It is rounded const styles = element && getComputedStyle(element); expect(styles?.borderRadius).toBe(roundedEdgeValue); // It has a custom background image expect(styles?.backgroundImage).toBe( 'url(https://academy.moralis.io/wp-content/uploads/2021/12/Illustration4_home.svg)', ); }); test('Avatar - CustomBackgroundAndBorderRadius', () => { render(); const element = screen.getByTestId(testAvatarId); expect(element).not.toBeNull(); // It is rounded with a custom border radius const styles = element && getComputedStyle(element); expect(styles?.borderRadius).toBe( `${CustomBackgroundAndBorderRadius?.args?.borderRadius}px`, ); expect(element).not.toBeNull(); }); test('Avatar - CustomSizeAndFontSize', () => { render(); const element = screen.getByTestId(testAvatarId); expect(element).not.toBeNull(); // It has a custom font size const styles = element && getComputedStyle(element); expect(styles?.fontSize).toBe( `${CustomSizeAndFontSize?.args?.fontSize}px`, ); // It has a custom size expect(styles?.width).toBe(`${CustomSizeAndFontSize?.args?.size}px`); });