package com.five;

import static org.junit.Assert.*;

import java.io.File;

import org.dbunit.Assertion;
import org.dbunit.IDatabaseTester;
import org.dbunit.JdbcDatabaseTester;
import org.dbunit.database.QueryDataSet;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.ITable;
import org.dbunit.dataset.SortedTable;
import org.dbunit.dataset.excel.XlsDataSet;
import org.dbunit.operation.DatabaseOperation;
import org.junit.Before;
import org.junit.Test;

public class DatabaseRepositoryTest {

	private final String driver = "com.mysql.jdbc.Driver";
	private final String protocol="jdbc:mysql://221.150.127.106:3306/DATAACCESS";
	private final String userName="root";
	private final String password="ever1234";
		
	private IDatabaseTester databaseTester;
	
	@Before
	public void setUp() throws Exception{
		databaseTester = new JdbcDatabaseTester(driver,protocol,userName,password);
		try{
			IDataSet dataSet = new XlsDataSet(new File("src/test/resources/com/오장/seller.xls"));
			DatabaseOperation.CLEAN_INSERT.execute(databaseTester.getConnection(), dataSet);
		}finally{
			databaseTester.getConnection().close();
		}
	}
	
	@Test
	public void testDB() throws Exception{
	   /* 
		* 1. 첫번째 방법
			ITable actualTable = databaseTester.getConnection().createDataSet().getTable("seller");
		*/
	   /*
	    * 2. 두번째 방법
	    	QueryDataSet dataSet = new QueryDataSet(databaseTester.getConnection());
			dataSet.addTable("seller","select id,name,email from seller");
			ITable actualTable = dataSet.getTable("seller");
	    */
	   /*
	    * 3. 두번째 방법
	        ITable actualTable = databaseTester.getConnection().createQueryTable("seller","select id,name,email from seller");
	    */
		
	   /* 4. 네번째 방법 */
		
		ITable actualTable = databaseTester.getConnection().createTable("seller");
		
		IDataSet expectedDataSet = new XlsDataSet(new File("src/test/resources/com/오장/seller.xls"));
		ITable expectedTable = expectedDataSet.getTable("seller");
		
		Assertion.assertEquals(new SortedTable(expectedTable), actualTable);
	}
}