package org.akvo.flow.serialization.response.value; import junit.framework.TestCase; import org.akvo.flow.domain.Dependency; import org.akvo.flow.domain.Option; import java.util.ArrayList; import java.util.List; public class OptionValueTest extends TestCase { public void testSingle() { List<Option> options = new ArrayList<>(); Option option = new Option(); option.setText("United Kingdom"); option.setCode("UK"); options.add(option); String response = OptionValue.serialize(options); List<Option> values = OptionValue.deserialize(response); assertEquals(1, values.size()); assertEquals("United Kingdom", values.get(0).getText()); assertEquals("UK", values.get(0).getCode()); } public void testSingleOther() { List<Option> options = new ArrayList<>(); Option option = new Option(); option.setText("United Kingdom"); option.setCode("OTHER"); option.setIsOther(true); options.add(option); String response = OptionValue.serialize(options); List<Option> values = OptionValue.deserialize(response); assertEquals(1, values.size()); assertEquals("United Kingdom", values.get(0).getText()); assertEquals("OTHER", values.get(0).getCode()); assertTrue(values.get(0).isOther()); } public void testSingleNoCodes() { List<Option> options = new ArrayList<>(); Option option = new Option(); option.setText("United Kingdom"); options.add(option); String response = OptionValue.serialize(options); List<Option> values = OptionValue.deserialize(response); assertEquals(1, values.size()); assertEquals("United Kingdom", values.get(0).getText()); assertNull(values.get(0).getCode()); } public void testMultiple() { List<Option> options = new ArrayList<>(); Option option = new Option(); option.setText("United Kingdom"); option.setCode("UK"); options.add(option); option = new Option(); option.setText("Spain"); option.setCode("ES"); options.add(option); String response = OptionValue.serialize(options); List<Option> values = OptionValue.deserialize(response); assertEquals(2, values.size()); assertEquals("United Kingdom", values.get(0).getText()); assertEquals("UK", values.get(0).getCode()); assertEquals("Spain", values.get(1).getText()); assertEquals("ES", values.get(1).getCode()); } public void testDependencies() { List<Option> options = new ArrayList<>(); Option option = new Option(); option.setText("United Kingdom"); option.setCode("UK"); options.add(option); option = new Option(); option.setText("Spain"); option.setCode("ES"); options.add(option); String response = OptionValue.serialize(options); Dependency dependency = new Dependency(); dependency.setAnswer("Spain"); assertTrue(dependency.isMatch(response)); dependency.setAnswer("Spain|Finland"); assertTrue(dependency.isMatch(response)); dependency.setAnswer("Spain|United Kingdom"); assertTrue(dependency.isMatch(response)); dependency.setAnswer("Other"); assertFalse(dependency.isMatch(response)); } }