Fakultas Ilmu Komputer UI
Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
ppl-fasilkom-ui
2021
Kelas D
PT Gizi Sehat - Dietela
Dietela Mobile
Commits
32da273e
Commit
32da273e
authored
Jun 29, 2021
by
Wulan Mantiri
Browse files
Merge branch 'final-fix' into 'staging'
Fix returning users and navigation logic See merge request
!84
parents
3b8d062e
d21f9c3d
Pipeline
#84201
passed with stages
in 31 minutes and 35 seconds
Changes
22
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
src/app/schema.ts
View file @
32da273e
...
@@ -5,6 +5,8 @@ import {
...
@@ -5,6 +5,8 @@ import {
adminNavigation
,
adminNavigation
,
unpaidClientNavigation
,
unpaidClientNavigation
,
paidClientNavigation
,
paidClientNavigation
,
cartsExpireClientNavigation
,
takeQuizClientNavigation
,
}
from
'
constants/navigation
'
;
}
from
'
constants/navigation
'
;
import
{
UserRole
,
AuthUserResponse
}
from
'
services/auth/models
'
;
import
{
UserRole
,
AuthUserResponse
}
from
'
services/auth/models
'
;
import
{
TransactionStatus
}
from
'
services/payment/models
'
;
import
{
TransactionStatus
}
from
'
services/payment/models
'
;
...
@@ -18,20 +20,28 @@ export const getNavigation = (
...
@@ -18,20 +20,28 @@ export const getNavigation = (
if
(
!
user
.
cart_id
)
{
if
(
!
user
.
cart_id
)
{
return
{
return
{
initialRoute
:
ROUTES
.
allAccessQuestionnaire
,
initialRoute
:
ROUTES
.
allAccessQuestionnaire
,
navigation
:
unpaid
ClientNavigation
,
navigation
:
takeQuiz
ClientNavigation
,
};
};
}
}
if
([
TransactionStatus
.
UNPAID
,
null
].
includes
(
user
.
transaction_status
))
{
if
(
user
.
all_carts_are_expired
)
{
return
{
return
{
initialRoute
:
ROUTES
.
checkout
,
initialRoute
:
ROUTES
.
allCartsExpired
,
navigation
:
unpaid
ClientNavigation
,
navigation
:
cartsExpire
ClientNavigation
,
};
};
}
else
{
}
if
(
user
.
transaction_status
===
TransactionStatus
.
UNPAID
)
{
return
{
return
{
initialRoute
:
ROUTES
.
c
lientTabNavigation
,
initialRoute
:
ROUTES
.
c
heckout
,
navigation
:
paidClientNavigation
,
navigation
:
un
paidClientNavigation
,
};
};
}
}
return
{
initialRoute
:
ROUTES
.
clientTabNavigation
,
navigation
:
paidClientNavigation
,
};
}
}
if
(
user
.
role
===
UserRole
.
NUTRITIONIST
)
{
if
(
user
.
role
===
UserRole
.
NUTRITIONIST
)
{
...
...
src/constants/navigation.ts
View file @
32da273e
...
@@ -24,6 +24,7 @@ import {
...
@@ -24,6 +24,7 @@ import {
LoginChoosePlan
,
LoginChoosePlan
,
ClientNavigation
,
ClientNavigation
,
ChooseWeekForNutritionist
,
ChooseWeekForNutritionist
,
AllCartsExpiredPage
,
}
from
'
scenes
'
;
}
from
'
scenes
'
;
import
{
FC
}
from
'
react
'
;
import
{
FC
}
from
'
react
'
;
import
DietReportForNutritionist
from
'
scenes/nutritionist/DietReportForNutritionist
'
;
import
DietReportForNutritionist
from
'
scenes/nutritionist/DietReportForNutritionist
'
;
...
@@ -90,6 +91,62 @@ export const publicNavigation: NavRoute[] = [
...
@@ -90,6 +91,62 @@ export const publicNavigation: NavRoute[] = [
},
},
];
];
export
const
takeQuizClientNavigation
:
NavRoute
[]
=
[
...
navigation
,
{
name
:
ROUTES
.
allCartsExpired
,
component
:
AllCartsExpiredPage
,
header
:
'
Dietela
'
,
},
{
name
:
ROUTES
.
checkout
,
component
:
Checkout
,
header
:
'
Checkout
'
,
},
{
name
:
ROUTES
.
payment
,
component
:
PaymentWebView
,
header
:
'
Pembayaran
'
,
},
{
name
:
ROUTES
.
paymentResult
,
component
:
PaymentResult
,
},
{
name
:
ROUTES
.
clientTabNavigation
,
component
:
ClientNavigation
,
header
:
'
Dietela
'
,
},
];
export
const
cartsExpireClientNavigation
:
NavRoute
[]
=
[
{
name
:
ROUTES
.
allCartsExpired
,
component
:
AllCartsExpiredPage
,
header
:
'
Dietela
'
,
},
{
name
:
ROUTES
.
checkout
,
component
:
Checkout
,
header
:
'
Checkout
'
,
},
{
name
:
ROUTES
.
payment
,
component
:
PaymentWebView
,
header
:
'
Pembayaran
'
,
},
{
name
:
ROUTES
.
paymentResult
,
component
:
PaymentResult
,
},
...
navigation
,
{
name
:
ROUTES
.
clientTabNavigation
,
component
:
ClientNavigation
,
header
:
'
Dietela
'
,
},
];
export
const
unpaidClientNavigation
:
NavRoute
[]
=
[
export
const
unpaidClientNavigation
:
NavRoute
[]
=
[
{
{
name
:
ROUTES
.
checkout
,
name
:
ROUTES
.
checkout
,
...
...
src/constants/routes.ts
View file @
32da273e
export
const
initial
=
'
initial-page
'
;
export
const
initial
=
'
initial-page
'
;
export
const
allCartsExpired
=
'
all-carts-expired
'
;
export
const
comingSoon
=
'
*
'
;
export
const
comingSoon
=
'
*
'
;
const
questionnaire
=
'
questionnaire
'
;
const
questionnaire
=
'
questionnaire
'
;
...
...
src/hooks/useDownloadFiles/index.ts
View file @
32da273e
import
{
PermissionsAndroid
}
from
'
react-native
'
;
import
{
PermissionsAndroid
}
from
'
react-native
'
;
import
RNFetchBlob
from
'
rn-fetch-blob
'
;
import
RNFetchBlob
from
'
rn-fetch-blob
'
;
import
{
FileType
}
from
'
./schema
'
;
import
{
FileType
}
from
'
./schema
'
;
import
Toast
from
'
react-native-toast-message
'
;
const
useDownloadFiles
=
(
const
useDownloadFiles
=
(
url
=
''
,
url
=
''
,
...
@@ -22,13 +23,19 @@ const useDownloadFiles = (
...
@@ -22,13 +23,19 @@ const useDownloadFiles = (
return
;
return
;
}
}
Toast
.
show
({
type
:
'
success
'
,
text1
:
`Mengunduh
${
fileName
}
...`
,
text2
:
'
Notifikasi akan muncul setelah unduh selesai. Mohon menunggu.
'
,
});
const
dirs
=
RNFetchBlob
.
fs
.
dirs
;
const
dirs
=
RNFetchBlob
.
fs
.
dirs
;
RNFetchBlob
.
config
({
RNFetchBlob
.
config
({
addAndroidDownloads
:
{
addAndroidDownloads
:
{
useDownloadManager
:
true
,
useDownloadManager
:
true
,
notification
:
true
,
notification
:
true
,
mime
:
fileType
,
mime
:
fileType
,
title
:
'
Mengunduh
'
+
title
+
'
...
'
,
title
:
title
||
fileName
,
mediaScannable
:
true
,
mediaScannable
:
true
,
path
:
dirs
.
DownloadDir
+
`/
${
fileName
}
`
,
path
:
dirs
.
DownloadDir
+
`/
${
fileName
}
`
,
},
},
...
...
src/provider/UserContext/index.ts
View file @
32da273e
...
@@ -31,6 +31,7 @@ export const initialUser = {
...
@@ -31,6 +31,7 @@ export const initialUser = {
is_finished_onboarding
:
false
,
is_finished_onboarding
:
false
,
cart_id
:
null
,
cart_id
:
null
,
nutritionist
:
null
,
nutritionist
:
null
,
all_carts_are_expired
:
false
,
};
};
export
const
UserContext
=
createContext
<
iUserContext
>
({
export
const
UserContext
=
createContext
<
iUserContext
>
({
...
...
src/scenes/cart/ChoosePlan/index.tsx
View file @
32da273e
...
@@ -19,6 +19,7 @@ import { setCache, getCache } from 'utils/cache';
...
@@ -19,6 +19,7 @@ import { setCache, getCache } from 'utils/cache';
import
{
PricingList
}
from
'
./components
'
;
import
{
PricingList
}
from
'
./components
'
;
import
{
initialValues
,
getRecommendedPrograms
}
from
'
./schema
'
;
import
{
initialValues
,
getRecommendedPrograms
}
from
'
./schema
'
;
import
{
UserContext
}
from
'
provider
'
;
import
{
UserContext
}
from
'
provider
'
;
import
{
TransactionStatus
}
from
'
services/payment/models
'
;
const
ChoosePlan
:
FC
=
()
=>
{
const
ChoosePlan
:
FC
=
()
=>
{
const
navigation
=
useNavigation
();
const
navigation
=
useNavigation
();
...
@@ -47,6 +48,7 @@ const ChoosePlan: FC = () => {
...
@@ -47,6 +48,7 @@ const ChoosePlan: FC = () => {
setUser
({
setUser
({
...
user
,
...
user
,
cart_id
:
cartId
,
cart_id
:
cartId
,
transaction_status
:
TransactionStatus
.
UNPAID
,
});
});
navigation
.
navigate
(
ROUTES
.
checkout
);
navigation
.
navigate
(
ROUTES
.
checkout
);
}
else
{
}
else
{
...
...
src/scenes/chat/ChatForClient/styles.ts
View file @
32da273e
import
{
StyleSheet
}
from
'
react-native
'
;
import
{
StyleSheet
}
from
'
react-native
'
;
import
{
colors
,
typography
}
from
'
styles
'
;
import
{
colors
,
typography
,
layoutStyles
}
from
'
styles
'
;
export
const
styles
=
StyleSheet
.
create
({
export
const
styles
=
StyleSheet
.
create
({
container
:
{
container
:
{
flex
:
1
,
flex
:
1
,
justifyContent
:
'
center
'
,
justifyContent
:
'
center
'
,
alignItems
:
'
center
'
,
alignItems
:
'
center
'
,
...
layoutStyles
,
paddingHorizontal
:
30
,
},
},
nutritionist
:
{
nutritionist
:
{
textAlign
:
'
center
'
,
textAlign
:
'
center
'
,
...
...
src/scenes/common/AllCartsExpiredPage/index.test.tsx
0 → 100644
View file @
32da273e
import
React
from
'
react
'
;
import
{
render
,
fireEvent
}
from
'
@testing-library/react-native
'
;
import
AllCartsExpiredPage
from
'
.
'
;
const
mockedNavigate
=
jest
.
fn
();
jest
.
mock
(
'
@react-navigation/native
'
,
()
=>
{
return
{
useNavigation
:
()
=>
({
navigate
:
mockedNavigate
,
}),
};
});
describe
(
'
AllCartsExpiredPage
'
,
()
=>
{
it
(
'
has call-to-action button that navigates to Dietela Quiz
'
,
()
=>
{
const
{
getByText
,
queryByText
}
=
render
(<
AllCartsExpiredPage
/>);
expect
(
queryByText
(
/konsultasi lagi/i
)).
toBeTruthy
();
fireEvent
.
press
(
getByText
(
/konsultasi lagi/i
));
expect
(
mockedNavigate
).
toHaveBeenCalled
();
});
});
src/scenes/common/AllCartsExpiredPage/index.tsx
0 → 100644
View file @
32da273e
import
React
,
{
FC
}
from
'
react
'
;
import
{
View
}
from
'
react-native
'
;
import
{
useNavigation
}
from
'
@react-navigation/native
'
;
import
*
as
ROUTES
from
'
constants/routes
'
;
import
{
EmptyDataPage
,
BigButton
}
from
'
components/core
'
;
import
{
styles
}
from
'
./styles
'
;
const
AllCartsExpiredPage
:
FC
=
()
=>
{
const
navigation
=
useNavigation
();
return
(
<
View
style
=
{
styles
.
center
}
>
<
EmptyDataPage
text
=
"Program diet Anda telah selesai!"
/>
<
BigButton
title
=
"konsultasi lagi"
onPress
=
{
()
=>
navigation
.
navigate
(
ROUTES
.
allAccessQuestionnaire
)
}
/>
</
View
>
);
};
export
default
AllCartsExpiredPage
;
src/scenes/common/AllCartsExpiredPage/styles.ts
0 → 100644
View file @
32da273e
import
{
StyleSheet
}
from
'
react-native
'
;
import
{
typography
,
layoutStyles
}
from
'
styles
'
;
export
const
styles
=
StyleSheet
.
create
({
center
:
{
flex
:
1
,
...
layoutStyles
,
},
noRecomText
:
{
...
typography
.
headingMedium
,
textAlign
:
'
center
'
,
marginTop
:
10
,
},
});
src/scenes/index.ts
View file @
32da273e
...
@@ -5,6 +5,7 @@ export { default as ManualRegistrationPage } from './auth/ManualRegistrationPage
...
@@ -5,6 +5,7 @@ export { default as ManualRegistrationPage } from './auth/ManualRegistrationPage
export
{
default
as
InitialPage
}
from
'
./common/InitialPage
'
;
export
{
default
as
InitialPage
}
from
'
./common/InitialPage
'
;
export
{
default
as
ComingSoonPage
}
from
'
./common/ComingSoonPage
'
;
export
{
default
as
ComingSoonPage
}
from
'
./common/ComingSoonPage
'
;
export
{
default
as
AllCartsExpiredPage
}
from
'
./common/AllCartsExpiredPage
'
;
export
{
default
as
AllAccessQuestionnaire
}
from
'
./questionnaire/AllAccessQuestionnaire
'
;
export
{
default
as
AllAccessQuestionnaire
}
from
'
./questionnaire/AllAccessQuestionnaire
'
;
export
{
default
as
DietelaQuizResult
}
from
'
./questionnaire/DietelaQuizResult
'
;
export
{
default
as
DietelaQuizResult
}
from
'
./questionnaire/DietelaQuizResult
'
;
...
...
src/scenes/navigation/ClientNavigation/index.test.tsx
View file @
32da273e
...
@@ -6,13 +6,43 @@ import ClientNavigation, {
...
@@ -6,13 +6,43 @@ import ClientNavigation, {
ExtQuestionnaireStackScreen
,
ExtQuestionnaireStackScreen
,
}
from
'
.
'
;
}
from
'
.
'
;
import
{
NavigationContainer
}
from
'
@react-navigation/native
'
;
import
{
NavigationContainer
}
from
'
@react-navigation/native
'
;
import
{
mockUserContext
}
from
'
mocks/userContext
'
;
import
{
UserContext
}
from
'
provider
'
;
describe
(
'
ClientNavigation
'
,
()
=>
{
describe
(
'
ClientNavigation
'
,
()
=>
{
it
(
'
renders correctly
'
,
()
=>
{
it
(
'
provides tab if user has finished onboarding
'
,
()
=>
{
const
userProviderValues
=
{
...
mockUserContext
,
user
:
{
...
mockUserContext
.
user
,
is_finished_onboarding
:
true
,
},
};
render
(
render
(
<
NavigationContainer
>
<
UserContext
.
Provider
value
=
{
userProviderValues
}
>
<
ClientNavigation
/>
<
NavigationContainer
>
</
NavigationContainer
>,
<
ClientNavigation
/>
</
NavigationContainer
>
</
UserContext
.
Provider
>,
);
});
it
(
'
does not provide tab if user has not finished onboarding
'
,
()
=>
{
const
userProviderValues
=
{
...
mockUserContext
,
user
:
{
...
mockUserContext
.
user
,
is_finished_onboarding
:
false
,
},
};
render
(
<
UserContext
.
Provider
value
=
{
userProviderValues
}
>
<
NavigationContainer
>
<
ClientNavigation
/>
</
NavigationContainer
>
</
UserContext
.
Provider
>,
);
);
});
});
...
...
src/scenes/navigation/ClientNavigation/index.tsx
View file @
32da273e
import
React
,
{
FC
}
from
'
react
'
;
import
React
,
{
FC
,
useContext
}
from
'
react
'
;
import
{
createStackNavigator
}
from
'
@react-navigation/stack
'
;
import
{
createStackNavigator
}
from
'
@react-navigation/stack
'
;
import
{
createBottomTabNavigator
}
from
'
@react-navigation/bottom-tabs
'
;
import
{
createBottomTabNavigator
}
from
'
@react-navigation/bottom-tabs
'
;
import
{
Icon
}
from
'
react-native-elements
'
;
import
{
Icon
}
from
'
react-native-elements
'
;
...
@@ -21,6 +21,7 @@ import {
...
@@ -21,6 +21,7 @@ import {
import
ReadOnlyWeeklyReport
from
'
scenes/report/ReadOnlyWeeklyReport
'
;
import
ReadOnlyWeeklyReport
from
'
scenes/report/ReadOnlyWeeklyReport
'
;
import
ChooseWeekForClient
from
'
scenes/report/ChooseWeekForClient
'
;
import
ChooseWeekForClient
from
'
scenes/report/ChooseWeekForClient
'
;
import
ChatForClient
from
'
scenes/chat/ChatForClient
'
;
import
ChatForClient
from
'
scenes/chat/ChatForClient
'
;
import
{
UserContext
}
from
'
provider
'
;
interface
NavRoute
<
T
=
any
>
{
interface
NavRoute
<
T
=
any
>
{
name
:
string
;
name
:
string
;
...
@@ -107,6 +108,11 @@ export const WeeklyReportStackScreen: FC = () => (
...
@@ -107,6 +108,11 @@ export const WeeklyReportStackScreen: FC = () => (
const
ClientTab
=
createBottomTabNavigator
();
const
ClientTab
=
createBottomTabNavigator
();
const
ClientNavigation
:
FC
=
()
=>
{
const
ClientNavigation
:
FC
=
()
=>
{
const
{
user
}
=
useContext
(
UserContext
);
if
(
!
user
.
is_finished_onboarding
)
{
return
<
ExtQuestionnaireStackScreen
/>;
}
return
(
return
(
<
ClientTab
.
Navigator
<
ClientTab
.
Navigator
initialRouteName
=
{
ROUTES
.
clientTabProfile
}
initialRouteName
=
{
ROUTES
.
clientTabProfile
}
...
...
src/scenes/questionnaire/ExtendedQuestionnaire/components/ConsentForm/index.test.tsx
View file @
32da273e
...
@@ -3,6 +3,8 @@ import { render } from '@testing-library/react-native';
...
@@ -3,6 +3,8 @@ import { render } from '@testing-library/react-native';
import
ConsentForm
from
'
.
'
;
import
ConsentForm
from
'
.
'
;
import
{
mockDietQuestionnaire
}
from
'
mocks/dietQuestionnaire
'
;
import
{
mockDietQuestionnaire
}
from
'
mocks/dietQuestionnaire
'
;
import
{
mockUserContext
}
from
'
mocks/userContext
'
;
import
{
UserContext
}
from
'
provider
'
;
const
mockedNavigate
=
jest
.
fn
();
const
mockedNavigate
=
jest
.
fn
();
...
@@ -15,7 +17,15 @@ jest.mock('@react-navigation/native', () => {
...
@@ -15,7 +17,15 @@ jest.mock('@react-navigation/native', () => {
});
});
describe
(
'
ConsentForm
'
,
()
=>
{
describe
(
'
ConsentForm
'
,
()
=>
{
const
userProviderValues
=
{
...
mockUserContext
,
};
it
(
'
renders correctly
'
,
()
=>
{
it
(
'
renders correctly
'
,
()
=>
{
render
(<
ConsentForm
route
=
{
{
params
:
mockDietQuestionnaire
}
}
/>);
render
(
<
UserContext
.
Provider
value
=
{
userProviderValues
}
>
<
ConsentForm
route
=
{
{
params
:
mockDietQuestionnaire
}
}
/>
</
UserContext
.
Provider
>,
);
});
});
});
});
src/scenes/questionnaire/ExtendedQuestionnaire/components/Questionnaire1/index.test.tsx
View file @
32da273e
...
@@ -5,6 +5,8 @@ import axios from 'axios';
...
@@ -5,6 +5,8 @@ import axios from 'axios';
import
Questionnaire1
from
'
.
'
;
import
Questionnaire1
from
'
.
'
;
import
{
mockDietQuestionnaire
}
from
'
mocks/dietQuestionnaire
'
;
import
{
mockDietQuestionnaire
}
from
'
mocks/dietQuestionnaire
'
;
import
{
textFields
}
from
'
constants/questionnaire
'
;
import
{
textFields
}
from
'
constants/questionnaire
'
;
import
{
mockUserContext
}
from
'
mocks/userContext
'
;
import
{
UserContext
}
from
'
provider
'
;
const
mockedNavigate
=
jest
.
fn
();
const
mockedNavigate
=
jest
.
fn
();
...
@@ -27,6 +29,10 @@ describe('Questionnaire1', () => {
...
@@ -27,6 +29,10 @@ describe('Questionnaire1', () => {
waist_size
:
'
765
'
,
waist_size
:
'
765
'
,
};
};
const
userProviderValues
=
{
...
mockUserContext
,
};
it
(
'
does not redirect to extended questionnaire if form values are invalid
'
,
async
()
=>
{
it
(
'
does not redirect to extended questionnaire if form values are invalid
'
,
async
()
=>
{
const
updateDietQuestionnaireApi
=
()
=>
const
updateDietQuestionnaireApi
=
()
=>
Promise
.
resolve
({
Promise
.
resolve
({
...
@@ -36,7 +42,9 @@ describe('Questionnaire1', () => {
...
@@ -36,7 +42,9 @@ describe('Questionnaire1', () => {
mockAxios
.
request
.
mockImplementationOnce
(
updateDietQuestionnaireApi
);
mockAxios
.
request
.
mockImplementationOnce
(
updateDietQuestionnaireApi
);
const
{
getByPlaceholderText
,
getByText
}
=
render
(
const
{
getByPlaceholderText
,
getByText
}
=
render
(
<
Questionnaire1
route
=
{
{
params
:
mockDietQuestionnaire
}
}
/>,
<
UserContext
.
Provider
value
=
{
userProviderValues
}
>
<
Questionnaire1
route
=
{
{
params
:
mockDietQuestionnaire
}
}
/>
</
UserContext
.
Provider
>,
);
);
textFields
.
identity
.
forEach
(({
name
,
placeholder
})
=>
{
textFields
.
identity
.
forEach
(({
name
,
placeholder
})
=>
{
...
...
src/scenes/questionnaire/ExtendedQuestionnaire/components/Questionnaire2/index.test.tsx
View file @
32da273e
...
@@ -3,6 +3,8 @@ import { render } from '@testing-library/react-native';
...
@@ -3,6 +3,8 @@ import { render } from '@testing-library/react-native';
import
Questionnaire2
from
'
.
'
;
import
Questionnaire2
from
'
.
'
;
import
{
mockDietQuestionnaire
}
from
'
mocks/dietQuestionnaire
'
;
import
{
mockDietQuestionnaire
}
from
'
mocks/dietQuestionnaire
'
;
import
{
mockUserContext
}
from
'
mocks/userContext
'
;
import
{
UserContext
}
from
'
provider
'
;
const
mockedNavigate
=
jest
.
fn
();
const
mockedNavigate
=
jest
.
fn
();
...
@@ -15,7 +17,15 @@ jest.mock('@react-navigation/native', () => {
...
@@ -15,7 +17,15 @@ jest.mock('@react-navigation/native', () => {
});
});
describe
(
'
Questionnaire2
'
,
()
=>
{
describe
(
'
Questionnaire2
'
,
()
=>
{
const
userProviderValues
=
{
...
mockUserContext
,
};
it
(
'
renders correctly
'
,
()
=>
{
it
(
'
renders correctly
'
,
()
=>
{
render
(<
Questionnaire2
route
=
{
{
params
:
mockDietQuestionnaire
}
}
/>);
render
(
<
UserContext
.
Provider
value
=
{
userProviderValues
}
>
<
Questionnaire2
route
=
{
{
params
:
mockDietQuestionnaire
}
}
/>
</
UserContext
.
Provider
>,
);
});
});
});
});
src/scenes/questionnaire/ExtendedQuestionnaire/components/Questionnaire3/index.test.tsx
View file @
32da273e
...
@@ -4,6 +4,8 @@ import axios from 'axios';
...
@@ -4,6 +4,8 @@ import axios from 'axios';
import
Questionnaire3
from
'
.
'
;
import
Questionnaire3
from
'
.
'
;
import
{
mockDietQuestionnaire
}
from
'
mocks/dietQuestionnaire
'
;
import
{
mockDietQuestionnaire
}
from
'
mocks/dietQuestionnaire
'
;
import
{
mockUserContext
}
from
'
mocks/userContext
'
;
import
{
UserContext
}
from
'
provider
'
;
const
mockedNavigate
=
jest
.
fn
();
const
mockedNavigate
=
jest
.
fn
();
...
@@ -19,8 +21,16 @@ jest.mock('axios');
...
@@ -19,8 +21,16 @@ jest.mock('axios');
const
mockAxios
=
axios
as
jest
.
Mocked
<
typeof
axios
>
;
const
mockAxios
=
axios
as
jest
.
Mocked
<
typeof
axios
>
;
describe
(
'
Questionnaire3
'
,
()
=>
{
describe
(
'
Questionnaire3
'
,
()
=>
{
const
userProviderValues
=
{
...
mockUserContext
,
};
it
(
'
renders correctly
'
,
()
=>
{
it
(
'
renders correctly
'
,
()
=>
{
render
(<
Questionnaire3
route
=
{
{
params
:
mockDietQuestionnaire
}
}
/>);
render
(
<
UserContext
.
Provider
value
=
{
userProviderValues
}
>
<
Questionnaire3
route
=
{
{
params
:
mockDietQuestionnaire
}
}
/>
</
UserContext
.
Provider
>,
);
});
});