|
1 | 1 | import { type FormContextProps } from '../provider/form-provider'; |
2 | 2 | import { type FormField } from '../types'; |
3 | | -import { findObsByFormField, hasPreviousObsValueChanged, ObsAdapter } from './obs-adapter'; |
| 3 | +import { hasPreviousObsValueChanged, findObsByFormField, ObsAdapter } from './obs-adapter'; |
4 | 4 |
|
5 | 5 | const formContext = { |
6 | 6 | methods: null, |
@@ -944,280 +944,3 @@ describe('findObsByFormField', () => { |
944 | 944 | expect(matchedObs[0]).toBe(obsList[3]); |
945 | 945 | }); |
946 | 946 | }); |
947 | | - |
948 | | -describe('ObsAdapter - handling nested obsGroups', () => { |
949 | | - const createNestedFields = (): FormField => ({ |
950 | | - label: 'Parent obsGroup', |
951 | | - type: 'obsGroup', |
952 | | - required: false, |
953 | | - id: 'parentObsgroup', |
954 | | - questionOptions: { |
955 | | - rendering: 'group', |
956 | | - concept: '163770AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
957 | | - }, |
958 | | - questions: [ |
959 | | - { |
960 | | - label: 'Health Center', |
961 | | - type: 'obs', |
962 | | - required: false, |
963 | | - id: 'healthCenter', |
964 | | - questionOptions: { |
965 | | - rendering: 'select', |
966 | | - concept: '1745AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
967 | | - answers: [ |
968 | | - { |
969 | | - concept: '1560AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
970 | | - label: 'Family member', |
971 | | - }, |
972 | | - { |
973 | | - concept: '1588AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
974 | | - label: 'Health clinic/post', |
975 | | - }, |
976 | | - { |
977 | | - concept: '5622AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
978 | | - label: 'Other', |
979 | | - }, |
980 | | - ], |
981 | | - }, |
982 | | - }, |
983 | | - { |
984 | | - label: 'Nested obsGroup', |
985 | | - type: 'obsGroup', |
986 | | - required: false, |
987 | | - id: 'nestedObsgroup', |
988 | | - questionOptions: { |
989 | | - rendering: 'group', |
990 | | - concept: '3f824eeb-8452-4df0-b346-6ed056cbc5b9', |
991 | | - }, |
992 | | - questions: [ |
993 | | - { |
994 | | - label: 'Comment', |
995 | | - type: 'obs', |
996 | | - required: false, |
997 | | - id: 'comment', |
998 | | - questionOptions: { |
999 | | - rendering: 'textarea', |
1000 | | - concept: '161011AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1001 | | - }, |
1002 | | - }, |
1003 | | - { |
1004 | | - label: 'Other Diagnoses', |
1005 | | - type: 'obs', |
1006 | | - required: false, |
1007 | | - id: 'otherDiagnoses', |
1008 | | - questionOptions: { |
1009 | | - rendering: 'select', |
1010 | | - concept: '159947AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1011 | | - answers: [ |
1012 | | - { |
1013 | | - concept: '159394AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1014 | | - label: 'Diagnosis certainty', |
1015 | | - }, |
1016 | | - ], |
1017 | | - }, |
1018 | | - }, |
1019 | | - ], |
1020 | | - }, |
1021 | | - ], |
1022 | | - }); |
1023 | | - |
1024 | | - const createNestedObs = () => ({ |
1025 | | - uuid: 'encounter-uuid', |
1026 | | - obs: [ |
1027 | | - { |
1028 | | - uuid: 'parent-group-uuid', |
1029 | | - concept: { |
1030 | | - uuid: '163770AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1031 | | - }, |
1032 | | - groupMembers: [ |
1033 | | - { |
1034 | | - uuid: 'health-center-uuid', |
1035 | | - concept: { |
1036 | | - uuid: '1745AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1037 | | - }, |
1038 | | - value: { |
1039 | | - uuid: '1588AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1040 | | - }, |
1041 | | - formFieldPath: 'rfe-forms-healthCenter', |
1042 | | - }, |
1043 | | - { |
1044 | | - uuid: 'nested-group-uuid', |
1045 | | - concept: { |
1046 | | - uuid: '3f824eeb-8452-4df0-b346-6ed056cbc5b9', |
1047 | | - }, |
1048 | | - groupMembers: [ |
1049 | | - { |
1050 | | - uuid: 'comment-uuid', |
1051 | | - concept: { |
1052 | | - uuid: '161011AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1053 | | - }, |
1054 | | - value: 'Test comment for nested group', |
1055 | | - formFieldPath: 'rfe-forms-comment', |
1056 | | - }, |
1057 | | - { |
1058 | | - uuid: 'diagnosis-uuid', |
1059 | | - concept: { |
1060 | | - uuid: '159947AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1061 | | - }, |
1062 | | - value: { |
1063 | | - uuid: '159394AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1064 | | - }, |
1065 | | - formFieldPath: 'rfe-forms-otherDiagnoses', |
1066 | | - }, |
1067 | | - ], |
1068 | | - }, |
1069 | | - ], |
1070 | | - }, |
1071 | | - ], |
1072 | | - }); |
1073 | | - |
1074 | | - beforeEach(() => { |
1075 | | - formContext.domainObjectValue = createNestedObs(); |
1076 | | - ObsAdapter.tearDown(); |
1077 | | - }); |
1078 | | - |
1079 | | - it('should get initial values from nested obs groups', async () => { |
1080 | | - const fields = createNestedFields(); |
1081 | | - |
1082 | | - const healthCenterField = fields.questions[0]; |
1083 | | - const healthCenterValue = await ObsAdapter.getInitialValue( |
1084 | | - healthCenterField, |
1085 | | - formContext.domainObjectValue, |
1086 | | - formContext, |
1087 | | - ); |
1088 | | - expect(healthCenterValue).toBe('1588AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); |
1089 | | - |
1090 | | - const commentField = fields.questions[1].questions[0]; |
1091 | | - const commentValue = await ObsAdapter.getInitialValue(commentField, formContext.domainObjectValue, formContext); |
1092 | | - expect(commentValue).toBe('Test comment for nested group'); |
1093 | | - |
1094 | | - const diagnosisField = fields.questions[1].questions[1]; |
1095 | | - const diagnosisValue = await ObsAdapter.getInitialValue(diagnosisField, formContext.domainObjectValue, formContext); |
1096 | | - expect(diagnosisValue).toBe('159394AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); |
1097 | | - }); |
1098 | | - |
1099 | | - it('should transform values in nested groups', () => { |
1100 | | - const fields = createNestedFields(); |
1101 | | - |
1102 | | - const healthCenterField = fields.questions[0]; |
1103 | | - const healthCenterObs = ObsAdapter.transformFieldValue( |
1104 | | - healthCenterField, |
1105 | | - '1560AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1106 | | - formContext, |
1107 | | - ); |
1108 | | - expect(healthCenterObs).toEqual({ |
1109 | | - concept: '1745AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1110 | | - formFieldNamespace: 'rfe-forms', |
1111 | | - formFieldPath: 'rfe-forms-healthCenter', |
1112 | | - value: '1560AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1113 | | - }); |
1114 | | - |
1115 | | - const commentField = fields.questions[1].questions[0]; |
1116 | | - const commentObs = ObsAdapter.transformFieldValue(commentField, 'New test comment', formContext); |
1117 | | - expect(commentObs).toEqual({ |
1118 | | - concept: '161011AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1119 | | - formFieldNamespace: 'rfe-forms', |
1120 | | - formFieldPath: 'rfe-forms-comment', |
1121 | | - value: 'New test comment', |
1122 | | - }); |
1123 | | - }); |
1124 | | - |
1125 | | - it('should edit existing values in nested groups', () => { |
1126 | | - formContext.sessionMode = 'edit'; |
1127 | | - const fields = createNestedFields(); |
1128 | | - |
1129 | | - const healthCenterField = fields.questions[0]; |
1130 | | - healthCenterField.meta = { |
1131 | | - previousValue: { |
1132 | | - uuid: 'health-center-uuid', |
1133 | | - value: { |
1134 | | - uuid: '1588AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1135 | | - }, |
1136 | | - }, |
1137 | | - }; |
1138 | | - |
1139 | | - const healthCenterObs = ObsAdapter.transformFieldValue( |
1140 | | - healthCenterField, |
1141 | | - '5622AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1142 | | - formContext, |
1143 | | - ); |
1144 | | - |
1145 | | - expect(healthCenterObs).toEqual({ |
1146 | | - uuid: 'health-center-uuid', |
1147 | | - formFieldNamespace: 'rfe-forms', |
1148 | | - formFieldPath: 'rfe-forms-healthCenter', |
1149 | | - value: '5622AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1150 | | - }); |
1151 | | - |
1152 | | - const commentField = fields.questions[1].questions[0]; |
1153 | | - commentField.meta = { |
1154 | | - previousValue: { |
1155 | | - uuid: 'comment-uuid', |
1156 | | - value: 'Test comment for nested group', |
1157 | | - }, |
1158 | | - }; |
1159 | | - |
1160 | | - const commentObs = ObsAdapter.transformFieldValue(commentField, 'Updated comment text', formContext); |
1161 | | - |
1162 | | - expect(commentObs).toEqual({ |
1163 | | - uuid: 'comment-uuid', |
1164 | | - formFieldNamespace: 'rfe-forms', |
1165 | | - formFieldPath: 'rfe-forms-comment', |
1166 | | - value: 'Updated comment text', |
1167 | | - }); |
1168 | | - }); |
1169 | | - |
1170 | | - it('should void deleted values in nested groups', () => { |
1171 | | - formContext.sessionMode = 'edit'; |
1172 | | - const fields = createNestedFields(); |
1173 | | - |
1174 | | - const commentField = fields.questions[1].questions[0]; |
1175 | | - commentField.meta = { |
1176 | | - previousValue: { |
1177 | | - uuid: 'comment-uuid', |
1178 | | - value: 'Test comment for nested group', |
1179 | | - }, |
1180 | | - }; |
1181 | | - |
1182 | | - ObsAdapter.transformFieldValue(commentField, '', formContext); |
1183 | | - expect(commentField.meta.submission.voidedValue).toEqual({ |
1184 | | - uuid: 'comment-uuid', |
1185 | | - voided: true, |
1186 | | - }); |
1187 | | - expect(commentField.meta.submission.newValue).toBe(null); |
1188 | | - |
1189 | | - const diagnosisField = fields.questions[1].questions[1]; |
1190 | | - diagnosisField.meta = { |
1191 | | - previousValue: { |
1192 | | - uuid: 'diagnosis-uuid', |
1193 | | - value: { |
1194 | | - uuid: '159394AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', |
1195 | | - }, |
1196 | | - }, |
1197 | | - }; |
1198 | | - |
1199 | | - ObsAdapter.transformFieldValue(diagnosisField, null, formContext); |
1200 | | - expect(diagnosisField.meta.submission.voidedValue).toEqual({ |
1201 | | - uuid: 'diagnosis-uuid', |
1202 | | - voided: true, |
1203 | | - }); |
1204 | | - expect(diagnosisField.meta.submission.newValue).toBe(null); |
1205 | | - }); |
1206 | | - |
1207 | | - it('should handle empty nested groups', async () => { |
1208 | | - const emptyEncounter = { |
1209 | | - uuid: 'encounter-uuid', |
1210 | | - obs: [], |
1211 | | - }; |
1212 | | - |
1213 | | - const fields = createNestedFields(); |
1214 | | - |
1215 | | - const healthCenterField = fields.questions[0]; |
1216 | | - const healthCenterValue = await ObsAdapter.getInitialValue(healthCenterField, emptyEncounter, formContext); |
1217 | | - expect(healthCenterValue).toBe(''); |
1218 | | - |
1219 | | - const commentField = fields.questions[1].questions[0]; |
1220 | | - const commentValue = await ObsAdapter.getInitialValue(commentField, emptyEncounter, formContext); |
1221 | | - expect(commentValue).toBe(''); |
1222 | | - }); |
1223 | | -}); |
0 commit comments