[ 
https://issues.apache.org/jira/browse/NIFI-1214?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Witt updated NIFI-1214:
------------------------------
    Fix Version/s:     (was: 1.0.0)

> 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
>
> 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<MockFlowFile> 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)

Reply via email to