/**
   * If the source file exists, it should be moved to the dest path. The destination path should be
   * created and the file must exist in the destination path, as a file.
   *
   * @throws Throwable
   */
  @Test
  public void testProcessWithReadCompleteAsTrue() throws Throwable {
    ActionEvent actionEvent = new ActionEvent();
    String tempDir = System.getProperty("java.io.tmpdir");
    File sourceFilePath = new File(tempDir + "tempsrc");
    sourceFilePath.mkdirs();
    File destPath = new File(tempDir + "tempdest");
    File sourceFile = File.createTempFile("temp-file-name-" + 0, ".tmp", sourceFilePath);

    actionEvent.getHeaders().put(ActionEventHeaderConstants.READ_COMPLETE, "true");
    actionEvent
        .getHeaders()
        .put(ActionEventHeaderConstants.SOURCE_FILE_PATH, sourceFile.getAbsolutePath());
    // actionEvent.getHeaders().put(ActionEventHeaderConstants.SOURCE_FILE_LOCATION,
    // sourceFilePath.getAbsolutePath());
    FileArchiveHandler fileArchiveHandler = new FileArchiveHandler();
    ReflectionTestUtils.setField(fileArchiveHandler, "archivePath", destPath.getAbsolutePath());
    Assert.assertTrue(sourceFile.exists());
    Status status = invoke(actionEvent, fileArchiveHandler);
    Assert.assertEquals(status, Status.READY);
    Assert.assertFalse(new File(sourceFile.getAbsolutePath()).exists());
    Assert.assertTrue(new File(destPath.getAbsolutePath() + sourceFile.getAbsolutePath()).exists());
    Assert.assertFalse(
        new File(destPath.getAbsolutePath() + sourceFile.getAbsolutePath()).isDirectory());
    FileUtils.deleteDirectory(sourceFilePath);
    FileUtils.deleteDirectory(destPath);
  }
 @Test
 public void testProcessWithReadCompleteAsFalse() throws Throwable {
   ActionEvent actionEvent = new ActionEvent();
   actionEvent.getHeaders().put(ActionEventHeaderConstants.READ_COMPLETE, "false");
   Status status = invoke(actionEvent);
   Assert.assertEquals(status, Status.READY);
 }
  /**
   * If the source file doesn't exist, archive operation should fail with IOException. Status should
   * be returned as READY. Make sure that the destination path exists and exists as a directory.
   *
   * @throws Throwable
   */
  @Test
  public void testProcessWithSourceFileDoesntExist() throws Throwable {
    ActionEvent actionEvent = new ActionEvent();
    String tempDir = System.getProperty("java.io.tmpdir");
    File destPath = new File(tempDir + "tempdest");
    File sourceFile = new File(tempDir + "/tempsrc/tempfile.txt");

    actionEvent.getHeaders().put(ActionEventHeaderConstants.READ_COMPLETE, "true");
    actionEvent
        .getHeaders()
        .put(ActionEventHeaderConstants.SOURCE_FILE_PATH, sourceFile.getAbsolutePath());
    FileArchiveHandler fileArchiveHandler = new FileArchiveHandler();
    ReflectionTestUtils.setField(fileArchiveHandler, "archivePath", destPath.getAbsolutePath());
    Assert.assertFalse(sourceFile.exists());
    Status status = invoke(actionEvent, fileArchiveHandler);
    Assert.assertEquals(status, Status.READY);
    Assert.assertFalse(new File(sourceFile.getAbsolutePath()).exists());

    Assert.assertTrue(new File(destPath.getAbsolutePath() + sourceFile.getAbsolutePath()).exists());
    Assert.assertTrue(
        new File(destPath.getAbsolutePath() + sourceFile.getAbsolutePath()).isDirectory());
    FileUtils.deleteDirectory(destPath);
  }