From 78879cebb5dc26e63b082aa936ca7dc162149c7c Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Tue, 31 Aug 2010 15:22:48 +0000 Subject: [PATCH] SWF-1370 Extract test into a separate test fixture --- .../mvc/view/BindingModelSwf1370Tests.java | 90 +++++++++++++++++++ .../mvc/view/DefaultBindingModelTests.java | 70 --------------- 2 files changed, 90 insertions(+), 70 deletions(-) create mode 100644 spring-webflow/src/test/java/org/springframework/webflow/mvc/view/BindingModelSwf1370Tests.java diff --git a/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/BindingModelSwf1370Tests.java b/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/BindingModelSwf1370Tests.java new file mode 100644 index 00000000..dd05932e --- /dev/null +++ b/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/BindingModelSwf1370Tests.java @@ -0,0 +1,90 @@ +package org.springframework.webflow.mvc.view; + +import java.util.HashMap; +import java.util.Map; + +import junit.framework.TestCase; + +import org.springframework.binding.convert.ConversionService; +import org.springframework.binding.convert.service.DefaultConversionService; +import org.springframework.binding.message.DefaultMessageContext; +import org.springframework.core.convert.converter.ConverterRegistry; +import org.springframework.expression.spel.standard.SpelExpressionParser; +import org.springframework.webflow.expression.spel.WebFlowSpringELExpressionParser; + +/** + * Test harness based on: https://jira.springframework.org/browse/SWF-1370 + * + */ +public class BindingModelSwf1370Tests extends TestCase { + + private ConversionService conversionService; + private ConverterRegistry converterRegistry; + private WebFlowSpringELExpressionParser expressionParser; + + public void setUp() { + conversionService = new DefaultConversionService(); + expressionParser = new WebFlowSpringELExpressionParser(new SpelExpressionParser(), conversionService); + converterRegistry = (ConverterRegistry) conversionService.getDelegateConversionService(); + } + + public void testGetFieldValueWithInvalidBeanWrapperExpression() throws Exception { + Question question = new Question(); + converterRegistry.addConverter(new QuestionConverter(question)); + BindingModel model = new BindingModel("theTestBean", new TestBeanWithQuestionResponseMap(question), + expressionParser, conversionService, new DefaultMessageContext()); + assertEquals("111", model.getFieldValue("responses[1].value")); + } + + private class Question { + }; + + private class Response { + + private int value; + + public Response(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + } + + private class TestBeanWithQuestionResponseMap { + private Map responses = new HashMap(); + + public TestBeanWithQuestionResponseMap(Question question) { + responses.put(question, new Response(111)); + } + + public Map getResponses() { + return responses; + } + + public void setResponses(Map responses) { + this.responses = responses; + } + } + + private class QuestionConverter implements org.springframework.core.convert.converter.Converter { + + private Map map = new HashMap(); + + public QuestionConverter(Question... questions) { + for (int i = 0; i < questions.length; i++) { + map.put(i + 1, questions[i]); + } + } + + public Question convert(Integer source) { + return map.get(source); + } + } + +} diff --git a/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/DefaultBindingModelTests.java b/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/DefaultBindingModelTests.java index 629b555b..fd1758ed 100644 --- a/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/DefaultBindingModelTests.java +++ b/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/DefaultBindingModelTests.java @@ -1,12 +1,6 @@ package org.springframework.webflow.mvc.view; -import java.util.HashMap; -import java.util.Map; - -import org.springframework.binding.convert.ConversionService; -import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.binding.expression.ExpressionParser; -import org.springframework.core.convert.converter.ConverterRegistry; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.webflow.expression.spel.WebFlowSpringELExpressionParser; @@ -16,68 +10,4 @@ public class DefaultBindingModelTests extends AbstractBindingModelTests { return new WebFlowSpringELExpressionParser(new SpelExpressionParser()); } - public void testGetFieldValueWithInvalidBeanWrapperExpression() throws Exception { - // See SWF-1370 - Question question = new Question(); - Map map = new HashMap(); - map.put(1, question); - ConversionService theConversionService = new DefaultConversionService(); - ((ConverterRegistry) theConversionService.getDelegateConversionService()).addConverter(new QuestionConverter( - map)); - WebFlowSpringELExpressionParser theParser = new WebFlowSpringELExpressionParser(new SpelExpressionParser(), - theConversionService); - model = new BindingModel("theTestBean", new TestBeanWithQuestionResponseMap(question), theParser, - theConversionService, messages); - assertEquals("foo", model.getFieldValue("responses[1].value")); - } - - private class Question { - }; - - private class Response { - - private String value; - - public Response(String value) { - this.value = value; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - } - - private class TestBeanWithQuestionResponseMap { - private Map responses = new HashMap(); - - public TestBeanWithQuestionResponseMap(Question question) { - responses.put(question, new Response("foo")); - } - - public Map getResponses() { - return responses; - } - - public void setResponses(Map responses) { - this.responses = responses; - } - } - - private class QuestionConverter implements org.springframework.core.convert.converter.Converter { - - private Map map; - - public QuestionConverter(Map map) { - this.map = map; - } - - public Question convert(Integer source) { - return map.get(source); - } - } - }