/* * Copyright (C) 2015 Stichting Akvo (Akvo Foundation) * * This file is part of Akvo FLOW. * * Akvo FLOW is free software: you can redistribute it and modify it under the terms of * the GNU Affero General Public License (AGPL) as published by the Free Software Foundation, * either version 3 of the License or any later version. * * Akvo FLOW is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Affero General Public License included below for more details. * * The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>. */ package org.akvo.flow.test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import org.junit.Test; import org.waterforpeople.mapping.domain.QuestionAnswerStore; import org.waterforpeople.mapping.domain.SurveyInstance; import org.waterforpeople.mapping.serialization.SurveyInstanceHandler; public class DataSerializationTest { private static final String TSV_12_SURVEY_INSTANCE = "555\t\t1111\tVALUE\tquestionvalue\ttestuser\t\t1234\t\t\t\tabc"; private static final String TSV_13_SURVEY_INSTANCE = "555\t\t1111\tVALUE\tquestionvalue\ttestuser\t\t1234\t\t\t\tabc\t10"; private static final String TSV_14_SURVEY_INSTANCE = "555\t\t1111\tVALUE\tquestionvalue\ttestuser\t\t1234\t\t\t\tabc\t10\txyz"; private static final String JSON_SURVEY_INSTANCE = "{" + "\"formId\": 555, \"submissionDate\": 1234," + "\"duration\": 10, \"dataPointId\": \"xyz\"," + "\"uuid\": \"abc\", \"deviceId\": \"test\"," + "\"username\": \"testuser\"," + "\"responses\": [" + "{\"questionId\": \"1111\", \"answerType\": \"VALUE\", \"value\":\"questionvalue\"}" + "]}"; @Test public void JSONTest() { SurveyInstance si = SurveyInstanceHandler.fromJSON(JSON_SURVEY_INSTANCE); testSurveyInstance(si, true, true); } @Test public void TSVTest() { // 12 token TSV SurveyInstance si = SurveyInstanceHandler.fromTSV(new ArrayList<>(Arrays.asList(TSV_12_SURVEY_INSTANCE))); testSurveyInstance(si, false, false); // 13 token TSV si = SurveyInstanceHandler.fromTSV(new ArrayList<>(Arrays.asList(TSV_13_SURVEY_INSTANCE))); testSurveyInstance(si, true, false); // 14 token TSV si = SurveyInstanceHandler.fromTSV(new ArrayList<>(Arrays.asList(TSV_14_SURVEY_INSTANCE))); testSurveyInstance(si, true, true); } private void testSurveyInstance(SurveyInstance si, boolean hasDuration, boolean hasDataPointId) { assertNotNull(si); assertEquals(555, si.getSurveyId().longValue()); assertEquals(new Date(1234), si.getCollectionDate()); assertEquals("abc", si.getUuid()); assertEquals("testuser", si.getSubmitterName()); assertEquals(false, si.getQuestionAnswersStore().isEmpty()); QuestionAnswerStore qas = si.getQuestionAnswersStore().get(0); assertEquals("1111", qas.getQuestionID()); assertEquals("VALUE", qas.getType()); assertEquals("questionvalue", qas.getValue()); if (hasDuration) { assertEquals(10, si.getSurveyalTime().longValue()); } if (hasDataPointId) { assertEquals("xyz", si.getSurveyedLocaleIdentifier()); } } }