Test: fix expected value validation for list dataset endpoint (#6160)

### What problem does this PR solve?

fix function is_sort() usage error

### Type of change

- [ ] update test cases
This commit is contained in:
liu an 2025-03-17 15:36:48 +08:00 committed by GitHub
parent 5983803c8b
commit d36420a87a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -62,16 +62,20 @@ class TestDatasetList:
({"page": 0, "page_size": 2}, 0, 2, ""), ({"page": 0, "page_size": 2}, 0, 2, ""),
({"page": 2, "page_size": 2}, 0, 2, ""), ({"page": 2, "page_size": 2}, 0, 2, ""),
({"page": 3, "page_size": 2}, 0, 1, ""), ({"page": 3, "page_size": 2}, 0, 1, ""),
({"page": "1", "page_size": 2}, 0, 2, ""), ({"page": "3", "page_size": 2}, 0, 1, ""),
pytest.param( pytest.param(
{"page": -1, "page_size": 2}, 100, 0, "1064", marks=pytest.mark.xfail {"page": -1, "page_size": 2},
100,
0,
"1064",
marks=pytest.mark.xfail(reason="issues/5851"),
), ),
pytest.param( pytest.param(
{"page": "a", "page_size": 2}, {"page": "a", "page_size": 2},
100, 100,
0, 0,
"""ValueError("invalid literal for int() with base 10: \'a\'")""", """ValueError("invalid literal for int() with base 10: \'a\'")""",
marks=pytest.mark.xfail, marks=pytest.mark.xfail(reason="issues/5851"),
), ),
], ],
) )
@ -99,13 +103,19 @@ class TestDatasetList:
({"page_size": 1}, 0, 1, ""), ({"page_size": 1}, 0, 1, ""),
({"page_size": 32}, 0, 31, ""), ({"page_size": 32}, 0, 31, ""),
({"page_size": "1"}, 0, 1, ""), ({"page_size": "1"}, 0, 1, ""),
pytest.param({"page_size": -1}, 100, 0, "1064", marks=pytest.mark.xfail), pytest.param(
{"page_size": -1},
100,
0,
"1064",
marks=pytest.mark.xfail(reason="issues/5851"),
),
pytest.param( pytest.param(
{"page_size": "a"}, {"page_size": "a"},
100, 100,
0, 0,
"""ValueError("invalid literal for int() with base 10: \'a\'")""", """ValueError("invalid literal for int() with base 10: \'a\'")""",
marks=pytest.mark.xfail, marks=pytest.mark.xfail(reason="issues/5851"),
), ),
], ],
) )
@ -131,27 +141,34 @@ class TestDatasetList:
( (
{"orderby": None}, {"orderby": None},
0, 0,
lambda r: (is_sorted(r["data"], "create_time"), True), lambda r: (is_sorted(r["data"], "create_time", True)),
"", "",
), ),
( (
{"orderby": "create_time"}, {"orderby": "create_time"},
0, 0,
lambda r: (is_sorted(r["data"], "create_time"), True), lambda r: (is_sorted(r["data"], "create_time", True)),
"", "",
), ),
( (
{"orderby": "update_time"}, {"orderby": "update_time"},
0, 0,
lambda r: (is_sorted(r["data"], "update_time"), True), lambda r: (is_sorted(r["data"], "update_time", True)),
"", "",
), ),
pytest.param( pytest.param(
{"orderby": "a"}, {"orderby": "name", "desc": "False"},
100,
0, 0,
"""AttributeError("type object \'Knowledgebase\' has no attribute \'a\'")""", lambda r: (is_sorted(r["data"]["docs"], "name", False)),
marks=pytest.mark.xfail, "",
marks=pytest.mark.xfail(reason="issues/5851"),
),
pytest.param(
{"orderby": "unknown"},
102,
0,
"orderby should be create_time or update_time",
marks=pytest.mark.xfail(reason="issues/5851"),
), ),
], ],
) )
@ -168,7 +185,7 @@ class TestDatasetList:
assert res["code"] == expected_code assert res["code"] == expected_code
if expected_code == 0: if expected_code == 0:
if callable(assertions): if callable(assertions):
assert all(assertions(res)) assert assertions(res)
else: else:
assert res["message"] == expected_message assert res["message"] == expected_message
@ -178,39 +195,57 @@ class TestDatasetList:
( (
{"desc": None}, {"desc": None},
0, 0,
lambda r: (is_sorted(r["data"], "create_time", True),), lambda r: (is_sorted(r["data"], "create_time", True)),
"", "",
), ),
( (
{"desc": "true"}, {"desc": "true"},
0, 0,
lambda r: (is_sorted(r["data"], "create_time", True),), lambda r: (is_sorted(r["data"], "create_time", True)),
"", "",
), ),
( (
{"desc": "false"}, {"desc": "True"},
0, 0,
lambda r: (is_sorted(r["data"], "create_time", False),), lambda r: (is_sorted(r["data"], "create_time", True)),
"", "",
), ),
( (
{"desc": True}, {"desc": True},
0, 0,
lambda r: (is_sorted(r["data"], "create_time", True),), lambda r: (is_sorted(r["data"], "create_time", True)),
"", "",
), ),
( (
{"desc": "false", "orderby": "update_time"}, {"desc": "false"},
0, 0,
lambda r: (is_sorted(r["data"], "update_time", False),), lambda r: (is_sorted(r["data"], "create_time", False)),
"",
),
(
{"desc": "False"},
0,
lambda r: (is_sorted(r["data"], "create_time", False)),
"",
),
(
{"desc": False},
0,
lambda r: (is_sorted(r["data"], "create_time", False)),
"",
),
(
{"desc": "False", "orderby": "update_time"},
0,
lambda r: (is_sorted(r["data"], "update_time", False)),
"", "",
), ),
pytest.param( pytest.param(
{"desc": "a"}, {"desc": "unknown"},
100, 102,
0, 0,
"""AttributeError("type object \'Knowledgebase\' has no attribute \'a\'")""", "desc should be true or false",
marks=pytest.mark.xfail, marks=pytest.mark.xfail(reason="issues/5851"),
), ),
], ],
) )
@ -227,7 +262,7 @@ class TestDatasetList:
assert res["code"] == expected_code assert res["code"] == expected_code
if expected_code == 0: if expected_code == 0:
if callable(assertions): if callable(assertions):
assert all(assertions(res)) assert assertions(res)
else: else:
assert res["message"] == expected_message assert res["message"] == expected_message
@ -235,8 +270,9 @@ class TestDatasetList:
"params, expected_code, expected_num, expected_message", "params, expected_code, expected_num, expected_message",
[ [
({"name": None}, 0, 3, ""), ({"name": None}, 0, 3, ""),
({"name": ""}, 0, 3, ""),
({"name": "dataset_1"}, 0, 1, ""), ({"name": "dataset_1"}, 0, 1, ""),
({"name": "a"}, 102, 0, "You don't own the dataset a"), ({"name": "unknown"}, 102, 0, "You don't own the dataset unknown"),
], ],
) )
def test_name( def test_name(
@ -246,7 +282,7 @@ class TestDatasetList:
res = list_dataset(get_http_api_auth, params=params) res = list_dataset(get_http_api_auth, params=params)
assert res["code"] == expected_code assert res["code"] == expected_code
if expected_code == 0: if expected_code == 0:
if params["name"] is None: if params["name"] in [None, ""]:
assert len(res["data"]) == expected_num assert len(res["data"]) == expected_num
else: else:
assert res["data"][0]["name"] == params["name"] assert res["data"][0]["name"] == params["name"]
@ -257,8 +293,9 @@ class TestDatasetList:
"dataset_id, expected_code, expected_num, expected_message", "dataset_id, expected_code, expected_num, expected_message",
[ [
(None, 0, 3, ""), (None, 0, 3, ""),
("", 0, 3, ""),
(lambda r: r[0], 0, 1, ""), (lambda r: r[0], 0, 1, ""),
("a", 102, 0, "You don't own the dataset a"), ("unknown", 102, 0, "You don't own the dataset unknown"),
], ],
) )
def test_id( def test_id(
@ -278,7 +315,7 @@ class TestDatasetList:
res = list_dataset(get_http_api_auth, params=params) res = list_dataset(get_http_api_auth, params=params)
assert res["code"] == expected_code assert res["code"] == expected_code
if expected_code == 0: if expected_code == 0:
if params["id"] is None: if params["id"] in [None, ""]:
assert len(res["data"]) == expected_num assert len(res["data"]) == expected_num
else: else:
assert res["data"][0]["id"] == params["id"] assert res["data"][0]["id"] == params["id"]
@ -290,8 +327,8 @@ class TestDatasetList:
[ [
(lambda r: r[0], "dataset_0", 0, 1, ""), (lambda r: r[0], "dataset_0", 0, 1, ""),
(lambda r: r[0], "dataset_1", 0, 0, ""), (lambda r: r[0], "dataset_1", 0, 0, ""),
(lambda r: r[0], "a", 102, 0, "You don't own the dataset a"), (lambda r: r[0], "unknown", 102, 0, "You don't own the dataset unknown"),
("a", "dataset_0", 102, 0, "You don't own the dataset a"), ("id", "dataset_0", 102, 0, "You don't own the dataset id"),
], ],
) )
def test_name_and_id( def test_name_and_id(