### Question:
MultiStageSkipListener implements FlowManipulator, PostCompletionRequestsDbListener { @Override public boolean shouldRunFor(String currentBBName, boolean isFirst, BuildingBlockExecution execution) { return ((boolean) execution.getVariable(BBConstants.G_ALACARTE)) && "AssignVfModuleBB".equals(currentBBName) && isFirst; }  @Override boolean shouldRunFor(String currentBBName, boolean isFirst, BuildingBlockExecution execution); @Override boolean shouldRunFor(BuildingBlockExecution execution); @Override void run(List<ExecuteBuildingBlock> flowsToExecute, ExecuteBuildingBlock currentBB,
            BuildingBlockExecution execution); @Override void run(InfraActiveRequests request, BuildingBlockExecution execution);  }### Answer:
@Test public void testTrigger() { BuildingBlockExecution execution = new DelegateExecutionImpl(new DelegateExecutionFake()); execution.setVariable(BBConstants.G_ALACARTE, true); assertTrue("should be triggered", multiStageSkipListener.shouldRunFor("AssignVfModuleBB", true, execution)); execution.setVariable(BBConstants.G_ALACARTE, false); assertFalse("should not be triggered", multiStageSkipListener.shouldRunFor("AssignVfModuleBB", true, execution)); execution.setVariable(BBConstants.G_ALACARTE, true); assertFalse("should not be triggered", multiStageSkipListener.shouldRunFor("AssignVfModuleBB2", true, execution)); execution.setVariable("multiStageDesign", true); assertTrue("should be triggered", multiStageSkipListener.shouldRunFor(execution)); execution.setVariable("multiStageDesign", false); assertFalse("should not be triggered", multiStageSkipListener.shouldRunFor(execution)); execution.setVariable("multiStageDesign", null); assertFalse("should not be triggered", multiStageSkipListener.shouldRunFor(execution)); }