Merge remote-tracking branch 'origin/sub_laptop_5' into sub_laptop_8
This commit is contained in:
@@ -96,6 +96,28 @@ def test_서고_사본_원본_지킴():
|
||||
assert library.used_folders(user) == {"combo@system@-@SS1"}
|
||||
|
||||
|
||||
def test_사전조합_원본_복사본_사본_지킴(tmp_path):
|
||||
"""통합 점검 — 사전조합(`C:참조`) 복사본 · 복사본의 복사본 = 원본 사본 폴더 지킴(업데이트 수요 · 저장 정리)."""
|
||||
base = library.library_dir(tmp_path)
|
||||
for name, ref in (
|
||||
("precombo@personal@1-3@SC-000001", {"층": "personal", "주인": "1/3", "키": "SC-000001"}),
|
||||
("precombo@personal@1-3@SC-000002", {"층": "personal", "주인": "1/3", "키": "SC-000002"}),
|
||||
):
|
||||
(base / name).mkdir(parents=True)
|
||||
manifest = {"종류": "precombo", "원본": {"참조": ref}}
|
||||
(base / name / "manifest.json").write_text(json.dumps(manifest), encoding="utf-8")
|
||||
src = "C:참조|personal|1/3|SC-000001"
|
||||
user = {
|
||||
"daega_cover": {
|
||||
"K:aa": {"@copy": {"from": src, "name": "복사"}},
|
||||
"K:bb": {"@copy": {"from": "K:aa", "name": "복사의 복사"}},
|
||||
}
|
||||
}
|
||||
assert library.used_folders(user) == set() # 폴더 모름 = 옛 꼴
|
||||
assert library.used_folders(user, tmp_path) == {"precombo@personal@1-3@SC-000001"}
|
||||
assert library.prune(tmp_path, user) == ["precombo@personal@1-3@SC-000002"]
|
||||
|
||||
|
||||
# ── 내 자료집(개인 층 사전조합 · 임시 storage) ─────────────────────────────
|
||||
|
||||
|
||||
|
||||
@@ -274,9 +274,30 @@ def test_줄마다_갈래_판(geo):
|
||||
def test_이_짝_잊기(tmp_path, monkeypatch):
|
||||
monkeypatch.setattr(route.access, "folder", lambda got, create=False: tmp_path / got.layer)
|
||||
user = {"company_id": 7, "user_id": 3, "role": "USER"}
|
||||
gone = {lk.FORGOT: True}
|
||||
route.keep(user, {"a||": {"확정": "earth:4"}, "b||": {"확정": "earth:5"}})
|
||||
hopyo_store.remember(tmp_path / "company", {"c||": {"확정": "x"}}, lk.MEMORY)
|
||||
assert route.keep(user, {"a||": None}) == "personal"
|
||||
assert set(route.recalled(user)) == {"b||", "c||"}
|
||||
route.keep(user, {"c||": None})
|
||||
assert "c||" in route.recalled(user) # 일반 = 회사 기억 못 지움(남음)
|
||||
assert route.keep(user, {"a||": gone}) == "personal"
|
||||
assert route.recalled(user)["a||"] == gone and route.recalled(user)["b||"]["확정"] == "earth:5"
|
||||
route.keep(user, {"c||": gone}) # 일반 = 회사 기억을 개인 층 표시로 덮음
|
||||
assert route.recalled(user)["c||"] == gone
|
||||
|
||||
|
||||
def test_잊은_짝_느슨한_기억에도_안_나옴(tmp_path, monkeypatch):
|
||||
monkeypatch.setattr(route.access, "folder", lambda got, create=False: tmp_path / got.layer)
|
||||
user = {"company_id": 7, "user_id": 3, "role": "USER"}
|
||||
row = {"name": "토사절취", "spec": "A", "unit": "m3"}
|
||||
other = {"name": "토사절취", "spec": "B", "unit": "m3"}
|
||||
live = {"확정": "earth:4", "이름": "절토(토사)"}
|
||||
route.keep(user, {lk.key_of(other): live})
|
||||
assert (
|
||||
lk.recall(route.recalled(user), row) == live
|
||||
) # 규격 달라도 품명 · 단위 같음 = 느슨한 기억
|
||||
route.keep(user, {lk.key_of(row): {lk.FORGOT: True}})
|
||||
memory = route.recalled(user)
|
||||
assert lk.recall(memory, row) is None # 잊음 = 느슨한 기억도 끊김
|
||||
assert lk.recall(memory, other) == live # 다른 줄은 그대로
|
||||
third = {"name": "토사절취", "spec": "C", "unit": "m3"}
|
||||
assert lk.recall(memory, third) is None # 잊은 짝 곁에서는 느슨하게 안 좁힘
|
||||
route.keep(user, {lk.key_of(row): live}) # 다시 이음 = 풀림
|
||||
assert lk.recall(route.recalled(user), row) == live
|
||||
|
||||
Reference in New Issue
Block a user