@Test
  public void shouldSeeFinishedStateForAsncImport() throws InterruptedException {
    // given
    final ImportConfig config = new ImportConfig();
    config.setScript( //
        "INSERT Title;code[unique=true]\n" //
            + ";foo;\n" //
            + "\"#% java.lang.Thread.sleep(2000);\";\n" //
            + ";bar;\n" //
        );
    config.setSynchronous(false);
    config.setFailOnError(true);
    config.setRemoveOnSuccess(false);
    config.setEnableCodeExecution(Boolean.TRUE);

    // when
    final long now = System.currentTimeMillis();
    final ImportResult importResult = importService.importData(config);
    final long maxWait = System.currentTimeMillis() + (30 * 1000);
    do {
      Thread.sleep(500);
    } while (!importResult.isFinished() && System.currentTimeMillis() < maxWait);

    // then
    assertThat(System.currentTimeMillis() - now).isGreaterThanOrEqualTo(2000);
    assertThat(importResult.isFinished()).isTrue();
    assertThat(importResult.isError()).isFalse();
  }
  @Test
  public void shouldImportScriptWithLegacyModeOffWhenGlobalSwitchIsOnUsingImportConfig() {
    // given
    Config.setParameter(ImpExConstants.Params.LEGACY_MODE_KEY, "true");
    final ImpExResource mediaRes =
        new StreamBasedImpExResource(
            new ByteArrayInputStream("INSERT Language;isocode;active\n;test;true".getBytes()),
            CSVConstants.HYBRIS_ENCODING);
    final ImportConfig config = new ImportConfig();
    config.setLegacyMode(Boolean.FALSE);
    config.setSynchronous(true);
    config.setFailOnError(true);
    config.setScript(mediaRes);
    config.setRemoveOnSuccess(false);

    // when
    final ImportResult importResult = importService.importData(config);

    // then
    assertThat(importResult.isFinished()).isTrue();
    assertThat(importResult.isError()).isFalse();
    assertThat(Boolean.parseBoolean(Config.getParameter(ImpExConstants.Params.LEGACY_MODE_KEY)))
        .isTrue();
    assertThat(importResult.getCronJob().getLegacyMode()).isFalse();
  }