package com.socrata.datasync;

import com.socrata.datasync.config.userpreferences.UserPreferencesJava;
import com.socrata.datasync.publishers.Soda2Publisher;
import com.socrata.exceptions.LongRunningQueryException;
import com.socrata.exceptions.SodaError;
import junit.framework.TestCase;
import org.apache.commons.cli.ParseException;
import org.junit.Test;

import java.io.File;
import java.io.IOException;

/**
 * Author: Adrian Laurenzi
 * Date: 2/10/14
 *
 * This contains integration tests that verify command line/headless mode functionality
 */
public class MainTest extends TestBase {

    @Test
    public void testHeadlessReplaceViaHTTP() throws Exception {
        // Ensures dataset is in known state (2 rows)
        File twoRowsFile = new File("src/test/resources/datasync_unit_test_two_rows.csv");
        Soda2Publisher.replaceNew(createProducer(), createSodaDdl(), UNITTEST_DATASET_ID, twoRowsFile, true);

        String[] args = {"-c", PATH_TO_CONFIG_FILE,
                         "-i", UNITTEST_DATASET_ID,
                         "-f", "src/test/resources/datasync_unit_test_three_rows.csv",
                         "-m", PublishMethod.replace.toString(),
                         "-h", "true",
                         "-pf", "false"};
        Main.main(args);
        TestCase.assertEquals(3, getTotalRows(UNITTEST_DATASET_ID));
    }

    @Test
    public void testRunCommandOutput() {
         String pathToSaveJobFile = "/Users/someone/somedirectory/some.sij";
         String expected = "java -jar \".*\" \"" + pathToSaveJobFile + "\"";
        TestCase.assertTrue(Utils.getRunJobCommand(pathToSaveJobFile).matches(expected));
    }
}
