@@ -11,9 +11,10 @@ import {
1111 programInspectorErrorResponse ,
1212} from './data/test/programInspector' ;
1313import ssoRecordsData from '../../users/data/test/ssoRecords' ;
14- import * as ssoApi from '../../users/data/api' ;
14+ import * as ssoAndUserApi from '../../users/data/api' ;
1515import samlProvidersResponseValues from './data/test/samlProviders' ;
1616import verifiedNameHistory from '../../users/data/test/verifiedNameHistory' ;
17+ import UserSummaryData from '../../users/data/test/userSummary' ;
1718
1819const mockedNavigator = jest . fn ( ) ;
1920
@@ -23,7 +24,7 @@ jest.mock('react-router-dom', () => ({
2324} ) ) ;
2425
2526const ProgramEnrollmentsWrapper = ( ) => (
26- < MemoryRouter initialEntries = { [ '/programs?edx_user=&org_key=&external_user_key= ' ] } >
27+ < MemoryRouter initialEntries = { [ '/programs?edx_user_id=123 ' ] } >
2728 < IntlProvider locale = "en" >
2829 < UserMessagesProvider >
2930 < ProgramInspector />
@@ -38,6 +39,7 @@ describe('Program Inspector', () => {
3839 let samlMock ;
3940 let ssoMock ;
4041 let verifiedNameMock ;
42+ let getUserMock ;
4143
4244 const data = {
4345 username : 'verified' ,
@@ -47,14 +49,17 @@ describe('Program Inspector', () => {
4749
4850 beforeEach ( ( ) => {
4951 ssoMock = jest
50- . spyOn ( ssoApi , 'getSsoRecords' )
52+ . spyOn ( ssoAndUserApi , 'getSsoRecords' )
5153 . mockImplementationOnce ( ( ) => Promise . resolve ( ssoRecordsData ) ) ;
5254 samlMock = jest
5355 . spyOn ( api , 'getSAMLProviderList' )
5456 . mockImplementationOnce ( ( ) => Promise . resolve ( samlProvidersResponseValues ) ) ;
5557 verifiedNameMock = jest
56- . spyOn ( ssoApi , 'getVerifiedNameHistory' )
58+ . spyOn ( ssoAndUserApi , 'getVerifiedNameHistory' )
5759 . mockImplementationOnce ( ( ) => Promise . resolve ( verifiedNameHistory ) ) ;
60+ getUserMock = jest
61+ . spyOn ( ssoAndUserApi , 'getUser' )
62+ . mockImplementation ( ( ) => Promise . resolve ( UserSummaryData . userData ) ) ;
5863 jest . clearAllMocks ( ) ;
5964 } ) ;
6065
@@ -68,6 +73,7 @@ describe('Program Inspector', () => {
6873 samlMock . mockReset ( ) ;
6974 ssoMock . mockReset ( ) ;
7075 verifiedNameMock . mockReset ( ) ;
76+ getUserMock . mockReset ( ) ;
7177 } ) ;
7278
7379 it ( 'default render' , async ( ) => {
@@ -78,14 +84,15 @@ describe('Program Inspector', () => {
7884
7985 const usernameInput = wrapper . find ( "input[name='username']" ) ;
8086 const externalKeyInput = wrapper . find ( "input[name='externalKey']" ) ;
81- expect ( usernameInput . prop ( 'defaultValue' ) ) . toEqual ( '' ) ;
82- expect ( externalKeyInput . prop ( 'defaultValue' ) ) . toEqual ( '' ) ;
87+ expect ( usernameInput . prop ( 'defaultValue' ) ) . toEqual ( undefined ) ;
88+ expect ( externalKeyInput . prop ( 'defaultValue' ) ) . toEqual ( undefined ) ;
8389 } ) ;
8490
8591 it ( 'render when username' , async ( ) => {
8692 apiMock = jest
8793 . spyOn ( api , 'getProgramEnrollmentsInspector' )
88- . mockImplementationOnce ( ( ) => Promise . resolve ( programInspectorSuccessResponse ) ) ;
94+ . mockImplementation ( ( ) => Promise . resolve ( programInspectorSuccessResponse ) ) ;
95+
8996 wrapper = mount ( < ProgramEnrollmentsWrapper /> ) ;
9097
9198 wrapper . find ( "input[name='username']" ) . simulate (
@@ -98,9 +105,12 @@ describe('Program Inspector', () => {
98105 ) ;
99106 wrapper . find ( 'button.btn-primary' ) . simulate ( 'click' ) ;
100107
101- expect ( mockedNavigator ) . toHaveBeenCalledWith (
102- `/programs?edx_user=${ data . username } &org_key=${ data . orgKey } &external_user_key=` ,
103- ) ;
108+ await waitFor ( ( ) => {
109+ expect ( mockedNavigator ) . toHaveBeenCalledWith (
110+ `?edx_user_id=${ UserSummaryData . userData . id } ` ,
111+ ) ;
112+ } ) ;
113+
104114 waitFor ( ( ) => {
105115 expect ( wrapper . find ( '.inspector-name-row p.h5' ) . at ( 0 ) . text ( ) ) . toEqual (
106116 'Username' ,
@@ -120,7 +130,7 @@ describe('Program Inspector', () => {
120130 it ( 'render when external_user_key' , async ( ) => {
121131 apiMock = jest
122132 . spyOn ( api , 'getProgramEnrollmentsInspector' )
123- . mockImplementationOnce ( ( ) => Promise . resolve ( programInspectorSuccessResponse ) ) ;
133+ . mockImplementation ( ( ) => Promise . resolve ( programInspectorSuccessResponse ) ) ;
124134 wrapper = mount ( < ProgramEnrollmentsWrapper /> ) ;
125135
126136 wrapper . find (
@@ -137,9 +147,12 @@ describe('Program Inspector', () => {
137147 ) ;
138148 wrapper . find ( 'button.btn-primary' ) . simulate ( 'click' ) ;
139149
140- expect ( mockedNavigator ) . toHaveBeenCalledWith (
141- `/programs?edx_user=&org_key=${ data . orgKey } &external_user_key=${ data . externalKey } ` ,
142- ) ;
150+ await waitFor ( ( ) => {
151+ expect ( mockedNavigator ) . toHaveBeenCalledWith (
152+ `?edx_user_id=${ UserSummaryData . userData . id } ` ,
153+ ) ;
154+ } ) ;
155+
143156 waitFor ( ( ) => {
144157 expect ( wrapper . find ( '.inspector-name-row p.h5' ) . at ( 0 ) . text ( ) ) . toEqual (
145158 'Username' ,
@@ -188,6 +201,37 @@ describe('Program Inspector', () => {
188201 expect ( wrapper . find ( '.inspector-name-row' ) . exists ( ) ) . toBeFalsy ( ) ;
189202 } ) ;
190203
204+ it ( 'render when getUser fails' , async ( ) => {
205+ apiMock = jest
206+ . spyOn ( api , 'getProgramEnrollmentsInspector' )
207+ . mockImplementation ( ( ) => Promise . resolve ( programInspectorSuccessResponse ) ) ;
208+
209+ getUserMock = jest
210+ . spyOn ( ssoAndUserApi , 'getUser' )
211+ . mockImplementation ( ( ) => Promise . reject ( new Error ( 'Error fetching User Info' ) ) ) ;
212+
213+ wrapper = mount ( < ProgramEnrollmentsWrapper /> ) ;
214+
215+ await waitFor ( ( ) => {
216+ wrapper . update ( ) ;
217+ expect ( wrapper . find ( 'Alert' ) . at ( 0 ) . text ( ) ) . toEqual ( 'An error occurred while fetching user id' ) ;
218+ } ) ;
219+
220+ wrapper . find (
221+ "input[name='username']" ,
222+ ) . simulate (
223+ 'change' ,
224+ { target : { value : 'AnonyMouse' } } ,
225+ ) ;
226+ wrapper . find ( 'button.btn-primary' ) . simulate ( 'click' ) ;
227+
228+ await waitFor ( ( ) => {
229+ wrapper . update ( ) ;
230+ expect ( wrapper . find ( 'Alert' ) . at ( 0 ) . text ( ) ) . toEqual ( 'An error occurred while fetching user id' ) ;
231+ expect ( mockedNavigator ) . toHaveBeenCalledTimes ( 2 ) ;
232+ } ) ;
233+ } ) ;
234+
191235 it ( 'check if SSO is present' , async ( ) => {
192236 apiMock = jest
193237 . spyOn ( api , 'getProgramEnrollmentsInspector' )
0 commit comments