package azkaban.test.utils;

import java.io.File;

import org.apache.log4j.Logger;
import org.junit.Assert;
import org.junit.Test;

import azkaban.utils.DirectoryFlowLoader;

public class DirectoryFlowLoaderTest {

	@Test
	public void testDirectoryLoad() {
		Logger logger = Logger.getLogger(this.getClass());
		DirectoryFlowLoader loader = new DirectoryFlowLoader(logger);
		
		loader.loadProjectFlow(new File("unit/executions/exectest1"));
		logger.info(loader.getFlowMap().size());
	}
	
	@Test
	public void testLoadEmbeddedFlow() {
		Logger logger = Logger.getLogger(this.getClass());
		DirectoryFlowLoader loader = new DirectoryFlowLoader(logger);
		
		loader.loadProjectFlow(new File("unit/executions/embedded"));
		Assert.assertEquals(0, loader.getErrors().size());
	}
	
	@Test
	public void testRecursiveLoadEmbeddedFlow() {
		Logger logger = Logger.getLogger(this.getClass());
		DirectoryFlowLoader loader = new DirectoryFlowLoader(logger);
		
		loader.loadProjectFlow(new File("unit/executions/embeddedBad"));
		for (String error: loader.getErrors()) {
			System.out.println(error);
		}
		
		// Should be 3 errors: jobe->innerFlow, innerFlow->jobe, innerFlow
		Assert.assertEquals(3, loader.getErrors().size());
	}
}
