package jp.terasoluna.fw.file.dao.standard;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import jp.terasoluna.fw.file.dao.FileLineWriter;
import org.springframework.test.util.ReflectionTestUtils;
/**
* {@link jp.terasoluna.fw.file.dao.standard.FixedFileUpdateDAO} クラスのテスト。
* <p>
* <h4>【クラスの概要】</h4> 固定長ファイル用のFileLineWriterを生成する。<br>
* AbstractFileUpdateDAOのサブクラス。
* <p>
* @see jp.terasoluna.fw.file.dao.standard.FixedFileUpdateDAO
*/
public class FixedFileUpdateDAOTest {
/**
* testExecute01() <br>
* <br>
* (正常系) <br>
* 観点:E <br>
* <br>
* 入力値:(引数) fileName:not null かつ""(空文字)でない<br>
* Stringインスタンス<br>
* "aaa"<br>
* (引数) clazz: not null(FileFormatアノテーションを持つスタブを使用)<br>
* (状態) getColumnFormatterMap():以下の要素を持つMap<String, ColumnFormatter>インスタンス<br>
* ・"java.lang.String"=NullColumnFormatterインスタンス<br>
* <br>
* 期待値:(戻り値) fileLineWriter:FixedFileLineWriterのインスタンス<br>
* (状態変化) FixedFileLineWriter#FixedFileLineWriter(): 1回呼ばれる<br>
* 引数を確認する<br>
* <br>
* 正常パターン<br>
* 引数がそれぞれnot nullであれば、戻り値が帰ってくることを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testExecute01() throws Exception {
// テスト対象のインスタンス化
FixedFileUpdateDAO fileUpdateDAO = new FixedFileUpdateDAO();
// 引数の設定
String fileName = "aaa";
Class<FixedFileUpdateDAO_Stub01> clazz = FixedFileUpdateDAO_Stub01.class;
// 前提条件の設定
Map<String, ColumnFormatter> columnFormatterMap = new HashMap<String, ColumnFormatter>();
columnFormatterMap.put("java.lang.String", new NullColumnFormatter());
ReflectionTestUtils.setField(fileUpdateDAO, "columnFormatterMap",
columnFormatterMap);
// テスト実施
FileLineWriter<FixedFileUpdateDAO_Stub01> fileLineWriter = fileUpdateDAO
.execute(fileName, clazz);
// 返却値の確認
assertEquals(FixedFileLineWriter.class.getName(), fileLineWriter
.getClass().getName());
// 状態変化の確認
assertSame(fileName, ReflectionTestUtils.getField(fileLineWriter,
"fileName"));
assertSame(clazz, ReflectionTestUtils.getField(fileLineWriter,
"clazz"));
assertSame(columnFormatterMap, ReflectionTestUtils.getField(
fileLineWriter, "columnFormatterMap"));
// 後処理
fileLineWriter.closeFile();
// テスト後ファイルを削除
File file = new File("aaa");
file.delete();
}
}