You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2015/11/05 12:35:51 UTC
tapestry-5 git commit: TAP4-2204: fix test
Repository: tapestry-5
Updated Branches:
refs/heads/master b57f85559 -> 12cd14d5d
TAP4-2204: fix test
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/12cd14d5
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/12cd14d5
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/12cd14d5
Branch: refs/heads/master
Commit: 12cd14d5d650dba9f94529ad7db985fd076abf91
Parents: b57f855
Author: Jochen Kemnade <jo...@eddyson.de>
Authored: Thu Nov 5 12:35:17 2015 +0100
Committer: Jochen Kemnade <jo...@eddyson.de>
Committed: Thu Nov 5 12:35:17 2015 +0100
----------------------------------------------------------------------
.../corelib/components/SelectTest.java | 77 +++++++++++++++++---
1 file changed, 68 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/12cd14d5/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/SelectTest.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/SelectTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/SelectTest.java
index 62e04f2..f96e957 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/SelectTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/SelectTest.java
@@ -16,6 +16,7 @@ import org.apache.tapestry5.*;
import org.apache.tapestry5.corelib.data.BlankOption;
import org.apache.tapestry5.corelib.data.SecureOption;
import org.apache.tapestry5.dom.XMLMarkupModel;
+import org.apache.tapestry5.internal.InternalComponentResources;
import org.apache.tapestry5.internal.OptionGroupModelImpl;
import org.apache.tapestry5.internal.OptionModelImpl;
import org.apache.tapestry5.internal.SelectModelImpl;
@@ -23,6 +24,7 @@ import org.apache.tapestry5.internal.TapestryInternalUtils;
import org.apache.tapestry5.internal.services.MarkupWriterImpl;
import org.apache.tapestry5.internal.services.StringValueEncoder;
import org.apache.tapestry5.internal.test.InternalBaseTestCase;
+import org.apache.tapestry5.internal.util.Holder;
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
import org.apache.tapestry5.ioc.services.TypeCoercer;
@@ -30,6 +32,7 @@ import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.ValueEncoderSource;
import org.apache.tapestry5.util.EnumSelectModel;
import org.easymock.EasyMock;
+import org.easymock.IAnswer;
import org.testng.annotations.Test;
import java.io.BufferedInputStream;
@@ -481,7 +484,7 @@ public class SelectTest extends InternalBaseTestCase
/**
* Utility for testing the "secure" option with various values and model
* states. This avoids a lot of redundant test setup code.
- *
+ *
* @param withModel whether there should be a model to test against
* @param secureOption which "secure" option to test
* @param expectedError the expected error message, nor null if no error
@@ -497,11 +500,36 @@ public class SelectTest extends InternalBaseTestCase
Request request = mockRequest();
Messages messages = mockMessages();
FieldValidationSupport fvs = mockFieldValidationSupport();
+ TypeCoercer typeCoercer = mockTypeCoercer();
+ InternalComponentResources resources = mockInternalComponentResources();
+ Binding selectModelBinding = mockBinding();
expect(request.getParameter("xyz")).andReturn("MAC");
expect(messages.contains(EasyMock.anyObject(String.class))).andReturn(false).anyTimes();
+ expect(resources.getBinding("model")).andReturn(selectModelBinding);
+
+ final Holder<SelectModel> modelHolder = Holder.create();
+
+ expect(typeCoercer.coerce(EasyMock.or(EasyMock.isA(SelectModel.class), EasyMock.isNull()), EasyMock.eq(SelectModel.class)))
+ .andAnswer(new IAnswer<SelectModel>() {
+
+ @Override
+ public SelectModel answer() throws Throwable {
+ return modelHolder.get();
+ }
+ });
+
+
+ expect(selectModelBinding.get()).andAnswer(new IAnswer<SelectModel>() {
+
+ @Override
+ public SelectModel answer() throws Throwable {
+ return modelHolder.get();
+ }
+ });
+
Select select = new Select();
tracker.recordInput(select, "MAC");
@@ -509,7 +537,7 @@ public class SelectTest extends InternalBaseTestCase
// when not failing we will expect to call the fvs.validate method
if (expectedError == null)
{
- fvs.validate(Platform.MAC, null, null);
+ fvs.validate(Platform.MAC, resources, null);
}
else
{
@@ -517,20 +545,21 @@ public class SelectTest extends InternalBaseTestCase
}
replay();
-
- SelectModel model = null;
+
if (withModel)
{
- model = new EnumSelectModel(Platform.class, messages);
+ modelHolder.put(new EnumSelectModel(Platform.class, messages));
}
set(select, "encoder", encoder);
- set(select, "model", model);
+ set(select, "model", modelHolder.get());
set(select, "request", request);
set(select, "secure", secureOption);
set(select, "beanValidationDisabled", true); // Disable BeanValidationContextSupport
set(select, "tracker", tracker);
set(select, "fieldValidationSupport", fvs);
+ set(select, "typeCoercer", typeCoercer);
+ set(select, "resources", resources);
select.processSubmission("xyz");
@@ -551,31 +580,61 @@ public class SelectTest extends InternalBaseTestCase
Request request = mockRequest();
Messages messages = mockMessages();
FieldValidationSupport fvs = mockFieldValidationSupport();
+ TypeCoercer typeCoercer = mockTypeCoercer();
+ InternalComponentResources resources = mockInternalComponentResources();
+ Binding selectModelBinding = mockBinding();
+
expect(request.getParameter("xyz")).andReturn("5");
expect(messages.contains(EasyMock.anyObject(String.class))).andReturn(false).anyTimes();
+ expect(resources.getBinding("model")).andReturn(selectModelBinding);
+
+ final Holder<SelectModel> modelHolder = Holder.create();
+
+ expect(typeCoercer.coerce(EasyMock.or(EasyMock.isA(SelectModel.class), EasyMock.isNull()), EasyMock.eq(SelectModel.class)
+ ))
+ .andAnswer(new IAnswer<SelectModel>() {
+
+ @Override
+ public SelectModel answer() throws Throwable {
+ return modelHolder.get();
+ }
+ });
+
+
+ expect(selectModelBinding.get()).andAnswer(new IAnswer<SelectModel>() {
+
+ @Override
+ public SelectModel answer() throws Throwable {
+ return modelHolder.get();
+ }
+ });
+
+
Select select = new Select();
tracker.recordInput(select, "5");
- fvs.validate(5, null, null);
+ fvs.validate(5, resources, null);
replay();
// TAP5-2184 is triggered by the automatic String->SelectModel coercion, because the OptionModel
// values are Strings even if the desired property type is not (Integer, here). Select has a little
// hack to run the model values through the ValueEncoder for comparison.
- SelectModel model = getService(TypeCoercer.class).coerce("1,5,10,20", SelectModel.class);
+ modelHolder.put(getService(TypeCoercer.class).coerce("1,5,10,20", SelectModel.class));
set(select, "encoder", encoder);
- set(select, "model", model);
+ set(select, "model", modelHolder.get());
set(select, "request", request);
set(select, "secure", SecureOption.ALWAYS);
set(select, "beanValidationDisabled", true); // Disable BeanValidationContextSupport
set(select, "tracker", tracker);
set(select, "fieldValidationSupport", fvs);
+ set(select, "typeCoercer", typeCoercer);
+ set(select, "resources", resources);
select.processSubmission("xyz");