From 976a636e11e3e5458a3c1dd540cc392e09c815ae Mon Sep 17 00:00:00 2001 From: Laurent Caouissin Date: Thu, 19 Feb 2026 15:51:44 +0100 Subject: [PATCH 1/2] fix: choiceType reponse in question --- src/main/resources/xsd/Questionnaire.xsd | 18 ++++++------- .../pogues/test/JSONDeserializerTest.java | 25 +++++++++++++------ .../insee/pogues/test/JSONSerializerTest.java | 6 ++--- 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/src/main/resources/xsd/Questionnaire.xsd b/src/main/resources/xsd/Questionnaire.xsd index 1330676..c45efb9 100644 --- a/src/main/resources/xsd/Questionnaire.xsd +++ b/src/main/resources/xsd/Questionnaire.xsd @@ -244,15 +244,6 @@ - - - - choiceType specifies whether the response options are defined by a static - code list (CODE_LIST) or dynamically generated from a collected variable - (VARIABLE). The default value is CODE_LIST. - - - Whether the question is mandatory. Only used by multiple choice question for now: @@ -664,6 +655,15 @@ to a single response. + + + + choiceType specifies whether the response options are defined by a static + code list (CODE_LIST) or dynamically generated from a collected variable + (VARIABLE). The default value is CODE_LIST. + + + diff --git a/src/test/java/fr/insee/pogues/test/JSONDeserializerTest.java b/src/test/java/fr/insee/pogues/test/JSONDeserializerTest.java index 173d3d2..8c43e8f 100644 --- a/src/test/java/fr/insee/pogues/test/JSONDeserializerTest.java +++ b/src/test/java/fr/insee/pogues/test/JSONDeserializerTest.java @@ -417,14 +417,18 @@ void testChoiceTypeVariableResponses() throws JAXBException { "Child": [ { "type": "QuestionType", - "choiceType": "VARIABLE" + "Response": [ + { + "choiceType": "VARIABLE" + } + ] } ] } """; JSONDeserializer deserializer = new JSONDeserializer(); Questionnaire questionnaire = deserializer.deserializeString(json); - assertEquals(ChoiceTypeEnum.VARIABLE, ((QuestionType) questionnaire.getChild().getFirst()).getChoiceType()); + assertEquals(ChoiceTypeEnum.VARIABLE, ((QuestionType) questionnaire.getChild().getFirst()).getResponse().getFirst().getChoiceType()); } @Test @@ -434,7 +438,11 @@ void testChoiceTypeSuggester() throws JAXBException { "Child": [ { "type": "QuestionType", - "choiceType": "SUGGESTER" + "Response": [ + { + "choiceType": "SUGGESTER" + } + ] } ] } @@ -442,7 +450,7 @@ void testChoiceTypeSuggester() throws JAXBException { JSONDeserializer deserializer = new JSONDeserializer(); Questionnaire questionnaire = deserializer.deserializeString(json); - assertEquals(ChoiceTypeEnum.SUGGESTER, ((QuestionType) questionnaire.getChild().getFirst()).getChoiceType()); + assertEquals(ChoiceTypeEnum.SUGGESTER, ((QuestionType) questionnaire.getChild().getFirst()).getResponse().getFirst().getChoiceType()); } @Test @@ -451,14 +459,15 @@ void testChoiceTypeDefaultValue() throws JAXBException { { "Child": [ { - "type": "QuestionType" + "type": "QuestionType", + "Response": [{}] } ] } """; JSONDeserializer deserializer = new JSONDeserializer(); Questionnaire questionnaire = deserializer.deserializeString(json); - assertEquals(ChoiceTypeEnum.CODE_LIST, ((QuestionType) questionnaire.getChild().getFirst()).getChoiceType()); + assertEquals(ChoiceTypeEnum.CODE_LIST, ((QuestionType) questionnaire.getChild().getFirst()).getResponse().getFirst().getChoiceType()); } @Test @@ -508,9 +517,9 @@ void testVariableResponsesFullConfiguration() throws JAXBException { { "type": "QuestionType", "questionType": "SINGLE_CHOICE", - "choiceType": "VARIABLE", "OptionFilter": "nvl($AGE$, 0) > 18", "Response": { + "choiceType": "VARIABLE", "VariableReference": "id-loop-variable" } } @@ -526,7 +535,7 @@ void testVariableResponsesFullConfiguration() throws JAXBException { assertEquals(QuestionTypeEnum.SINGLE_CHOICE, question.getQuestionType()); - assertEquals(ChoiceTypeEnum.VARIABLE, question.getChoiceType()); + assertEquals(ChoiceTypeEnum.VARIABLE, question.getResponse().getFirst().getChoiceType()); assertEquals("nvl($AGE$, 0) > 18", question.getOptionFilter()); assertNotNull(question.getResponse()); assertFalse(question.getResponse().isEmpty()); diff --git a/src/test/java/fr/insee/pogues/test/JSONSerializerTest.java b/src/test/java/fr/insee/pogues/test/JSONSerializerTest.java index eeee037..e9266b8 100644 --- a/src/test/java/fr/insee/pogues/test/JSONSerializerTest.java +++ b/src/test/java/fr/insee/pogues/test/JSONSerializerTest.java @@ -680,11 +680,11 @@ void serializePairwiseSourceVariableReferences() throws JAXBException, Unsupport void testSerializeVariableResponsesFullConfiguration() throws Exception { QuestionType question = new QuestionType(); question.setQuestionType(QuestionTypeEnum.SINGLE_CHOICE); - question.setChoiceType(ChoiceTypeEnum.VARIABLE); question.setOptionFilter("nvl($AGE$, 0) > 18"); ResponseType response = new ResponseType(); response.setVariableReference("id-loop-variable"); + response.setChoiceType(ChoiceTypeEnum.VARIABLE); question.getResponse().add(response); @@ -700,11 +700,11 @@ void testSerializeVariableResponsesFullConfiguration() throws Exception { { "type": "QuestionType", "questionType": "SINGLE_CHOICE", - "choiceType": "VARIABLE", "OptionFilter": "nvl($AGE$, 0) > 18", "Response": [ { - "VariableReference": "id-loop-variable" + "VariableReference": "id-loop-variable", + "choiceType": "VARIABLE" } ] } From 91e8ba883e12a3bfe576be087d27e1f35640cf7a Mon Sep 17 00:00:00 2001 From: Laurent Caouissin Date: Thu, 19 Feb 2026 15:56:37 +0100 Subject: [PATCH 2/2] bump: 1.15.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9df84d3..eadf166 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ fr.insee.pogues pogues-model - 1.15.0 + 1.15.1 jar Pogues Model