• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

akvo / nmis-mobile / 5723893709

01 Aug 2023 07:32AM UTC coverage: 80.065% (+7.3%) from 72.774%
5723893709

push

github

wayangalihpratama
[#32] Fix prettier

636 of 840 branches covered (75.71%)

Branch coverage included in aggregate %.

1 of 1 new or added line in 1 file covered. (100.0%)

1332 of 1618 relevant lines covered (82.32%)

16.87 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

92.11
/app/src/form/support/QuestionGroupList.js
1
import React, { useMemo } from 'react';
2
import { View } from 'react-native';
3
import { Text, Divider } from '@rneui/themed';
4
import QuestionGroupListItem from './QuestionGroupListItem';
5
import { validateDependency, modifyDependency } from '../lib';
6
import { styles } from '../styles';
7
import { FormState } from '../../store';
8

9
export const checkCompleteQuestionGroup = (form, values) => {
18✔
10
  return form.question_group.map((questionGroup) => {
11✔
11
    const filteredQuestions = questionGroup.question.filter((q) => q.required);
99✔
12
    return (
44✔
13
      filteredQuestions
14
        .map((question) => {
15
          if (question?.dependency) {
66✔
16
            const repeat = 0;
22✔
17
            const modifiedDependency = modifyDependency(questionGroup, question, repeat);
22✔
18
            const unmatches = modifiedDependency
22✔
19
              .map((x) => {
20
                return validateDependency(x, values?.[x.id]);
22✔
21
              })
22
              .filter((x) => x === false);
22✔
23
            if (unmatches.length) {
22✔
24
              return true;
18✔
25
            }
26
          }
27
          if (values?.[question.id]) {
48✔
28
            return true;
11✔
29
          }
30
          return false;
37✔
31
        })
32
        .filter((x) => x).length === filteredQuestions.length
66✔
33
    );
34
  });
35
};
36

37
const QuestionGroupList = ({
18✔
38
  form,
39
  values = {},
2✔
40
  dataPointNameText = null,
2✔
41
  activeQuestionGroup,
42
  setActiveQuestionGroup,
43
  setShowQuestionGroupList,
44
}) => {
45
  const visitedQuestionGroup = FormState.useState((s) => s.visitedQuestionGroup);
6✔
46

47
  const completedQuestionGroup = useMemo(() => {
3✔
48
    return checkCompleteQuestionGroup(form, values);
3✔
49
  });
50

51
  const handleOnPress = (questionGroupId) => {
3✔
52
    setActiveQuestionGroup(questionGroupId);
×
53
    setShowQuestionGroupList(false);
×
54
  };
55

56
  return (
3✔
57
    <View style={styles.questionGroupListContainer}>
58
      <Text style={styles.questionGroupListFormTitle} testID="form-name">
59
        {form.name}
60
      </Text>
61
      <Divider style={styles.divider} />
62
      {dataPointNameText && (
4✔
63
        <>
64
          <Text style={styles.questionGroupListDataPointName} testID="datapoint-name">
65
            {dataPointNameText}
66
          </Text>
67
          <Divider style={styles.divider} />
68
        </>
69
      )}
70
      {form.question_group.map((questionGroup, qx) => (
71
        <QuestionGroupListItem
12✔
72
          key={questionGroup.id}
73
          name={questionGroup.name}
74
          active={activeQuestionGroup === questionGroup.id}
75
          completedQuestionGroup={
76
            completedQuestionGroup[qx] && visitedQuestionGroup.includes(questionGroup.id)
16✔
77
          }
78
          onPress={() => handleOnPress(questionGroup.id)}
×
79
        />
80
      ))}
81
    </View>
82
  );
83
};
84

85
export default QuestionGroupList;
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc