CI / test (push) Canceled after 0s
fix các bug theo yêu cầu https://fptsoftware362-my.sharepoint.com/❌/g/personal/nampdt_fpt_com/IQAHBJ4A9xqDTLgvt2bhukJEAdRB5LRz2hbJpTivvIiBSYM?wdExp=TEAMS-TREATMENT&web=1&isSPOFile=1&ovuser=f01e930a-b52e-42b1-b70f-a8882b5d043b%2CAnhTNM1%40fpt.com&clickparams=eyJBcHBOYW1lIjoiVGVhbXMtRGVza3RvcCIsIkFwcFZlcnNpb24iOiI0OS8yNjA4MTMxOTMxNyIsIkhhc0ZlZGVyYXRlZFVzZXIiOmZhbHNlfQ%3D%3D --------- Co-authored-by: Duy Le Huu <duylh19@fpt.com> Reviewed-on: #10 Co-authored-by: Anh Tran Nguyen Minh <anhtnm1@fpt.com>
88 lines
3.1 KiB
Python
88 lines
3.1 KiB
Python
"""Project chọn ở tab GraphRAG không được biến mất khi chuyển tab.
|
|
|
|
Cùng khuôn với ``test_folder_root_persists.py``: ``WorkspaceTab._bind_project``
|
|
gọi ``self._structure.set_project(pid)`` vô điều kiện, và nó chạy lại mỗi lần
|
|
người dùng vào lại màn Workspace (``_goto`` → ``refresh`` → ``_load_current`` →
|
|
``_bind_project``). Nên bộ chọn project của chính màn GraphRAG bị kéo về giá trị
|
|
của Workspace mỗi cú chuyển tab.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
pytest.importorskip("PySide6", reason="cần PySide6 để dựng widget thật")
|
|
|
|
|
|
class _Ghi:
|
|
"""Thay GraphRenderer — chỉ ghi lại nó bị áp project mấy lần, với giá trị gì."""
|
|
|
|
def __init__(self):
|
|
self.lan_ap = []
|
|
|
|
def set_project(self, project_id):
|
|
self.lan_ap.append(project_id)
|
|
|
|
|
|
@pytest.fixture
|
|
def view(qapp, monkeypatch):
|
|
"""StructureGraphView với renderer bị thay — dựng renderer thật kéo theo
|
|
QtWebEngine, quá đắt cho một khẳng định về luồng điều khiển."""
|
|
from cowork_local.presentation.graph.structure_graph_view import StructureGraphView
|
|
|
|
v = StructureGraphView.__new__(StructureGraphView)
|
|
v._workspace_project = None
|
|
v.renderer = _Ghi()
|
|
return v
|
|
|
|
|
|
def test_lan_dau_van_ap_du_project_la_rong(view):
|
|
"""``None`` khởi tạo để lần gọi đầu không bị bỏ qua khi pid là chuỗi rỗng."""
|
|
view.set_workspace_project("")
|
|
|
|
assert view.renderer.lan_ap == [""]
|
|
|
|
|
|
def test_refresh_cung_project_khong_ap_lai(view):
|
|
"""Đây chính là triệu chứng: chuyển tab rồi quay lại là mất lựa chọn."""
|
|
view.set_workspace_project("p-a")
|
|
view.set_workspace_project("p-a") # chuyển tab rồi quay lại -> refresh
|
|
view.set_workspace_project("p-a")
|
|
|
|
assert view.renderer.lan_ap == ["p-a"], "áp lại là kéo bộ chọn về, xoá lựa chọn tay"
|
|
|
|
|
|
def test_doi_project_o_workspace_thi_van_ap(view):
|
|
"""Đổi project thật thì GraphRAG phải theo."""
|
|
view.set_workspace_project("p-a")
|
|
view.set_workspace_project("p-b")
|
|
|
|
assert view.renderer.lan_ap == ["p-a", "p-b"]
|
|
|
|
|
|
def test_quay_lai_project_cu_thi_ap_lai(view):
|
|
view.set_workspace_project("p-a")
|
|
view.set_workspace_project("p-b")
|
|
view.set_workspace_project("p-a")
|
|
|
|
assert view.renderer.lan_ap == ["p-a", "p-b", "p-a"]
|
|
|
|
|
|
def test_bo_khoa_van_di_qua_duoc(view):
|
|
"""Bỏ chọn project ở Workspace là một thay đổi thật, không phải refresh."""
|
|
view.set_workspace_project("p-a")
|
|
view.set_workspace_project("")
|
|
|
|
assert view.renderer.lan_ap == ["p-a", ""]
|
|
|
|
|
|
# ---- chỗ gọi phải dùng hàm mới -------------------------------------------
|
|
|
|
def test_workspace_tab_goi_set_workspace_project():
|
|
from pathlib import Path
|
|
|
|
src = (Path(__file__).resolve().parents[2] / "ui" / "workspace_tab.py").read_text(encoding="utf-8")
|
|
|
|
assert "_structure.set_workspace_project(pid)" in src
|
|
assert "_structure.set_project(pid)" not in src, (
|
|
"gọi set_project() vô điều kiện là quay lại đúng lỗi cũ")
|