package com.w11k.lsql.tests;
import com.google.common.base.Optional;
import com.w11k.lsql.Column;
import com.w11k.lsql.Table;
import com.w11k.lsql.validation.AbstractValidationError;
import com.w11k.lsql.validation.KeyError;
import com.w11k.lsql.validation.StringTooLongError;
import com.w11k.lsql.validation.TypeError;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
public class ValidationTest extends AbstractLSqlTest {
@Test
public void wrongColumnName() {
createTable("CREATE TABLE table1 (age INT)");
Table table1 = lSql.table("table1");
Optional<? extends AbstractValidationError> validation = table1.validate("wrong", 1);
assertTrue(validation.isPresent());
assertEquals(validation.get().getClass(), KeyError.class);
}
@Test
public void wrongColumnValueType() {
createTable("CREATE TABLE table1 (age INT)");
Table table1 = lSql.table("table1");
Column age = table1.column("age");
Optional<? extends AbstractValidationError> validation = age.validateValue("1");
assertTrue(validation.isPresent());
assertEquals(validation.get().getClass(), TypeError.class);
}
@Test
public void stringValueIsTooLong() {
createTable("CREATE TABLE table1 (name VARCHAR(5))");
Table table1 = lSql.table("table1");
Column age = table1.column("name");
Optional<? extends AbstractValidationError> validation = age.validateValue("12345");
assertFalse(validation.isPresent());
validation = age.validateValue("123456");
assertTrue(validation.isPresent());
assertEquals(validation.get().getClass(), StringTooLongError.class);
}
}