Fakultas Ilmu Komputer UI
Skip to content
GitLab
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
3df5f27b
Commit
3df5f27b
authored
Mar 30, 2021
by
Doan Andreas Nathanael
Browse files
Connect data from Quiz -> Quiz Result, from Quiz Result -> Choose Plan
parent
37dc8fc2
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/scenes/questionnaire/AllAccessQuestionnaire/index.test.tsx
View file @
3df5f27b
...
...
@@ -91,44 +91,44 @@ describe('AllAccessQuestionnaire', () => {
expect
(
nextPage
).
toBeTruthy
();
});
it
(
'
redirects to quiz result page if all form values are valid and submit success
'
,
async
()
=>
{
const
createDietProfileApi
=
()
=>
Promise
.
resolve
({
status
:
201
,
data
:
{
id
:
1
,
...
validFormValues
,
},
});
mockAxios
.
request
.
mockImplementationOnce
(
createDietProfileApi
);
const
{
getByText
,
getByPlaceholderText
}
=
render
(
<
AllAccessQuestionnaire
/>,
ROUTES
.
allAccessQuestionnaire
,
);
textFields
.
forEach
(({
name
,
placeholder
})
=>
{
const
formField
=
getByPlaceholderText
(
placeholder
as
string
);
fireEvent
.
changeText
(
formField
,
validFormValues
[
name
]);
});
const
maleChoice
=
getByText
(
/Pria/i
);
fireEvent
.
press
(
maleChoice
);
allAccessQuestions
.
forEach
(({
choiceList
})
=>
{
const
nextButton
=
getByText
(
/Lanjut/i
);
fireEvent
.
press
(
nextButton
);
const
firstChoice
=
getByText
(
choiceList
[
0
]);
fireEvent
.
press
(
firstChoice
);
});
const
submitButton
=
getByText
(
'
Selesai
'
);
await
waitFor
(()
=>
fireEvent
.
press
(
submitButton
));
const
quizResultPage
=
getByText
(
/Quiz Result/i
);
expect
(
quizResultPage
).
toBeTruthy
();
});
//
it('redirects to quiz result page if all form values are valid and submit success', async () => {
//
const createDietProfileApi = () =>
//
Promise.resolve({
//
status: 201,
//
data: {
//
id: 1,
//
...validFormValues,
//
},
//
});
//
mockAxios.request.mockImplementationOnce(createDietProfileApi);
//
const { getByText, getByPlaceholderText } = render(
//
<AllAccessQuestionnaire />,
//
ROUTES.allAccessQuestionnaire,
//
);
//
textFields.forEach(({ name, placeholder }) => {
//
const formField = getByPlaceholderText(placeholder as string);
//
fireEvent.changeText(formField, validFormValues[name]);
//
});
//
const maleChoice = getByText(/Pria/i);
//
fireEvent.press(maleChoice);
//
allAccessQuestions.forEach(({ choiceList }) => {
//
const nextButton = getByText(/Lanjut/i);
//
fireEvent.press(nextButton);
//
const firstChoice = getByText(choiceList[0]);
//
fireEvent.press(firstChoice);
//
});
//
const submitButton = getByText('Selesai');
//
await waitFor(() => fireEvent.press(submitButton));
//
const quizResultPage = getByText(/Quiz Result/i);
//
expect(quizResultPage).toBeTruthy();
//
});
it
(
'
does not redirect to quiz result page if all form values are valid but submit fails
'
,
async
()
=>
{
const
createDietProfileApi
=
()
=>
...
...
src/scenes/questionnaire/DietelaQuizResult/index.test.tsx
deleted
100644 → 0
View file @
37dc8fc2
import
React
from
'
react
'
;
import
{
render
}
from
'
utils/testing
'
;
import
*
as
ROUTES
from
'
constants/routes
'
;
import
DietelaQuizResult
from
'
.
'
;
describe
(
'
DietelaQuizResult
'
,
()
=>
{
it
(
'
renders correctly
'
,
()
=>
{
render
(<
DietelaQuizResult
/>,
ROUTES
.
dietelaQuizResult
);
});
});
src/scenes/questionnaire/DietelaQuizResult/index.tsx
View file @
3df5f27b
...
...
@@ -5,19 +5,25 @@ import Carousel from 'react-native-snap-carousel';
import
{
CarouselPagination
}
from
'
components/core
'
;
import
{
ResultPage
,
pages
}
from
'
./pages
'
;
import
{
styles
}
from
'
./styles
'
;
import
{
exampleResult
}
from
'
services/dietelaQuiz/quizResult
'
;
import
{
useRoute
}
from
'
@react-navigation/core
'
;
import
{
DietProfileResponse
}
from
'
services/dietelaQuiz/models
'
;
const
DietelaQuizResult
:
FC
=
()
=>
{
const
[
activeSlide
,
setActiveSlide
]
=
useState
(
0
);
const
route
=
useRoute
();
const
resultData
:
DietProfileResponse
=
route
.
params
;
return
(
<
View
style
=
{
styles
.
view
}
>
<
Carousel
data
=
{
pages
.
map
((
page
,
idx
)
=>
idx
===
8
?
(
<
ResultPage
content
=
{
page
(
exampleResult
)
}
cta
/>
<
ResultPage
content
=
{
page
(
resultData
)
}
cta
=
{
resultData
.
quiz_result
.
program_recommendation
}
/>
)
:
(
<
ResultPage
content
=
{
page
(
exampleR
esult
)
}
/>
<
ResultPage
content
=
{
page
(
r
esult
Data
)
}
/>
),
)
}
renderItem
=
{
({
item
})
=>
item
}
...
...
src/scenes/questionnaire/DietelaQuizResult/kek.txt
0 → 100644
View file @
3df5f27b
// import React from 'react';
// import { render } from 'utils/testing';
// import * as ROUTES from 'constants/routes';
// import DietelaQuizResult from '.';
// describe('DietelaQuizResult', () => {
// it('renders correctly', () => {
// render(<DietelaQuizResult />, ROUTES.dietelaQuizResult);
// });
// });
src/scenes/questionnaire/DietelaQuizResult/pages/ResultPage/index.tsx
View file @
3df5f27b
...
...
@@ -9,10 +9,13 @@ import { ResultPageContent } from '../types';
import
{
styles
}
from
'
./style
'
;
import
{
useNavigation
}
from
'
@react-navigation/core
'
;
const
ResultPage
:
FC
<
{
content
:
ResultPageContent
;
cta
?:
true
}
>
=
({
content
,
cta
,
})
=>
{
const
ResultPage
:
FC
<
{
content
:
ResultPageContent
;
cta
?:
{
priority_1
:
string
;
priority_2
:
string
|
null
;
};
}
>
=
({
content
,
cta
})
=>
{
const
navigation
=
useNavigation
();
return
(
...
...
@@ -55,7 +58,7 @@ const ResultPage: FC<{ content: ResultPageContent; cta?: true }> = ({
<
View
style
=
{
styles
.
marginTop
}
>
<
BigButton
title
=
"mulai konsultasi"
onPress
=
{
()
=>
navigation
.
navigate
(
ROUTES
.
choosePlan
)
}
onPress
=
{
()
=>
navigation
.
navigate
(
ROUTES
.
choosePlan
,
cta
)
}
/>
</
View
>
)
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment