@@ -8,7 +8,7 @@ import '@testing-library/jest-dom/extend-expect';
8
8
import { QueryClientProvider } from '@tanstack/react-query' ;
9
9
import { IntlProvider } from '@edx/frontend-platform/i18n' ;
10
10
11
- import { useEnterpriseGroupUuid } from '../data/hooks' ;
11
+ import { useEnterpriseGroupUuid , useEnterpriseGroupMemberships } from '../data/hooks' ;
12
12
import LearnerDetailPage from '../LearnerDetailPage/LearnerDetailPage' ;
13
13
import { ROUTE_NAMES } from '../../EnterpriseApp/data/constants' ;
14
14
import LmsApiService from '../../../data/services/LmsApiService' ;
@@ -24,6 +24,18 @@ const TEST_GROUP = {
24
24
groupType : 'flex' ,
25
25
} ;
26
26
27
+ const TEST_GROUPS = [
28
+ {
29
+ groupUuid : TEST_GROUP . uuid ,
30
+ groupName : TEST_GROUP . name ,
31
+ recentAction : 'Accepted: March 10, 2025' ,
32
+ } , {
33
+ groupUuid : '6721' ,
34
+ groupName : 'Another Group' ,
35
+ recentAction : 'Removed: March 17, 2025' ,
36
+ } ,
37
+ ] ;
38
+
27
39
const TEST_ENTERPRISE_USER = {
28
40
data : {
29
41
results : [ {
@@ -59,6 +71,7 @@ jest.mock('react-router-dom', () => ({
59
71
60
72
jest . mock ( '../data/hooks' , ( ) => ( {
61
73
...jest . requireActual ( '../data/hooks' ) ,
74
+ useEnterpriseGroupMemberships : jest . fn ( ) ,
62
75
useEnterpriseGroupUuid : jest . fn ( ) ,
63
76
} ) ) ;
64
77
@@ -84,6 +97,13 @@ const LearnerDetailPageWrapper = ({
84
97
describe ( 'LearnerDetailPage' , ( ) => {
85
98
beforeEach ( ( ) => {
86
99
useEnterpriseGroupUuid . mockReturnValue ( { data : TEST_GROUP } ) ;
100
+ useEnterpriseGroupMemberships . mockReturnValue ( {
101
+ data : {
102
+ data : {
103
+ results : TEST_GROUPS ,
104
+ } ,
105
+ } ,
106
+ } ) ;
87
107
LmsApiService . fetchEnterpriseCustomerMembers . mockResolvedValue ( TEST_ENTERPRISE_USER ) ;
88
108
} ) ;
89
109
it ( 'renders breadcrumb from people management page' , async ( ) => {
@@ -105,9 +125,9 @@ describe('LearnerDetailPage', () => {
105
125
} ) ;
106
126
render ( < LearnerDetailPageWrapper /> ) ;
107
127
const expectedLink = `/${ ENTERPRISE_SLUG } /admin/${ ROUTE_NAMES . peopleManagement } /${ TEST_GROUP . uuid } ` ;
108
- const groupDetailBreadcrumb = screen . getByText ( TEST_GROUP . name ) ;
109
- expect ( groupDetailBreadcrumb ) . toBeInTheDocument ( ) ;
110
- expect ( groupDetailBreadcrumb ) . toHaveAttribute ( 'href' , expectedLink ) ;
128
+ const groupDetailBreadcrumbs = screen . getAllByText ( TEST_GROUP . name ) ;
129
+ expect ( groupDetailBreadcrumbs ) . toHaveLength ( 2 ) ;
130
+ expect ( groupDetailBreadcrumbs [ 0 ] ) . toHaveAttribute ( 'href' , expectedLink ) ;
111
131
} ) ;
112
132
it ( 'renders learner detail card' , async ( ) => {
113
133
useParams . mockReturnValue ( {
@@ -120,4 +140,22 @@ describe('LearnerDetailPage', () => {
120
140
expect ( screen . getByText ( '[email protected] ' ) ) . toBeInTheDocument ( ) ;
121
141
expect ( screen . getByText ( 'Joined on Jun 30, 2023' ) ) . toBeInTheDocument ( ) ;
122
142
} ) ;
143
+ it ( 'renders groups section' , async ( ) => {
144
+ useParams . mockReturnValue ( {
145
+ enterpriseSlug : ENTERPRISE_SLUG ,
146
+ learnerId : LMS_USER_ID ,
147
+ } ) ;
148
+ render ( < LearnerDetailPageWrapper /> ) ;
149
+ await waitFor ( ( ) => {
150
+ expect ( screen . getByText ( 'Groups' ) ) . toBeInTheDocument ( ) ;
151
+ } ) ;
152
+ const firstGroupLink = screen . getByText ( TEST_GROUP . name ) ;
153
+ expect ( firstGroupLink ) . toBeInTheDocument ( ) ;
154
+ expect ( firstGroupLink ) . toHaveAttribute ( 'href' , '/test-slug/admin/people-management/1276' ) ;
155
+ const secondGroupLink = screen . getByText ( 'Another Group' ) ;
156
+ expect ( secondGroupLink ) . toBeInTheDocument ( ) ;
157
+ expect ( secondGroupLink ) . toHaveAttribute ( 'href' , '/test-slug/admin/people-management/6721' ) ;
158
+ expect ( screen . getByText ( 'Accepted: March 10, 2025' ) . toBeInTheDocument ) ;
159
+ expect ( screen . getByText ( 'Removed: March 17, 2025' ) . toBeInTheDocument ) ;
160
+ } ) ;
123
161
} ) ;
0 commit comments