package com.github.ryhmrt.mssqldiff.convertor;
import static org.junit.Assert.assertEquals;
import java.util.List;
import org.junit.Test;
import com.github.ryhmrt.mssqldiff.csv.SchemaCsv;
import com.github.ryhmrt.mssqldiff.data.Column;
import com.github.ryhmrt.mssqldiff.data.Permission;
import com.github.ryhmrt.mssqldiff.data.Table;
public class TableConvertorTest {
@Test
public void testConvert() {
SchemaCsv csv = new SchemaCsv();
csv.setTableName("tableName");
csv.setObjectType("U");
csv.setTableDescription("tableDescription");
csv.setColumnName("columnName");
csv.setColumnType("columnType");
csv.setLength(99);
csv.setPk(true);
csv.setIdentity(true);
csv.setNullable(true);
csv.setDefaultValue("defaultValue");
csv.setColumnDescription("columnDescription");
csv.setUserName("userName");
csv.setCanSelect(true);
csv.setCanInsert(true);
csv.setCanUpdate(true);
csv.setCanDelete(true);
TableConvertor target = new TableConvertor();
Table table = target.convert(csv);
assertEquals("tableName", table.getName());
assertEquals("U", table.getType());
assertEquals("tableDescription", table.getDescription());
}
@Test
public void testConvertWithColumn() {
SchemaCsv csv = new SchemaCsv();
csv.setTableName("tableName");
csv.setObjectType("U");
csv.setTableDescription("tableDescription");
csv.setColumnName("columnName");
csv.setColumnType("columnType");
csv.setLength(99);
csv.setPk(true);
csv.setIdentity(true);
csv.setNullable(true);
csv.setDefaultValue("defaultValue");
csv.setColumnDescription("columnDescription");
csv.setUserName("userName");
csv.setCanSelect(true);
csv.setCanInsert(true);
csv.setCanUpdate(true);
csv.setCanDelete(true);
TableConvertor target = new TableConvertor();
Table table = target.convert(csv);
assertEquals("tableName", table.getName());
assertEquals("U", table.getType());
assertEquals("tableDescription", table.getDescription());
List<Column> columns = table.getColumns();
assertEquals(1, columns.size());
Column column = columns.get(0);
assertEquals("tableName", column.getTableName());
assertEquals("columnName", column.getName());
assertEquals("columnType",column.getType());
assertEquals(99, column.getLength());
assertEquals(true, column.isPk());
assertEquals(true, column.isIdentity());
assertEquals(true, column.isNullable());
assertEquals("defaultValue",column.getDefaultValue());
assertEquals("columnDescription", column.getDescription());
}
@Test
public void testConvertWithPermission() {
SchemaCsv csv = new SchemaCsv();
csv.setTableName("tableName");
csv.setObjectType("U");
csv.setTableDescription("tableDescription");
csv.setColumnName("tableName");
csv.setColumnType("columnType");
csv.setLength(99);
csv.setPk(true);
csv.setIdentity(true);
csv.setNullable(true);
csv.setDefaultValue("defaultValue");
csv.setColumnDescription("columnDescription");
csv.setUserName("userName");
csv.setCanSelect(true);
csv.setCanInsert(true);
csv.setCanUpdate(true);
csv.setCanDelete(true);
TableConvertor target = new TableConvertor();
Table table = target.convert(csv);
assertEquals("tableName", table.getName());
assertEquals("U", table.getType());
assertEquals("tableDescription", table.getDescription());
List<Permission> permissions = table.getPermissions();
assertEquals(1, permissions.size());
Permission permission = permissions.get(0);
assertEquals("tableName", permission.getTableName());
assertEquals("userName", permission.getUserName());
assertEquals(true, permission.isCanSelect());
assertEquals(true, permission.isCanInsert());
assertEquals(true, permission.isCanUpdate());
assertEquals(true, permission.isCanDelete());
}
@Test
public void testConvertWithoutPermission1() {
SchemaCsv csv = new SchemaCsv();
csv.setTableName("tableName");
csv.setObjectType("U");
csv.setTableDescription("tableDescription");
csv.setColumnName("columnName");
csv.setColumnType("columnType");
csv.setLength(99);
csv.setPk(true);
csv.setIdentity(true);
csv.setNullable(true);
csv.setDefaultValue("defaultValue");
csv.setColumnDescription("columnDescription");
csv.setUserName("");
csv.setCanSelect(true);
csv.setCanInsert(true);
csv.setCanUpdate(true);
csv.setCanDelete(true);
TableConvertor target = new TableConvertor();
Table table = target.convert(csv);
assertEquals("tableName", table.getName());
assertEquals("U", table.getType());
assertEquals("tableDescription", table.getDescription());
List<Permission> permissions = table.getPermissions();
assertEquals(0, permissions.size());
}
@Test
public void testConvertWithoutPermission2() {
SchemaCsv csv = new SchemaCsv();
csv.setTableName("tableName");
csv.setObjectType("U");
csv.setTableDescription("tableDescription");
csv.setColumnName("columnName");
csv.setColumnType("columnType");
csv.setLength(99);
csv.setPk(true);
csv.setIdentity(true);
csv.setNullable(true);
csv.setDefaultValue("defaultValue");
csv.setColumnDescription("columnDescription");
csv.setUserName(null);
csv.setCanSelect(true);
csv.setCanInsert(true);
csv.setCanUpdate(true);
csv.setCanDelete(true);
TableConvertor target = new TableConvertor();
Table table = target.convert(csv);
assertEquals("tableName", table.getName());
assertEquals("U", table.getType());
assertEquals("tableDescription", table.getDescription());
List<Permission> permissions = table.getPermissions();
assertEquals(0, permissions.size());
}
@Test
public void testConvertMultipul() {
SchemaCsv csv1 = new SchemaCsv();
csv1.setTableName("tableName1");
csv1.setObjectType("U");
csv1.setTableDescription("tableDescription");
csv1.setColumnName("columnName1A");
csv1.setColumnType("columnType");
csv1.setLength(99);
csv1.setPk(true);
csv1.setIdentity(true);
csv1.setNullable(true);
csv1.setDefaultValue("defaultValue");
csv1.setColumnDescription("columnDescription");
csv1.setUserName("userName1");
csv1.setCanSelect(true);
csv1.setCanInsert(true);
csv1.setCanUpdate(true);
csv1.setCanDelete(true);
SchemaCsv csv2 = new SchemaCsv();
csv2.setTableName("tableName1");
csv2.setObjectType("U");
csv2.setTableDescription("tableDescription");
csv2.setColumnName("columnName1A");
csv2.setColumnType("columnType");
csv2.setLength(99);
csv2.setPk(true);
csv2.setIdentity(true);
csv2.setNullable(true);
csv2.setDefaultValue("defaultValue");
csv2.setColumnDescription("columnDescription");
csv2.setUserName("userName2");
csv2.setCanSelect(true);
csv2.setCanInsert(true);
csv2.setCanUpdate(true);
csv2.setCanDelete(true);
SchemaCsv csv3 = new SchemaCsv();
csv3.setTableName("tableName1");
csv3.setObjectType("U");
csv3.setTableDescription("tableDescription");
csv3.setColumnName("columnName1B");
csv3.setColumnType("columnType");
csv3.setLength(99);
csv3.setPk(true);
csv3.setIdentity(true);
csv3.setNullable(true);
csv3.setDefaultValue("defaultValue");
csv3.setColumnDescription("columnDescription");
csv3.setUserName("userName1");
csv3.setCanSelect(true);
csv3.setCanInsert(true);
csv3.setCanUpdate(true);
csv3.setCanDelete(true);
SchemaCsv csv4 = new SchemaCsv();
csv4.setTableName("tableName2");
csv4.setObjectType("U");
csv4.setTableDescription("tableDescription");
csv4.setColumnName("columnName2A");
csv4.setColumnType("columnType");
csv4.setLength(99);
csv4.setPk(true);
csv4.setIdentity(true);
csv4.setNullable(true);
csv4.setDefaultValue("defaultValue");
csv4.setColumnDescription("columnDescription");
csv4.setUserName(null);
csv4.setCanSelect(true);
csv4.setCanInsert(true);
csv4.setCanUpdate(true);
csv4.setCanDelete(true);
TableConvertor target = new TableConvertor();
Table table1 = target.convert(csv1);
target.convert(csv2);
target.convert(csv3);
Table table2 = target.convert(csv4);
assertEquals("tableName1", table1.getName());
assertEquals("tableName2", table2.getName());
List<Column> columns1 = table1.getColumns();
assertEquals(2, columns1.size());
List<Column> columns2 = table2.getColumns();
assertEquals(1, columns2.size());
Column column1a = columns1.get(0);
assertEquals("tableName1", column1a.getTableName());
assertEquals("columnName1A", column1a.getName());
Column column1b = columns1.get(1);
assertEquals("tableName1", column1b.getTableName());
assertEquals("columnName1B", column1b.getName());
Column column2a = columns2.get(0);
assertEquals("tableName2", column2a.getTableName());
assertEquals("columnName2A", column2a.getName());
List<Permission> permissions1 = table1.getPermissions();
assertEquals(2, permissions1.size());
List<Permission> permissions2 = table2.getPermissions();
assertEquals(0, permissions2.size());
Permission permission1 = permissions1.get(0);
assertEquals("tableName1", permission1.getTableName());
assertEquals("userName1", permission1.getUserName());
Permission permission2 = permissions1.get(1);
assertEquals("tableName1", permission2.getTableName());
assertEquals("userName2", permission2.getUserName());
}
}