File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package kr.itn.itnhub;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.jdbc.core.JdbcTemplate;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
class SchemaMigrationTest extends AbstractDbTest {
@Autowired
JdbcTemplate jdbc;
@Test
void organization_테이블이_생성된다() {
Integer count = jdbc.queryForObject(
"select count(*) from information_schema.tables "
+ "where table_schema = 'itnhub' and table_name = 'organization'",
Integer.class);
assertThat(count).isEqualTo(1);
}
@Test
void 연번과_기관명_조합에_유니크_제약이_있다() {
jdbc.update("insert into organization (org_no, org_name, channel_slug) "
+ "values ('008', '경찰청', '008')");
// 같은 (org_no, org_name) 조합의 중복 삽입은 제약 위반으로 실패해야 한다.
assertThatThrownBy(() -> jdbc.update(
"insert into organization (org_no, org_name, channel_slug) "
+ "values ('008', '경찰청', '008-dup')"))
.isInstanceOf(DataIntegrityViolationException.class);
// org_no는 같지만 org_name이 다르면(경찰청_치안정책연구소) 정상적으로 저장되어야 한다.
jdbc.update("insert into organization (org_no, org_name, channel_slug) "
+ "values ('008', '경찰청_치안정책연구소', '008-2')");
assertThat(jdbc.queryForObject(
"select count(*) from organization where org_no = '008'", Integer.class))
.isEqualTo(2);
}
}