签入版本
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
"""shared/base_repository 与模块 repository 的单元测试(SQLite 内存库)。"""
|
||||
|
||||
from modules.system.level.models import Level
|
||||
from modules.system.level.repository import level_repo
|
||||
from modules.system.position.repository import position_repo
|
||||
|
||||
|
||||
def test_level_repo_crud(sqlite_db):
|
||||
# create
|
||||
obj = level_repo.create(name="高级", status=1, sort=1)
|
||||
assert obj.id is not None
|
||||
sqlite_db.commit()
|
||||
|
||||
# get / exists
|
||||
assert level_repo.get_by_id(obj.id).name == "高级"
|
||||
assert level_repo.exists(obj.id)
|
||||
assert level_repo.get_by_id(0) is None
|
||||
assert not level_repo.exists(999)
|
||||
|
||||
# paginate
|
||||
items, total = level_repo.paginate(1, 10)
|
||||
assert total == 1
|
||||
assert items[0].id == obj.id
|
||||
|
||||
# update
|
||||
assert level_repo.update(obj.id, {"name": "资深"}) == 1
|
||||
assert level_repo.get_by_id(obj.id).name == "资深"
|
||||
|
||||
# batch soft delete(数据原语,返回删除条数)
|
||||
assert level_repo.batch_delete(str(obj.id)) == 1
|
||||
assert level_repo.get_by_id(obj.id) is None
|
||||
|
||||
|
||||
def test_position_repo_paginate_empty(sqlite_db):
|
||||
items, total = position_repo.paginate(1, 10)
|
||||
assert total == 0
|
||||
assert items == []
|
||||
|
||||
|
||||
def test_repo_query_conveniences(sqlite_db):
|
||||
level_repo.create(name="甲", status=1, sort=1)
|
||||
level_repo.create(name="乙", status=1, sort=2)
|
||||
level_repo.create(name="丙", status=2, sort=3)
|
||||
|
||||
# exists_by_field / 排除自身
|
||||
assert level_repo.exists_by_field("name", "甲")
|
||||
assert not level_repo.exists_by_field("name", "不存在")
|
||||
target = level_repo.get_one(name="甲")
|
||||
assert not level_repo.exists_by_field("name", "甲", exclude_id=target.id)
|
||||
|
||||
# get_one / get_all / count / filter_by(None 值跳过 + 自动软删过滤)
|
||||
assert level_repo.get_one(name="乙").sort == 2
|
||||
assert len(level_repo.get_all(status=1)) == 2
|
||||
assert level_repo.count(status=1) == 2
|
||||
rows = level_repo.filter_by(status=1).order_by(Level.sort.asc()).all()
|
||||
assert [row.name for row in rows] == ["甲", "乙"]
|
||||
|
||||
# 软删后 count 自动排除
|
||||
level_repo.batch_delete(str(target.id))
|
||||
assert level_repo.count() == 2
|
||||
Reference in New Issue
Block a user