[
https://issues.apache.org/jira/browse/NIFI-1214?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Joseph Percivall updated NIFI-1214:
---
Resolution: Fixed
Fix Version/s: 1.1.0
Status: Resolved (was: Patch Available)
Resoled via PR #1033
With the following commit:
https://github.com/apache/nifi/commit/ad3d63d204c1e4408c91728d4c5d76a75e14c8f9
> Mock Framework should allow order-independent assumptions on FlowFiles
> --
>
> Key: NIFI-1214
> URL: https://issues.apache.org/jira/browse/NIFI-1214
> Project: Apache NiFi
> Issue Type: Improvement
> Components: Tools and Build
>Reporter: Mark Payne
>Assignee: Toivo Adams
> Fix For: 1.1.0
>
>
> A common pattern in unit testing is to iterate over all FlowFiles that are
> output to a Relationship and verify that each FlowFile matches one criteria
> or another and that all criteria are met. For example, the following code
> snippet from TestRouteText verifies that two FlowFiles were output and that
> Criteria A was met by one of them and Criteria B was met by the other:
> {code}
> final List list =
> runner.getFlowFilesForRelationship("o");
> boolean found1 = false;
> boolean found2 = false;
> for (final MockFlowFile mff : list) {
> if (mff.getAttribute(RouteText.GROUP_ATTRIBUTE_KEY).equals("1")) {
> mff.assertContentEquals("1,hello\n1,good-bye");
> found1 = true;
> } else {
> mff.assertAttributeEquals(RouteText.GROUP_ATTRIBUTE_KEY, "2");
> mff.assertContentEquals("2,world\n");
> found2 = true;
> }
> }
> assertTrue(found1);
> assertTrue(found2);
> {code}
> This is very verbose, and error-prone. It could be done much more concisely
> if we have a method like:
> {code}
> TestRunner.assertAllConditionsMet( Relationship relationship,
> FlowFileVerifier... verifier );
> {code}
> Where FlowFileVerifier is able to verify some condition on a FlowFile. This
> method would then be responsible for ensuring that each FlowFile that was
> routed to 'relationship' meets one of the criteria specified by a verifier,
> and that all of the verifiers were met. For example:
> {code}
> runner.assertAllConditionsMet( "o",
> { mff -> mff.isAttributeEqual(RouteText.GROUP_ATTRIBUTE_KEY, "1") &&
> mff.isContentEqual("1,hello\n1,good-bye") },
> { mff -> mff.isAttributeEqual(RouteText.GROUP_ATTRIBUTE_KEY, "2") &&
> mff.isContentEqual("2,world\n") }
> );
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)