1- import { describe , it , expect , vi } from "vitest" ;
1+ import { describe , it , expect , vi , beforeEach , afterEach } from "vitest" ;
22import { render , screen , fireEvent } from "@solidjs/testing-library" ;
33import RoleBadge from "../../src/app/components/shared/RoleBadge" ;
44import ReviewBadge from "../../src/app/components/shared/ReviewBadge" ;
@@ -67,6 +67,26 @@ describe("SizeBadge", () => {
6767 screen . getByText ( "1 file" ) ;
6868 } ) ;
6969
70+ it ( "renders S badge for small-medium changes" , ( ) => {
71+ render ( ( ) => < SizeBadge additions = { 15 } deletions = { 14 } changedFiles = { 2 } /> ) ;
72+ screen . getByText ( "S" ) ;
73+ } ) ;
74+
75+ it ( "renders M badge for medium changes" , ( ) => {
76+ render ( ( ) => < SizeBadge additions = { 15 } deletions = { 15 } changedFiles = { 3 } /> ) ;
77+ screen . getByText ( "M" ) ;
78+ } ) ;
79+
80+ it ( "renders L badge for large changes" , ( ) => {
81+ render ( ( ) => < SizeBadge additions = { 200 } deletions = { 100 } changedFiles = { 10 } /> ) ;
82+ screen . getByText ( "L" ) ;
83+ } ) ;
84+
85+ it ( "renders XL badge for extra-large changes" , ( ) => {
86+ render ( ( ) => < SizeBadge additions = { 400 } deletions = { 200 } changedFiles = { 20 } /> ) ;
87+ screen . getByText ( "XL" ) ;
88+ } ) ;
89+
7090 it ( "renders XXL badge for large changes" , ( ) => {
7191 render ( ( ) => < SizeBadge additions = { 800 } deletions = { 500 } changedFiles = { 42 } /> ) ;
7292 screen . getByText ( "XXL" ) ;
@@ -85,18 +105,47 @@ describe("SizeBadge", () => {
85105 screen . getByText ( "XS" ) ;
86106 } ) ;
87107
88- it ( "shows tooltip with size description on hover" , ( ) => {
89- vi . useFakeTimers ( ) ;
90- const { container } = render ( ( ) => (
91- < SizeBadge additions = { 3 } deletions = { 2 } changedFiles = { 1 } />
92- ) ) ;
93- const trigger = container . querySelector ( "span.inline-flex" ) ;
94- expect ( trigger ) . not . toBeNull ( ) ;
95- fireEvent . pointerEnter ( trigger ! ) ;
96- vi . advanceTimersByTime ( 300 ) ;
97- expect ( document . body . textContent ) . toContain ( "XS: <10 lines changed" ) ;
98- fireEvent . pointerLeave ( trigger ! ) ;
99- vi . advanceTimersByTime ( 500 ) ;
100- vi . useRealTimers ( ) ;
108+ describe ( "tooltips" , ( ) => {
109+ beforeEach ( ( ) => vi . useFakeTimers ( ) ) ;
110+ afterEach ( ( ) => vi . useRealTimers ( ) ) ;
111+
112+ it ( "shows tooltip with size description on hover" , ( ) => {
113+ const { container } = render ( ( ) => (
114+ < SizeBadge additions = { 3 } deletions = { 2 } changedFiles = { 1 } />
115+ ) ) ;
116+ const trigger = container . querySelector ( "span.inline-flex" ) ;
117+ expect ( trigger ) . not . toBeNull ( ) ;
118+ fireEvent . pointerEnter ( trigger ! ) ;
119+ vi . advanceTimersByTime ( 300 ) ;
120+ expect ( document . body . textContent ) . toContain ( "XS: <10 lines changed" ) ;
121+ fireEvent . pointerLeave ( trigger ! ) ;
122+ vi . advanceTimersByTime ( 500 ) ;
123+ } ) ;
124+
125+ it ( "shows tooltip with S size description on hover" , ( ) => {
126+ const { container } = render ( ( ) => (
127+ < SizeBadge additions = { 10 } deletions = { 5 } changedFiles = { 2 } />
128+ ) ) ;
129+ const trigger = container . querySelector ( "span.inline-flex" ) ;
130+ expect ( trigger ) . not . toBeNull ( ) ;
131+ fireEvent . pointerEnter ( trigger ! ) ;
132+ vi . advanceTimersByTime ( 300 ) ;
133+ expect ( document . body . textContent ) . toContain ( "S: 10–29 lines changed" ) ;
134+ fireEvent . pointerLeave ( trigger ! ) ;
135+ vi . advanceTimersByTime ( 500 ) ;
136+ } ) ;
137+
138+ it ( "shows tooltip with XXL size description on hover" , ( ) => {
139+ const { container } = render ( ( ) => (
140+ < SizeBadge additions = { 800 } deletions = { 500 } changedFiles = { 42 } />
141+ ) ) ;
142+ const trigger = container . querySelector ( "span.inline-flex" ) ;
143+ expect ( trigger ) . not . toBeNull ( ) ;
144+ fireEvent . pointerEnter ( trigger ! ) ;
145+ vi . advanceTimersByTime ( 300 ) ;
146+ expect ( document . body . textContent ) . toContain ( "XXL: 1000+ lines changed" ) ;
147+ fireEvent . pointerLeave ( trigger ! ) ;
148+ vi . advanceTimersByTime ( 500 ) ;
149+ } ) ;
101150 } ) ;
102151} ) ;
0 commit comments