@@ -28,58 +28,53 @@ const mockProfile: Profile = {
2828
2929describe ( 'ProfileCard' , ( ) => {
3030 describe ( 'Basic Rendering' , ( ) => {
31- it ( 'renders profile information correctly' , ( ) => {
31+ it ( 'renders profile name correctly' , ( ) => {
3232 render ( < ProfileCard profile = { mockProfile } /> ) ;
33-
3433 expect ( screen . getByText ( 'Test Chef' ) ) . toBeInTheDocument ( ) ;
34+ } ) ;
35+
36+ it ( 'renders profile title correctly' , ( ) => {
37+ render ( < ProfileCard profile = { mockProfile } /> ) ;
3538 expect ( screen . getByText ( 'Executive Chef' ) ) . toBeInTheDocument ( ) ;
39+ } ) ;
40+
41+ it ( 'renders profile bio correctly' , ( ) => {
42+ render ( < ProfileCard profile = { mockProfile } /> ) ;
3643 expect ( screen . getByText ( 'A passionate chef with years of experience' ) ) . toBeInTheDocument ( ) ;
44+ } ) ;
45+
46+ it ( 'renders profile location correctly' , ( ) => {
47+ render ( < ProfileCard profile = { mockProfile } /> ) ;
3748 expect ( screen . getByText ( 'New York, USA' ) ) . toBeInTheDocument ( ) ;
3849 } ) ;
3950
4051 it ( 'renders avatar with correct alt text' , ( ) => {
4152 render ( < ProfileCard profile = { mockProfile } /> ) ;
42-
4353 const avatar = screen . getByRole ( 'img' , { name : 'Test Chef' } ) ;
4454 expect ( avatar ) . toBeInTheDocument ( ) ;
4555 expect ( avatar ) . toHaveAttribute ( 'src' , 'https://example.com/avatar.jpg' ) ;
4656 } ) ;
47-
48- it ( 'renders fallback initials when avatar fails to load' , ( ) => {
49- const profileWithoutAvatar = { ...mockProfile , avatar : '' } ;
50- render ( < ProfileCard profile = { profileWithoutAvatar } /> ) ;
51-
52- expect ( screen . getByText ( 'TC' ) ) . toBeInTheDocument ( ) ;
53- } ) ;
5457 } ) ;
5558
5659 describe ( 'Variants' , ( ) => {
57- it ( 'renders compact variant correctly ' , ( ) => {
60+ it ( 'renders compact variant' , ( ) => {
5861 render ( < ProfileCard profile = { mockProfile } variant = "compact" /> ) ;
59-
6062 expect ( screen . getByText ( 'Test Chef' ) ) . toBeInTheDocument ( ) ;
61- expect ( screen . getByText ( 'Executive Chef' ) ) . toBeInTheDocument ( ) ;
6263 } ) ;
6364
64- it ( 'renders standard variant correctly ' , ( ) => {
65+ it ( 'renders standard variant' , ( ) => {
6566 render ( < ProfileCard profile = { mockProfile } variant = "standard" /> ) ;
66-
6767 expect ( screen . getByText ( 'Test Chef' ) ) . toBeInTheDocument ( ) ;
68- expect ( screen . getByText ( 'Executive Chef' ) ) . toBeInTheDocument ( ) ;
69- expect ( screen . getByText ( 'A passionate chef with years of experience' ) ) . toBeInTheDocument ( ) ;
7068 } ) ;
7169
72- it ( 'renders detailed variant correctly ' , ( ) => {
70+ it ( 'renders detailed variant' , ( ) => {
7371 render ( < ProfileCard profile = { mockProfile } variant = "detailed" /> ) ;
74-
7572 expect ( screen . getByText ( 'Test Chef' ) ) . toBeInTheDocument ( ) ;
76- expect ( screen . getByText ( 'Executive Chef' ) ) . toBeInTheDocument ( ) ;
77- expect ( screen . getByText ( 'A passionate chef with years of experience' ) ) . toBeInTheDocument ( ) ;
7873 } ) ;
7974 } ) ;
8075
8176 describe ( 'Follow Functionality' , ( ) => {
82- it ( 'shows follow button when showFollowButton is true ' , ( ) => {
77+ it ( 'shows follow button when enabled ' , ( ) => {
8378 const onFollow = vi . fn ( ) ;
8479 render (
8580 < ProfileCard
@@ -88,22 +83,20 @@ describe('ProfileCard', () => {
8883 onFollow = { onFollow }
8984 />
9085 ) ;
91-
9286 expect ( screen . getByRole ( 'button' ) ) . toBeInTheDocument ( ) ;
9387 } ) ;
9488
95- it ( 'does not show follow button when showFollowButton is false ' , ( ) => {
89+ it ( 'hides follow button when disabled ' , ( ) => {
9690 render (
9791 < ProfileCard
9892 profile = { mockProfile }
9993 showFollowButton = { false }
10094 />
10195 ) ;
102-
10396 expect ( screen . queryByRole ( 'button' ) ) . not . toBeInTheDocument ( ) ;
10497 } ) ;
10598
106- it ( 'calls onFollow when follow button is clicked' , ( ) => {
99+ it ( 'calls onFollow callback when follow button clicked' , ( ) => {
107100 const onFollow = vi . fn ( ) ;
108101 render (
109102 < ProfileCard
@@ -116,27 +109,23 @@ describe('ProfileCard', () => {
116109
117110 const followButton = screen . getByRole ( 'button' ) ;
118111 fireEvent . click ( followButton ) ;
119-
120112 expect ( onFollow ) . toHaveBeenCalledWith ( 'test-chef' ) ;
121113 } ) ;
122114 } ) ;
123115
124116 describe ( 'Statistics Display' , ( ) => {
125- it ( 'displays follower count correctly ' , ( ) => {
117+ it ( 'displays follower count' , ( ) => {
126118 render ( < ProfileCard profile = { mockProfile } /> ) ;
127-
128119 expect ( screen . getByText ( '1,000' ) ) . toBeInTheDocument ( ) ;
129120 } ) ;
130121
131- it ( 'displays recipe count correctly ' , ( ) => {
122+ it ( 'displays recipe count' , ( ) => {
132123 render ( < ProfileCard profile = { mockProfile } /> ) ;
133-
134124 expect ( screen . getByText ( '50' ) ) . toBeInTheDocument ( ) ;
135125 } ) ;
136126
137- it ( 'displays rating correctly ' , ( ) => {
127+ it ( 'displays rating' , ( ) => {
138128 render ( < ProfileCard profile = { mockProfile } /> ) ;
139-
140129 expect ( screen . getByText ( '4.5' ) ) . toBeInTheDocument ( ) ;
141130 } ) ;
142131 } ) ;
@@ -145,38 +134,15 @@ describe('ProfileCard', () => {
145134 it ( 'handles profile without location' , ( ) => {
146135 const profileWithoutLocation = { ...mockProfile , location : undefined } ;
147136 render ( < ProfileCard profile = { profileWithoutLocation } /> ) ;
148-
149137 expect ( screen . getByText ( 'Test Chef' ) ) . toBeInTheDocument ( ) ;
150138 expect ( screen . queryByText ( 'New York, USA' ) ) . not . toBeInTheDocument ( ) ;
151139 } ) ;
152140
153141 it ( 'handles profile without title' , ( ) => {
154142 const profileWithoutTitle = { ...mockProfile , title : undefined } ;
155143 render ( < ProfileCard profile = { profileWithoutTitle } /> ) ;
156-
157144 expect ( screen . getByText ( 'Test Chef' ) ) . toBeInTheDocument ( ) ;
158145 expect ( screen . queryByText ( 'Executive Chef' ) ) . not . toBeInTheDocument ( ) ;
159146 } ) ;
160-
161- it ( 'handles profile without social links' , ( ) => {
162- const profileWithoutSocial = { ...mockProfile , socialLinks : undefined } ;
163- render ( < ProfileCard profile = { profileWithoutSocial } variant = "detailed" /> ) ;
164-
165- expect ( screen . getByText ( 'Test Chef' ) ) . toBeInTheDocument ( ) ;
166- } ) ;
167-
168- it ( 'handles empty badges array' , ( ) => {
169- const profileWithoutBadges = { ...mockProfile , badges : [ ] } ;
170- render ( < ProfileCard profile = { profileWithoutBadges } variant = "detailed" /> ) ;
171-
172- expect ( screen . getByText ( 'Test Chef' ) ) . toBeInTheDocument ( ) ;
173- } ) ;
174-
175- it ( 'handles empty specialties array' , ( ) => {
176- const profileWithoutSpecialties = { ...mockProfile , specialties : [ ] } ;
177- render ( < ProfileCard profile = { profileWithoutSpecialties } variant = "detailed" /> ) ;
178-
179- expect ( screen . getByText ( 'Test Chef' ) ) . toBeInTheDocument ( ) ;
180- } ) ;
181147 } ) ;
182148} ) ;
0 commit comments