@Test
public void testSummarizeReceiptJobFlow() {

	tester.input("receipt", Receipt.class)
		.prepare(INPUT_PATH + "/receipt.xls#input");
	tester.input("shop", Shop.class)
		.prepare(INPUT_PATH + "/shop.xls#input");
	tester.input("item", Item.class)
		.prepare(INPUT_PATH + "/item.xls#input");
	tester.output("error", ErrorReceipt.class)
		.verify(OUTPUT_PATH + "/expected_error_receipt.xls#output",
				OUTPUT_PATH + "/expected_error_receipt.xls#rule")
		.dumpActual(new ExcelSheetSinkFactory("target" +
				DUMP_PATH + "/error_receipt_actual.xls"))
		.dumpDifference(new HtmlDifferenceSinkFactory("target" +
				DUMP_PATH + "/error_receipt_difference.html"));
	tester.output("itemSummary", ItemSummary.class)
		.verify(OUTPUT_PATH + "/expected_item_summary.xls#output",
				OUTPUT_PATH + "/expected_item_summary.xls#rule")
		.dumpActual(new ExcelSheetSinkFactory("target" +
				DUMP_PATH + "/item_summary_actual.xls"))
		.dumpDifference(new HtmlDifferenceSinkFactory("target" +
				DUMP_PATH + "/item_summary_difference.html"));
	tester.output("categorySummary", CategorySummary.class)
		.verify(OUTPUT_PATH + "/expected_category_summary.xls#output",
				OUTPUT_PATH + "/expected_category_summary.xls#rule")
		.dumpActual(new ExcelSheetSinkFactory("target" +
				DUMP_PATH + "/category_summary_actual.xls"))
		.dumpDifference(new HtmlDifferenceSinkFactory("target" +
				DUMP_PATH + "/category_summary_difference.html"));
	tester.output("shopSummary", ShopSummary.class)
		.verify(OUTPUT_PATH + "/expected_shop_summary.xls#output",
				OUTPUT_PATH + "/expected_shop_summary.xls#rule")
		.dumpActual(new ExcelSheetSinkFactory("target" +
				DUMP_PATH + "/shop_summary_actual.xls"))
		.dumpDifference(new HtmlDifferenceSinkFactory("target" +
				DUMP_PATH + "/shop_summary_difference.html"));
	tester.runTest(SummarizeReceiptJobFlow.class);
}