3232import de .symeda .sormas .api .caze .CaseClassification ;
3333import de .symeda .sormas .api .caze .CaseDataDto ;
3434import de .symeda .sormas .api .caze .InvestigationStatus ;
35+ import de .symeda .sormas .api .contact .ContactDto ;
3536import de .symeda .sormas .api .customizablefield .CustomizableFieldContext ;
3637import de .symeda .sormas .api .customizablefield .CustomizableFieldGroup ;
3738import de .symeda .sormas .api .customizablefield .CustomizableFieldMetadataDto ;
@@ -69,12 +70,7 @@ void testCaseRelatedCustomizableFields(CustomizableFieldContext context) {
6970 CustomizableFieldMetadataFacade metadataFacade = getBean (CustomizableFieldMetadataFacadeEjb .CustomizableFieldMetadataFacadeEjbLocal .class );
7071 CustomizableFieldValueFacade valueFacade = getBean (CustomizableFieldValueFacadeEjb .CustomizableFieldValueFacadeEjbLocal .class );
7172
72- CustomizableFieldMetadataDto metadata = new CustomizableFieldMetadataDto ();
73- metadata .setName ("customField_" + context .name ().toLowerCase ());
74- metadata .setFieldType (CustomizableFieldType .TEXT );
75- metadata .setContextClass (context );
76- metadata .setUiGroup (CustomizableFieldGroup .getGroupsForContext (context ).stream ().findFirst ().orElse (null ));
77- metadata .setUiLinePosition (1 );
73+ CustomizableFieldMetadataDto metadata = buildMetadata (context , "customField_" + context .name ().toLowerCase ());
7874
7975 CustomizableFieldMetadataDto savedMetadata = metadataFacade .save (metadata );
8076 assertThat (savedMetadata .getUuid (), is (notNullValue ()));
@@ -114,6 +110,79 @@ void testCaseRelatedCustomizableFields(CustomizableFieldContext context) {
114110 assertThat (values .get (savedMetadata ).getValue (), is (equalTo ("custom-value" )));
115111 }
116112
113+ @ ParameterizedTest
114+ @ EnumSource (value = CustomizableFieldContext .class ,
115+ names = {
116+ "CASE" ,
117+ "EPIDATA" ,
118+ "EXPOSURE" })
119+ void testCaseRelatedDefaultValuesArePersistedOnCreate (CustomizableFieldContext context ) {
120+ CustomizableFieldMetadataFacade metadataFacade = getBean (CustomizableFieldMetadataFacadeEjb .CustomizableFieldMetadataFacadeEjbLocal .class );
121+ CustomizableFieldValueFacade valueFacade = getBean (CustomizableFieldValueFacadeEjb .CustomizableFieldValueFacadeEjbLocal .class );
122+
123+ CustomizableFieldMetadataDto metadata = buildMetadata (context , "defaultField_" + context .name ().toLowerCase ());
124+ metadata .setDefaultValue ("default-" + context .name ().toLowerCase ());
125+ CustomizableFieldMetadataDto savedMetadata = metadataFacade .save (metadata );
126+
127+ PersonDto person = creator .createPerson ("Default" , "Case" , Sex .MALE , 1981 , 2 , 2 );
128+ CaseDataDto caze = creator .createCase (
129+ surveillanceSupervisor .toReference (),
130+ person .toReference (),
131+ Disease .EVD ,
132+ CaseClassification .PROBABLE ,
133+ InvestigationStatus .PENDING ,
134+ new java .util .Date (),
135+ rdcf );
136+
137+ if (context == CustomizableFieldContext .EXPOSURE ) {
138+ caze .getEpiData ().getExposures ().add (ExposureDto .build (ExposureType .TRAVEL ));
139+ caze = getCaseFacade ().save (caze );
140+ }
141+
142+ Map <CustomizableFieldMetadataDto , CustomizableFieldValueDto > values =
143+ valueFacade .getValuesForEntity (getEntityUuidForContext (context , caze ), context );
144+
145+ assertThat (values , hasKey (savedMetadata ));
146+ assertThat (values .get (savedMetadata ).getValue (), is (equalTo (savedMetadata .getDefaultValue ())));
147+ }
148+
149+ @ ParameterizedTest
150+ @ EnumSource (value = CustomizableFieldContext .class ,
151+ names = {
152+ "EPIDATA" ,
153+ "EXPOSURE" })
154+ void testContactRelatedDefaultValuesArePersistedOnCreate (CustomizableFieldContext context ) {
155+ CustomizableFieldMetadataFacade metadataFacade = getBean (CustomizableFieldMetadataFacadeEjb .CustomizableFieldMetadataFacadeEjbLocal .class );
156+ CustomizableFieldValueFacade valueFacade = getBean (CustomizableFieldValueFacadeEjb .CustomizableFieldValueFacadeEjbLocal .class );
157+
158+ CustomizableFieldMetadataDto metadata = buildMetadata (context , "contactDefaultField_" + context .name ().toLowerCase ());
159+ metadata .setDefaultValue ("contact-default-" + context .name ().toLowerCase ());
160+ CustomizableFieldMetadataDto savedMetadata = metadataFacade .save (metadata );
161+
162+ PersonDto person = creator .createPerson ("Default" , "Contact" , Sex .FEMALE , 1982 , 3 , 3 );
163+ ContactDto contact = creator .createContact (surveillanceSupervisor .toReference (), person .toReference (), Disease .EVD , dto -> {
164+ if (context == CustomizableFieldContext .EXPOSURE ) {
165+ dto .getEpiData ().getExposures ().add (ExposureDto .build (ExposureType .TRAVEL ));
166+ }
167+ });
168+
169+ Map <CustomizableFieldMetadataDto , CustomizableFieldValueDto > values =
170+ valueFacade .getValuesForEntity (getEntityUuidForContext (context , contact ), context );
171+
172+ assertThat (values , hasKey (savedMetadata ));
173+ assertThat (values .get (savedMetadata ).getValue (), is (equalTo (savedMetadata .getDefaultValue ())));
174+ }
175+
176+ private CustomizableFieldMetadataDto buildMetadata (CustomizableFieldContext context , String name ) {
177+ CustomizableFieldMetadataDto metadata = new CustomizableFieldMetadataDto ();
178+ metadata .setName (name );
179+ metadata .setFieldType (CustomizableFieldType .TEXT );
180+ metadata .setContextClass (context );
181+ metadata .setUiGroup (CustomizableFieldGroup .getGroupsForContext (context ).stream ().findFirst ().orElse (null ));
182+ metadata .setUiLinePosition (1 );
183+ return metadata ;
184+ }
185+
117186 private String getEntityUuidForContext (CustomizableFieldContext context , CaseDataDto caze ) {
118187 switch (context ) {
119188 case CASE :
@@ -128,4 +197,17 @@ private String getEntityUuidForContext(CustomizableFieldContext context, CaseDat
128197 throw new IllegalArgumentException ("Unhandled context: " + context );
129198 }
130199 }
200+
201+ private String getEntityUuidForContext (CustomizableFieldContext context , ContactDto contact ) {
202+ switch (context ) {
203+ case EPIDATA :
204+ return contact .getEpiData ().getUuid ();
205+ case EXPOSURE :
206+ return contact .getEpiData ().getExposures () != null && !contact .getEpiData ().getExposures ().isEmpty ()
207+ ? contact .getEpiData ().getExposures ().get (0 ).getUuid ()
208+ : null ;
209+ default :
210+ throw new IllegalArgumentException ("Unhandled context: " + context );
211+ }
212+ }
131213}
0 commit comments