Files
2026-09-12 17:39:13 +08:00

61 lines
2.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""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