权限入口添加单元测试

This commit is contained in:
bf109f 2023-12-17 20:28:18 +08:00
parent 978151a53a
commit 31a58c8b7f
4 changed files with 144 additions and 0 deletions

View File

@ -42,6 +42,11 @@ public class Account {
@Column(isLogicDelete = true)
private Boolean isDelete;
/**
* 创建人
*/
private String insertUserId;
public Long getId() {
return id;
@ -99,4 +104,11 @@ public class Account {
isDelete = delete;
}
public String getInsertUserId() {
return insertUserId;
}
public void setInsertUserId(String insertUserId) {
this.insertUserId = insertUserId;
}
}

View File

@ -0,0 +1,96 @@
package com.mybatisflex.coretest;
import com.mybatisflex.core.dialect.DbType;
import com.mybatisflex.core.dialect.DialectFactory;
import com.mybatisflex.core.dialect.IDialect;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.row.Row;
import com.mybatisflex.core.row.RowKey;
import com.mybatisflex.core.row.RowUtil;
import com.mybatisflex.core.table.TableInfoFactory;
import com.mybatisflex.coretest.auth.AuthDialectImpl;
import org.junit.Before;
import org.junit.Test;
import static com.mybatisflex.coretest.table.AccountTableDef.ACCOUNT;
/**
* 权限测试
* @author zhang
* @since 2023/12/17
*/
public class AuthTest {
private IDialect dialect;
@Before
public void init() {
DialectFactory.registerDialect(DbType.MYSQL, new AuthDialectImpl());
dialect = DialectFactory.getDialect();
}
@Test
public void test() {
// 1.单个删除
assert "DELETE FROM `tb_account` WHERE `id` = ? AND `insert_user_id` = 1"
.equals(dialect.forDeleteById(ACCOUNT.getSchema(), ACCOUNT.getTableName(), new String[]{ACCOUNT.ID.getName()}));
// 2.批量删除
assert "DELETE FROM `tb_account` WHERE `id` = ? AND `insert_user_id` = 1"
.equals(dialect.forDeleteBatchByIds(ACCOUNT.getSchema(), ACCOUNT.getTableName(), new String[]{ACCOUNT.ID.getName()}, new Object[]{1L}));
// 3.查询
QueryWrapper deleteWrapper =
QueryWrapper.create(new Account()).where(ACCOUNT.ID.eq(1));
assert "DELETE FROM `tb_account` WHERE `id` = ? AND `sex` = ? AND `is_normal` = ? AND `insert_user_id` = ?"
.equals(dialect.forDeleteByQuery(deleteWrapper));
// 4.更新
assert "UPDATE `tb_account` SET `age` = ? WHERE `id` = ? AND `insert_user_id` = 1"
.equals(dialect.forUpdateById(ACCOUNT.getSchema(), ACCOUNT.getTableName(),
Row.ofKey(RowKey.AUTO).set(ACCOUNT.AGE, 18)));
// 5.更新
Row row = new Row();
row.set(ACCOUNT.AGE, 18);
QueryWrapper updateWrapper =
QueryWrapper.create(new Account()).where(ACCOUNT.ID.eq(1));
assert "UPDATE `tb_account` SET `age` = ? WHERE `id` = ? AND `sex` = ? AND `is_normal` = ? AND `insert_user_id` = ?"
.equals(dialect.forUpdateByQuery(updateWrapper, row));
// 6.ID查询
assert "SELECT * FROM `tb_account` WHERE `id` = ? AND `insert_user_id` = 1"
.equals(dialect.forSelectOneById(ACCOUNT.getSchema(), ACCOUNT.getTableName(), new String[]{ACCOUNT.ID.getName()}, new Object[]{1L}));
QueryWrapper queryWrapper =
QueryWrapper.create().select(ACCOUNT.ALL_COLUMNS).where(ACCOUNT.ID.eq(1));
// 7.query查询
assert "SELECT * FROM WHERE `id` = ? AND `insert_user_id` = ?"
.equals(dialect.forSelectByQuery(queryWrapper));
// 8.删除
assert "UPDATE `tb_account` SET `is_delete` = 1 WHERE `id` = ? AND `is_delete` = 0 AND `insert_user_id` = 1"
.equals(dialect.forDeleteEntityById(TableInfoFactory.ofEntityClass(Account.class)));
// 9.批量删除
assert "UPDATE `tb_account` SET `is_delete` = 1 WHERE (`id` = ? ) AND `is_delete` = 0 AND `insert_user_id` = 1"
.equals(dialect.forDeleteEntityBatchByIds(TableInfoFactory.ofEntityClass(Account.class), new String[]{ACCOUNT.ID.getName()}));
// 10.query删除
assert "UPDATE `tb_account` SET `is_delete` = 1 WHERE `id` = ? AND `insert_user_id` = ? AND `insert_user_id` = ?"
.equals(dialect.forDeleteEntityBatchByQuery(TableInfoFactory.ofEntityClass(Account.class), queryWrapper));
// 11.更新
Account account = new Account();
account.setAge(18);
assert "UPDATE `tb_account` SET `sex` = ? , `age` = ? , `is_normal` = ? WHERE `id` = ? AND `is_delete` = 0 AND `insert_user_id` = 1"
.equals(dialect.forUpdateEntity(TableInfoFactory.ofEntityClass(Account.class), account, true));
// 12.更新
assert "UPDATE `tb_account` SET `sex` = ? , `age` = ? , `is_normal` = ? WHERE `id` = ? AND `insert_user_id` = ? AND `insert_user_id` = ? AND `insert_user_id` = ?"
.equals(dialect.forUpdateEntityByQuery(TableInfoFactory.ofEntityClass(Account.class), account, true, queryWrapper));
// 13.ID查询
assert "SELECT * FROM `tb_account` WHERE `id` = ? AND `is_delete` = 0 AND `insert_user_id` = 1"
.equals(dialect.forSelectOneEntityById(TableInfoFactory.ofEntityClass(Account.class)));
// 14.查询
assert "SELECT `id`, `user_name`, `birthday`, `sex`, `age`, `is_normal`, `is_delete`, `insert_user_id` FROM `tb_account` WHERE (`id` = ? ) AND `is_delete` = 0 AND `insert_user_id` = 1"
.equals(dialect.forSelectEntityListByIds(TableInfoFactory.ofEntityClass(Account.class), new String[]{ACCOUNT.ID.getName()}));
}
@Test
public void testWrapper() {
// (为什么打印的sql是这样的 DELETE FROM WHERE `id` = ? AND `insert_user_id` = ?)
QueryWrapper deleteWrapper =
QueryWrapper.create().where(ACCOUNT.ID.eq(1));
System.out.println(dialect.forDeleteByQuery(deleteWrapper));
}
}

View File

@ -111,6 +111,7 @@ public class LambdaSqlTest {
" ` ac `.` age `,\n" +
" ` ac `.` is_normal `,\n" +
" ` ac `.` is_delete `,\n" +
" ` ac `.` insert_user_id `,\n" +
" ` ar `.` title `,\n" +
" ` ar `.` content `\n" +
"FROM\n" +
@ -138,6 +139,7 @@ public class LambdaSqlTest {
" ` ac `.` age `,\n" +
" ` ac `.` is_normal `,\n" +
" ` ac `.` is_delete `,\n" +
" ` ac `.` insert_user_id `,\n" +
" ` ar `.*\n" +
"FROM\n" +
" ` tb_account ` AS ` ac `\n" +

View File

@ -0,0 +1,34 @@
package com.mybatisflex.coretest.auth;
import com.mybatisflex.core.dialect.OperateType;
import com.mybatisflex.core.dialect.impl.CommonsDialectImpl;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.table.TableInfo;
import static com.mybatisflex.core.constant.SqlConsts.AND;
import static com.mybatisflex.core.constant.SqlConsts.EQUALS;
import static com.mybatisflex.coretest.table.AccountTableDef.ACCOUNT;
/**
* 权限处理
*/
public class AuthDialectImpl extends CommonsDialectImpl {
@Override
public void prepareAuth(QueryWrapper queryWrapper, OperateType operateType) {
queryWrapper.and(ACCOUNT.INSERT_USER_ID.eq(1));
super.prepareAuth(queryWrapper, operateType);
}
@Override
public void prepareAuth(String schema, String tableName, StringBuilder sql, OperateType operateType) {
sql.append(AND).append(wrap("insert_user_id")).append(EQUALS).append(1);
super.prepareAuth(schema, tableName, sql, operateType);
}
@Override
public void prepareAuth(TableInfo tableInfo, StringBuilder sql, OperateType operateType) {
sql.append(AND).append(wrap("insert_user_id")).append(EQUALS).append(1);
super.prepareAuth(tableInfo, sql, operateType);
}
}