/*
* Copyright (c) 2007 NTT DATA Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package jp.terasoluna.fw.message;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.List;
import javax.sql.DataSource;
import org.springframework.test.util.ReflectionTestUtils;
import uk.org.lidalia.slf4jtest.TestLogger;
import uk.org.lidalia.slf4jtest.TestLoggerFactory;
import static uk.org.lidalia.slf4jtest.LoggingEvent.error;
import static java.util.Arrays.asList;
import static org.hamcrest.core.Is.*;
import static org.junit.Assert.*;
import org.junit.Test;
import static org.mockito.Mockito.*;
/**
* {@link jp.terasoluna.fw.message.DBMessageResourceDAOImpl} クラスのブラックボックステスト。
* <p>
* <h4>【クラスの概要】</h4> DBからメッセージリソースを取得するDBMessageResourceDAOの実装クラス
* <p>
* @see jp.terasoluna.fw.message.DBMessageResourceDAOImpl
*/
public class DBMessageResourceDAOImplTest {
private TestLogger logger = TestLoggerFactory.getTestLogger(
DBMessageResourceDAOImpl.class);
/**
* testSetTableName01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) tableName:"test01"<br>
* (状態) this.tableName:"MESSAGES"<br>
* <br>
* 期待値:(状態変化) this.tableName:引数で設定した値<br>
* <br>
* tableName属性のsetterメソッドのテスト。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testSetTableName01() throws Exception {
// 前処理
DBMessageResourceDAOImpl daoImpl = new DBMessageResourceDAOImpl();
daoImpl.tableName = "MESSAGES";
// テスト実施
daoImpl.setTableName("test01");
// 判定
assertEquals("test01", ReflectionTestUtils.getField(daoImpl,
"tableName"));
}
/**
* testSetCodeColumn01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) codeColumn:"test01"<br>
* (状態) this.codeColumn:"CODE"<br>
* <br>
* 期待値:(状態変化) this.codeColumn:引数で設定した値<br>
* <br>
* codeColumn属性のsetterメソッドのテスト。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testSetCodeColumn01() throws Exception {
// 前処理
DBMessageResourceDAOImpl daoImpl = new DBMessageResourceDAOImpl();
daoImpl.codeColumn = "CODE";
// テスト実施
daoImpl.setCodeColumn("test01");
// 判定
assertEquals("test01", ReflectionTestUtils.getField(daoImpl,
"codeColumn"));
}
/**
* testSetLaunguageColumn01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) languageColumn:"test01"<br>
* (状態) this.languageColumn:null<br>
* <br>
* 期待値:(状態変化) this.languageColumn:引数で設定した値<br>
* <br>
* languageColumn属性のsetterメソッドのテスト。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testSetLaunguageColumn01() throws Exception {
// 前処理
DBMessageResourceDAOImpl daoImpl = new DBMessageResourceDAOImpl();
daoImpl.languageColumn = null;
// テスト実施
daoImpl.setLanguageColumn("test01");
// 判定
assertEquals("test01", ReflectionTestUtils.getField(daoImpl,
"languageColumn"));
}
/**
* testSetCountryColumn01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) countryColumn:"test01"<br>
* (状態) this.countryColumn:null<br>
* <br>
* 期待値:(状態変化) this.countryColumn:引数で設定した値<br>
* <br>
* countryColumn属性のsetterメソッドのテスト。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testSetCountryColumn01() throws Exception {
// 前処理
DBMessageResourceDAOImpl daoImpl = new DBMessageResourceDAOImpl();
daoImpl.countryColumn = null;
// テスト実施
daoImpl.setCountryColumn("test01");
// 判定
assertEquals("test01", ReflectionTestUtils.getField(daoImpl,
"countryColumn"));
}
/**
* testSetVariantColumn01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) variantColumn:"test01"<br>
* (状態) this.variantColumn:null<br>
* <br>
* 期待値:(状態変化) this.variantColumn:引数で設定した値<br>
* <br>
* variantColumn属性のsetterメソッドのテスト。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testSetVariantColumn01() throws Exception {
// 前処理
DBMessageResourceDAOImpl daoImpl = new DBMessageResourceDAOImpl();
daoImpl.variantColumn = null;
// テスト実施
daoImpl.setVariantColumn("test01");
// 判定
assertEquals("test01", ReflectionTestUtils.getField(daoImpl,
"variantColumn"));
}
/**
* testSetMessageColumn01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) messageColumn:"test01"<br>
* (状態) this.messageColumn:"MESSAGE"<br>
* <br>
* 期待値:(状態変化) this.messageColumn:引数で設定した値<br>
* <br>
* messageColumn属性のsetterメソッドのテスト。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testSetMessageColumn01() throws Exception {
// 前処理
DBMessageResourceDAOImpl daoImpl = new DBMessageResourceDAOImpl();
daoImpl.messageColumn = "MESSAGE";
// テスト実施
daoImpl.setMessageColumn("test01");
// 判定
assertEquals("test01", ReflectionTestUtils.getField(daoImpl,
"messageColumn"));
}
/**
* testSetFindMessageSql01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) findMessageSql:"test01"<br>
* (状態) this.findMessageSql:null<br>
* <br>
* 期待値:(状態変化) this.findMessageSql:引数で設定した値<br>
* <br>
* findMessageSql属性のsetterメソッドのテスト。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testSetFindMessageSql01() throws Exception {
// 前処理
DBMessageResourceDAOImpl daoImpl = new DBMessageResourceDAOImpl();
daoImpl.findMessageSql = null;
// テスト実施
daoImpl.setFindMessageSql("test01");
// 判定
assertEquals("test01", ReflectionTestUtils.getField(daoImpl,
"findMessageSql"));
}
/**
* testInitDao01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(状態) getDataSource():not null<br>
* (状態) makeSql():"SELECT FOO FROM BAR"<br>
* (状態) dBMessageQuery:null<br>
* (状態) codeColumn:"CODE"<br>
* (状態) languageColumn:"LANGUAGE"<br>
* (状態) countryColumn:"COUNTRY"<br>
* (状態) variantColumn:"VARIANT"<br>
* (状態) messageColumn:"MESSAGE"<br>
* <br>
* 期待値:(状態変化) DBMessageQuery:DBMessageQueryオブジェクトが生成される。 <br>
* <br>
* DBMessageQueryが呼び出され、this.dBMessageQueryに格納されることを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testInitDao01() throws Exception {
// 前処理
DataSource dataSource = mock(DataSource.class);
DBMessageResourceDAOImpl_JdbcTemplateStub01 jdbc = new DBMessageResourceDAOImpl_JdbcTemplateStub01();
DBMessageResourceDAOImpl_DBMessageResourceDAOImplStub01 dbmr = new DBMessageResourceDAOImpl_DBMessageResourceDAOImplStub01();
jdbc.ds = dataSource;
ReflectionTestUtils.setField(dbmr, "jdbcTemplate", jdbc);
dbmr.dBMessageQuery = null;
dbmr.codeColumn = "CODE";
dbmr.languageColumn = "LANGUAGE";
dbmr.countryColumn = "COUNTRY";
dbmr.variantColumn = "VARIANT";
dbmr.messageColumn = "MESSAGE";
// テスト実施
dbmr.initDao();
// 判定
DBMessageQuery query = dbmr.dBMessageQuery;
assertEquals("CODE", query.rsCodeColumn);
assertEquals("LANGUAGE", query.rsLanguageColumn);
assertEquals("COUNTRY", query.rsCountryColumn);
assertEquals("VARIANT", query.rsVariantColumn);
assertEquals("MESSAGE", query.rsMessageColumn);
assertTrue(dbmr.isRead);
}
/**
* testInitDao02() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(状態) getDataSource():null<br>
* (状態) makeSql():"SELECT FOO FROM BAR"<br>
* (状態) dBMessageQuery:null<br>
* (状態) codeColumn:"CODE"<br>
* (状態) languageColumn:null<br>
* (状態) countryColumn:null<br>
* (状態) variantColumn:null<br>
* (状態) messageColumn:"MESSAGE"<br>
* <br>
* 期待値:(状態変化) DBMessageQuery:ー<br>
* (状態変化) 例外:illgalArgumentExceptionが発生することを確認する。 <br>
* <メッセージ><br>
* Missing dataSource in spring configuration file.<br>
* (状態変化) ログ:【エラーログ】<br>
* <メッセージ><br>
* Missing dataSource in spring configuration file.<br>
* <br>
* DBMessageQueryが呼び出されず、例外が発生することを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testInitDao02() throws Exception {
// 前処理
DBMessageResourceDAOImpl_JdbcTemplateStub01 jdbc = new DBMessageResourceDAOImpl_JdbcTemplateStub01();
DBMessageResourceDAOImpl_DBMessageResourceDAOImplStub01 dbmr = new DBMessageResourceDAOImpl_DBMessageResourceDAOImplStub01();
jdbc.ds = null;
dbmr.dBMessageQuery = null;
dbmr.codeColumn = "CODE";
dbmr.languageColumn = "LANGUAGE";
dbmr.countryColumn = "COUNTRY";
dbmr.variantColumn = "VARIANT";
dbmr.messageColumn = "MESSAGE";
// テスト実施
try {
dbmr.initDao();
fail();
} catch (IllegalArgumentException e) {
// 判定
assertEquals("Missing dataSource in spring configuration file.", e
.getMessage());
assertThat(logger.getLoggingEvents(), is(asList(error(
"Missing dataSource in spring configuration file."))));
}
}
/**
* testInitDao03() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(状態) getDataSource():not null<br>
* (状態) makeSql():"SELECT FOO FROM BAR"<br>
* (状態) dBMessageQuery:null<br>
* (状態) codeColumn:"CODE"<br>
* (状態) languageColumn:null<br>
* (状態) countryColumn:null<br>
* (状態) variantColumn:null<br>
* (状態) messageColumn:"MESSAGE"<br>
* <br>
* 期待値:(状態変化) DBMessageQuery:DBMessageQueryオブジェクトが生成される。 <br>
* <br>
* DBMessageQueryが呼び出され、this.dBMessageQueryに格納されることを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testInitDao03() throws Exception {
// 前処理
DataSource dataSource = mock(DataSource.class);
DBMessageResourceDAOImpl_JdbcTemplateStub01 jdbc = new DBMessageResourceDAOImpl_JdbcTemplateStub01();
DBMessageResourceDAOImpl_DBMessageResourceDAOImplStub01 dbmr = new DBMessageResourceDAOImpl_DBMessageResourceDAOImplStub01();
jdbc.ds = dataSource;
ReflectionTestUtils.setField(dbmr, "jdbcTemplate", jdbc);
dbmr.dBMessageQuery = null;
dbmr.codeColumn = "CODE";
dbmr.languageColumn = null;
dbmr.countryColumn = null;
dbmr.variantColumn = null;
dbmr.messageColumn = "MESSAGE";
// テスト実施
dbmr.initDao();
// 判定
// 判定
DBMessageQuery query = dbmr.dBMessageQuery;
assertEquals("CODE", query.rsCodeColumn);
assertNull(query.rsLanguageColumn);
assertNull(query.rsCountryColumn);
assertNull(query.rsVariantColumn);
assertEquals("MESSAGE", query.rsMessageColumn);
assertTrue(dbmr.isRead);
}
/**
* testMakeSql01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(状態) codeColumn:"CODE"<br>
* (状態) languageColumn:"LANGUAGE"<br>
* (状態) countryColumn:"COUNTRY"<br>
* (状態) variantColumn:"VARIANT"<br>
* (状態) messageColumn:"MESSAGE"<br>
* (状態) tableName:"MESSAGES"<br>
* (状態) findMessageSql:null<br>
* <br>
* 期待値:(戻り値) sql:"SELECT CODE,LANGUAGE,COUNTRY,VARIANT,MESSAGE FROM MESSAGES"<br>
* <br>
* 引数としてあたえられた文字列からSQL文を作成し、Stringで返却する。<br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testMakeSql01() throws Exception {
// 前処理
DBMessageResourceDAOImpl dbmr = new DBMessageResourceDAOImpl();
dbmr.codeColumn = "CODE";
dbmr.languageColumn = "LANGUAGE";
dbmr.countryColumn = "COUNTRY";
dbmr.variantColumn = "VARIANT";
dbmr.messageColumn = "MESSAGE";
dbmr.tableName = "MESSAGES";
dbmr.findMessageSql = null;
// テスト実施
String sql = dbmr.makeSql();
// 判定
assertEquals(
"SELECT CODE,LANGUAGE,COUNTRY,VARIANT,MESSAGE FROM MESSAGES",
sql);
}
/**
* testMakeSql02() <br>
* <br>
* (異常系) <br>
* 観点:G<br>
* <br>
* 入力値:(状態) codeColumn:""<br>
* (状態) languageColumn:"LANGUAGE"<br>
* (状態) countryColumn:"COUNTRY"<br>
* (状態) variantColumn:"VARIANT"<br>
* (状態) messageColumn:"MESSAGE"<br>
* (状態) tableName:"MESSAGES"<br>
* (状態) findMessageSql:null<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException:<br>
* <メッセージ><br>
* "codeColumn is illegalAurgument"<br>
* (状態変化) ログ:【エラーログ】<br>
* <メッセージ><br>
* "codeColumn is illegalAurgument"<br>
* <br>
* コードカラムが空文字のため、呼び出し先メソッドにて停止する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testMakeSql02() throws Exception {
// 前処理
DBMessageResourceDAOImpl dbmr = new DBMessageResourceDAOImpl();
dbmr.codeColumn = "";
dbmr.languageColumn = "LANGUAGE";
dbmr.countryColumn = "COUNTRY";
dbmr.variantColumn = "VARIANT";
dbmr.messageColumn = "MESSAGE";
dbmr.tableName = "MESSAGES";
dbmr.findMessageSql = null;
// テスト実施
try {
logger.clear();
dbmr.makeSql();
fail();
} catch (IllegalArgumentException e) {
// 判定
assertEquals("illegalArgument: codeColumn is null or empty.", e
.getMessage());
assertThat(logger.getLoggingEvents(), is(asList(error(
"illegalArgument: codeColumn is null or empty."))));
}
}
/**
* testMakeSql03() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(状態) codeColumn:null<br>
* (状態) languageColumn:"LANGUAGE"<br>
* (状態) countryColumn:"COUNTRY"<br>
* (状態) variantColumn:"VARIANT"<br>
* (状態) messageColumn:"MESSAGE"<br>
* (状態) tableName:"MESSAGES"<br>
* (状態) findMessageSql:null<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException:<br>
* <メッセージ><br>
* "codeColumn is illegalArgument"<br>
* (状態変化) ログ:【エラーログ】<br>
* <メッセージ><br>
* "codeColumn is illegalArgument"<br>
* <br>
* コードカラムがnullのため、呼び出し先メソッドにて停止する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testMakeSql03() throws Exception {
// 前処理
DBMessageResourceDAOImpl dbmr = new DBMessageResourceDAOImpl();
dbmr.codeColumn = null;
dbmr.languageColumn = "LANGUAGE";
dbmr.countryColumn = "COUNTRY";
dbmr.variantColumn = "VARIANT";
dbmr.messageColumn = "MESSAGE";
dbmr.tableName = "MESSAGES";
dbmr.findMessageSql = null;
// テスト実施
try {
logger.clear();
dbmr.makeSql();
fail();
} catch (IllegalArgumentException e) {
// 判定
assertEquals("illegalArgument: codeColumn is null or empty.", e
.getMessage());
assertThat(logger.getLoggingEvents(), is(asList(error(
"illegalArgument: codeColumn is null or empty."))));
}
}
/**
* testMakeSql04() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(状態) codeColumn:"CODE"<br>
* (状態) languageColumn:""<br>
* (状態) countryColumn:null<br>
* (状態) variantColumn:null<br>
* (状態) messageColumn:null<br>
* (状態) tableName:"MESSAGES"<br>
* (状態) findMessageSql:null<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException:<br>
* <メッセージ><br>
* "languageColumn is illegalArgument"<br>
* (状態変化) ログ:【エラーログ】<br>
* <メッセージ><br>
* "languageColumn is illegalArgument"<br>
* <br>
* 言語カラムが空文字のため、呼び出し先メソッドにて停止する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testMakeSql04() throws Exception {
// 前処理
DBMessageResourceDAOImpl dbmr = new DBMessageResourceDAOImpl();
dbmr.codeColumn = "CODE";
dbmr.languageColumn = "";
dbmr.countryColumn = null;
dbmr.variantColumn = null;
dbmr.messageColumn = null;
dbmr.tableName = "MESSAGES";
dbmr.findMessageSql = null;
// テスト実施
try {
logger.clear();
dbmr.makeSql();
fail();
} catch (IllegalArgumentException e) {
// 判定
assertEquals("illegalArgument: languageColumn is empty.", e
.getMessage());
assertThat(logger.getLoggingEvents(), is(asList(error(
"illegalArgument: languageColumn is empty."))));
}
}
/**
* testMakeSql05() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(状態) codeColumn:"CODE"<br>
* (状態) languageColumn:null<br>
* (状態) countryColumn:""<br>
* (状態) variantColumn:null<br>
* (状態) messageColumn:null<br>
* (状態) tableName:"MESSAGES"<br>
* (状態) findMessageSql:null<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException:<br>
* <メッセージ><br>
* "countryColumn is illegalArgument"<br>
* (状態変化) ログ:【エラーログ】<br>
* <メッセージ><br>
* "countryColumn is illegalArgument"<br>
* <br>
* 国カラムが空文字のため、呼び出し先メソッドにて停止する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testMakeSql05() throws Exception {
// 前処理
DBMessageResourceDAOImpl dbmr = new DBMessageResourceDAOImpl();
dbmr.codeColumn = "CODE";
dbmr.languageColumn = null;
dbmr.countryColumn = "";
dbmr.variantColumn = null;
dbmr.messageColumn = null;
dbmr.tableName = "MESSAGES";
dbmr.findMessageSql = null;
// テスト実施
try {
logger.clear();
dbmr.makeSql();
fail();
} catch (IllegalArgumentException e) {
// 判定
assertEquals("illegalArgument: countryColumn is empty.", e
.getMessage());
assertThat(logger.getLoggingEvents(), is(asList(error(
"illegalArgument: countryColumn is empty."))));
}
}
/**
* testMakeSql06() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(状態) codeColumn:"CODE"<br>
* (状態) languageColumn:null<br>
* (状態) countryColumn:null<br>
* (状態) variantColumn:""<br>
* (状態) messageColumn:null<br>
* (状態) tableName:"MESSAGES"<br>
* (状態) findMessageSql:null<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException:<br>
* <メッセージ><br>
* "variantColumn is illegalArgument"<br>
* (状態変化) ログ:【エラーログ】<br>
* <メッセージ><br>
* "variantColumn is illegalArgument"<br>
* <br>
* バリアントカラムが空文字のため、呼び出し先メソッドにて停止する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testMakeSql06() throws Exception {
// 前処理
DBMessageResourceDAOImpl dbmr = new DBMessageResourceDAOImpl();
dbmr.codeColumn = "CODE";
dbmr.languageColumn = null;
dbmr.countryColumn = null;
dbmr.variantColumn = "";
dbmr.messageColumn = null;
dbmr.tableName = "MESSAGES";
dbmr.findMessageSql = null;
// テスト実施
try {
logger.clear();
dbmr.makeSql();
fail();
} catch (IllegalArgumentException e) {
// 判定
assertEquals("illegalArgument: variantColumn is empty.", e
.getMessage());
assertThat(logger.getLoggingEvents(), is(asList(error(
"illegalArgument: variantColumn is empty."))));
}
}
/**
* testMakeSql07() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(状態) codeColumn:"CODE"<br>
* (状態) languageColumn:null<br>
* (状態) countryColumn:null<br>
* (状態) variantColumn:null<br>
* (状態) messageColumn:""<br>
* (状態) tableName:"MESSAGES"<br>
* (状態) findMessageSql:null<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException:<br>
* <メッセージ><br>
* "messageColumn is illegalArgument"<br>
* (状態変化) ログ:【エラーログ】<br>
* <メッセージ><br>
* "messageColumn is illegalArgument"<br>
* <br>
* メッセージカラムが空文字のため、呼び出し先メソッドにて停止する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testMakeSql07() throws Exception {
// 前処理
DBMessageResourceDAOImpl dbmr = new DBMessageResourceDAOImpl();
dbmr.codeColumn = "CODE";
dbmr.languageColumn = null;
dbmr.countryColumn = null;
dbmr.variantColumn = null;
dbmr.messageColumn = "";
dbmr.tableName = "MESSAGES";
dbmr.findMessageSql = null;
// テスト実施
try {
logger.clear();
dbmr.makeSql();
fail();
} catch (IllegalArgumentException e) {
// 判定
assertEquals("illegalArgument: messageColumn is null or empty.", e
.getMessage());
assertThat(logger.getLoggingEvents(), is(asList(error(
"illegalArgument: messageColumn is null or empty."))));
}
}
/**
* testMakeSql08() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(状態) codeColumn:"CODE"<br>
* (状態) languageColumn:null<br>
* (状態) countryColumn:null<br>
* (状態) variantColumn:null<br>
* (状態) messageColumn:null<br>
* (状態) tableName:"MESSAGES"<br>
* (状態) findMessageSql:null<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException:<br>
* <メッセージ><br>
* "MessageColumn is illegalArgument"<br>
* (状態変化) ログ:【エラーログ】<br>
* <メッセージ><br>
* "MessageColumn is illegalArgument"<br>
* <br>
* メッセージカラムがnullのため、呼び出し先メソッドにて停止する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testMakeSql08() throws Exception {
// 前処理
DBMessageResourceDAOImpl dbmr = new DBMessageResourceDAOImpl();
dbmr.codeColumn = "CODE";
dbmr.languageColumn = null;
dbmr.countryColumn = null;
dbmr.variantColumn = null;
dbmr.messageColumn = null;
dbmr.tableName = "MESSAGES";
dbmr.findMessageSql = null;
// テスト実施
try {
logger.clear();
dbmr.makeSql();
fail();
} catch (IllegalArgumentException e) {
// 判定
assertEquals("illegalArgument: messageColumn is null or empty.", e
.getMessage());
assertThat(logger.getLoggingEvents(), is(asList(error(
"illegalArgument: messageColumn is null or empty."))));
}
}
/**
* testMakeSql09() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(状態) codeColumn:"CODE"<br>
* (状態) languageColumn:null<br>
* (状態) countryColumn:null<br>
* (状態) variantColumn:null<br>
* (状態) messageColumn:"MESSAGE"<br>
* (状態) tableName:""<br>
* (状態) findMessageSql:null<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException:<br>
* <メッセージ><br>
* "tableName is illegalArgument"<br>
* (状態変化) ログ:【エラーログ】<br>
* <メッセージ><br>
* "tableName is illegalArgument"<br>
* <br>
* テーブル名が空文字のため、呼び出し先メソッドにて停止する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testMakeSql09() throws Exception {
// 前処理
DBMessageResourceDAOImpl dbmr = new DBMessageResourceDAOImpl();
dbmr.codeColumn = "CODE";
dbmr.languageColumn = null;
dbmr.countryColumn = null;
dbmr.variantColumn = null;
dbmr.messageColumn = "MESSAGE";
dbmr.tableName = "";
dbmr.findMessageSql = null;
// テスト実施
try {
logger.clear();
dbmr.makeSql();
fail();
} catch (IllegalArgumentException e) {
// 判定
assertEquals("illegalArgument: tableName is null or empty.", e
.getMessage());
assertThat(logger.getLoggingEvents(), is(asList(error(
"illegalArgument: tableName is null or empty."))));
}
}
/**
* testMakeSql10() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(状態) codeColumn:"CODE"<br>
* (状態) languageColumn:null<br>
* (状態) countryColumn:null<br>
* (状態) variantColumn:null<br>
* (状態) messageColumn:"MESSAGE"<br>
* (状態) tableName:null<br>
* (状態) findMessageSql:null<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException:<br>
* <メッセージ><br>
* "tableName is illegalArgument"<br>
* (状態変化) ログ:【エラーログ】<br>
* <メッセージ><br>
* "tableName is illegalArgument"<br>
* <br>
* テーブル名がnullのため、呼び出し先メソッドにて停止する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testMakeSql10() throws Exception {
// 前処理
DBMessageResourceDAOImpl dbmr = new DBMessageResourceDAOImpl();
dbmr.codeColumn = "CODE";
dbmr.languageColumn = null;
dbmr.countryColumn = null;
dbmr.variantColumn = null;
dbmr.messageColumn = "MESSAGE";
dbmr.tableName = null;
dbmr.findMessageSql = null;
// テスト実施
try {
logger.clear();
dbmr.makeSql();
fail();
} catch (IllegalArgumentException e) {
// 判定
assertEquals("illegalArgument: tableName is null or empty.", e
.getMessage());
assertThat(logger.getLoggingEvents(), is(asList(error(
"illegalArgument: tableName is null or empty."))));
}
}
/**
* testMakeSql11() <br>
* <br>
* (正常系) <br>
* 観点:A,F <br>
* <br>
* 入力値:(状態) codeColumn:"CODE"<br>
* (状態) languageColumn:null<br>
* (状態) countryColumn:null<br>
* (状態) variantColumn:null<br>
* (状態) messageColumn:"MESSAGE"<br>
* (状態) tableName:"MESSAGES"<br>
* (状態) findMessageSql:"SELECT CODE,LANGUAGE,COUNTRY,VARIANT,MESSAGE FROM MESSAGES"<br>
* <br>
* 期待値:(戻り値) sql:"SELECT CODE,LANGUAGE,COUNTRY,VARIANT,MESSAGE FROM MESSAGES"<br>
* <br>
* 引数としてあたえられたSQL文を、Stringで返却する。<br>
* SQL文生成ロジックは使用しない。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testMakeSql11() throws Exception {
// 前処理
DBMessageResourceDAOImpl dbmr = new DBMessageResourceDAOImpl();
String sql = "SELECT CODE,LANGUAGE,COUNTRY,VARIANT,MESSAGE FROM MESSAGES";
dbmr.codeColumn = "CODE";
dbmr.languageColumn = null;
dbmr.countryColumn = null;
dbmr.variantColumn = null;
dbmr.messageColumn = "MESSAGE";
dbmr.tableName = "MESSAGES";
dbmr.findMessageSql = sql;
// テスト実施
String sqlReturn = dbmr.makeSql();
// 判定
assertEquals(sql, sqlReturn);
}
/**
* testFindDBMessages01() <br>
* <br>
* (正常系) <br>
* 観点:E <br>
* <br>
* 入力値:(状態) dBmessageQuery:not null<br>
* <br>
* 期待値:(戻り値) dBMessageQuery.execute()の結果<br>
* <br>
* executeメソッドが呼び出され、戻り値返ってくることを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testFindDBMessages01() throws Exception {
// 前処理
DataSource ds = mock(DataSource.class);
DBMessageResourceDAOImpl_DBMessageQueryStub01 query = new DBMessageResourceDAOImpl_DBMessageQueryStub01(ds, "SELECT CODE,MESSAGE FROM MESSAGES", "CODE", "LANGUAGE", "COUNTRY", "VARIANT", "MESSAGE");
DBMessageResourceDAOImpl dbmr = new DBMessageResourceDAOImpl();
dbmr.dBMessageQuery = query;
List<String> list = new ArrayList<String>();
list.add("success");
query.list = list;
// テスト実施
List<?> listReturn = dbmr.findDBMessages();
// 判定
assertSame(list, listReturn);
}
}