Repository: camel
Updated Branches:
  refs/heads/master bfa4b0afe -> e28e8ac4d


CAMEL-7767: Mock - Defining assertion on message doest work if using convertTo


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/09cbacba
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/09cbacba
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/09cbacba

Branch: refs/heads/master
Commit: 09cbacba0525e80cc583358f426630fb8259fa2f
Parents: bfa4b0a
Author: Claus Ibsen <davscl...@apache.org>
Authored: Sat Aug 30 09:57:24 2014 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Sat Aug 30 09:57:24 2014 +0200

----------------------------------------------------------------------
 .../org/apache/camel/builder/ValueBuilder.java  | 28 +++++---
 .../camel/component/mock/AssertionClause.java   |  6 ++
 .../camel/issues/MockValueBuilderIssueTest.java | 72 ++++++++++++++++++++
 3 files changed, 95 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/09cbacba/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java 
b/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
index e83400d..4724ddd 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
@@ -176,12 +176,12 @@ public class ValueBuilder implements Expression, 
Predicate {
 
     public ValueBuilder tokenize(String token) {
         Expression newExp = ExpressionBuilder.tokenizeExpression(expression, 
token);
-        return new ValueBuilder(newExp);
+        return onNewValueBuilder(newExp);
     }
 
     public ValueBuilder tokenizeXML(String tagName, String 
inheritNamespaceTagName) {
         Expression newExp = ExpressionBuilder.tokenizeXMLExpression(tagName, 
inheritNamespaceTagName);
-        return new ValueBuilder(newExp);
+        return onNewValueBuilder(newExp);
     }
 
     public ValueBuilder xtokenize(String path, Namespaces namespaces) {
@@ -191,12 +191,12 @@ public class ValueBuilder implements Expression, 
Predicate {
     public ValueBuilder xtokenize(String path, char mode, Namespaces 
namespaces) {
         Expression newExp = ExpressionBuilder.tokenizeXMLAwareExpression(path, 
mode);
         ((NamespaceAware)newExp).setNamespaces(namespaces.getNamespaces());
-        return new ValueBuilder(newExp);
+        return onNewValueBuilder(newExp);
     }
 
     public ValueBuilder tokenizePair(String startToken, String endToken, 
boolean includeTokens) {
         Expression newExp = 
ExpressionBuilder.tokenizePairExpression(startToken, endToken, includeTokens);
-        return new ValueBuilder(newExp);
+        return onNewValueBuilder(newExp);
     }
 
     /**
@@ -205,7 +205,7 @@ public class ValueBuilder implements Expression, Predicate {
      */
     public ValueBuilder regexTokenize(String regex) {
         Expression newExp = 
ExpressionBuilder.regexTokenizeExpression(expression, regex);
-        return new ValueBuilder(newExp);
+        return onNewValueBuilder(newExp);
     }
 
     /**
@@ -214,7 +214,7 @@ public class ValueBuilder implements Expression, Predicate {
      */
     public ValueBuilder regexReplaceAll(String regex, String replacement) {
         Expression newExp = ExpressionBuilder.regexReplaceAll(expression, 
regex, replacement);
-        return new ValueBuilder(newExp);
+        return onNewValueBuilder(newExp);
     }
 
     /**
@@ -223,7 +223,7 @@ public class ValueBuilder implements Expression, Predicate {
      */
     public ValueBuilder regexReplaceAll(String regex, Expression replacement) {
         Expression newExp = ExpressionBuilder.regexReplaceAll(expression, 
regex, replacement);
-        return new ValueBuilder(newExp);
+        return onNewValueBuilder(newExp);
     }
 
     /**
@@ -235,7 +235,7 @@ public class ValueBuilder implements Expression, Predicate {
      */
     public ValueBuilder convertTo(Class<?> type) {
         Expression newExp = ExpressionBuilder.convertToExpression(expression, 
type);
-        return new ValueBuilder(newExp);
+        return onNewValueBuilder(newExp);
     }
 
     /**
@@ -254,7 +254,8 @@ public class ValueBuilder implements Expression, Predicate {
      * @return the current builder
      */
     public ValueBuilder append(Object value) {
-        return new ValueBuilder(ExpressionBuilder.append(expression, 
asExpression(value)));
+        Expression newExp = ExpressionBuilder.append(expression, 
asExpression(value));
+        return onNewValueBuilder(newExp);
     }
 
     /**
@@ -264,7 +265,8 @@ public class ValueBuilder implements Expression, Predicate {
      * @return the current builder
      */
     public ValueBuilder prepend(Object value) {
-        return new ValueBuilder(ExpressionBuilder.prepend(expression, 
asExpression(value)));
+        Expression newExp = ExpressionBuilder.prepend(expression, 
asExpression(value));
+        return onNewValueBuilder(newExp);
     }
 
     /**
@@ -276,7 +278,7 @@ public class ValueBuilder implements Expression, Predicate {
      */
     public ValueBuilder sort(Comparator<?> comparator) {
         Expression newExp = ExpressionBuilder.sortExpression(expression, 
comparator);
-        return new ValueBuilder(newExp);
+        return onNewValueBuilder(newExp);
     }
 
     /**
@@ -311,4 +313,8 @@ public class ValueBuilder implements Expression, Predicate {
             return ExpressionBuilder.constantExpression(value);
         }
     }
+
+    protected ValueBuilder onNewValueBuilder(Expression exp) {
+        return new ValueBuilder(exp);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/09cbacba/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java 
b/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
index 805c3f3..435851c 100644
--- 
a/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
+++ 
b/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
@@ -142,10 +142,16 @@ public abstract class AssertionClause extends 
ExpressionClauseSupport<ValueBuild
             super(expression);
         }
 
+        @Override
         protected Predicate onNewPredicate(Predicate predicate) {
             predicate = super.onNewPredicate(predicate);
             addPredicate(predicate);
             return predicate;
         }
+
+        @Override
+        protected ValueBuilder onNewValueBuilder(Expression exp) {
+            return new PredicateValueBuilder(exp);
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/09cbacba/camel-core/src/test/java/org/apache/camel/issues/MockValueBuilderIssueTest.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/test/java/org/apache/camel/issues/MockValueBuilderIssueTest.java
 
b/camel-core/src/test/java/org/apache/camel/issues/MockValueBuilderIssueTest.java
new file mode 100644
index 0000000..920c312
--- /dev/null
+++ 
b/camel-core/src/test/java/org/apache/camel/issues/MockValueBuilderIssueTest.java
@@ -0,0 +1,72 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.issues;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+public class MockValueBuilderIssueTest extends ContextTestSupport {
+
+    public void testMockValueBuilder() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMessageCount(1);
+        mock.message(0).property("foo").convertTo(String.class).contains("2");
+
+        template.sendBody("direct:start", "Hello World");
+
+        assertMockEndpointsSatisfied();
+    }
+
+    public void testMockValueBuilderFail() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMessageCount(1);
+        mock.message(0).property("foo").convertTo(String.class).contains("4");
+
+        template.sendBody("direct:start", "Hello World");
+
+        try {
+            assertMockEndpointsSatisfied();
+            fail("Should fail");
+        } catch (Throwable e) {
+            assertEquals("Assertion error at index 0 on mock mock://result 
with predicate: property(foo) contains 4"
+                    + " evaluated as: 123 contains 4 on Exchange[Message: 
Hello World]", e.getMessage());
+        }
+    }
+
+    public void testMockValueBuilderNotSatisfied() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMessageCount(1);
+        mock.message(0).property("foo").convertTo(String.class).contains("4");
+
+        template.sendBody("direct:start", "Hello World");
+
+        mock.assertIsNotSatisfied();
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:start")
+                    .setProperty("foo", constant(123))
+                    .to("mock:result");
+            }
+        };
+    }
+}

Reply via email to