import pytest

from ids_list import get_ids
import path_setting
from in_common.base_request import BaseRequest
from all_backend_api.hybrid_api_topic_request import hybrid_api_topic_request


class TestDiaryVote:
    data = BaseRequest().api_load(path_setting.DIARY_TOPIC_VOTE)
    diary_vote_case, diary_vote_data = get_ids(data, "diary_vote")

    @pytest.mark.parametrize("param", diary_vote_data, ids=diary_vote_case)
    def test_api_topic_vote(self, param):
        # print(111)
        # print(diary_vote_case)
        r = hybrid_api_topic_request().diary_detail(param["topic_id"])
        # print(r)
        # 可以多加一个d代表详情页
        if r["error"] == 0:
            assert r["error"] == param["assert1"]
            # 如果没有点过赞,就先校验点赞之后再取消点赞。【最后保持取消点赞的状态】
            if not r["data"]["data"]["is_liked"]:
                # print(222)
                vote = hybrid_api_topic_request().diary_vote(param["id"])
                assert vote["error"] == 0
                # 校验二次点赞无效
                vote = hybrid_api_topic_request().diary_vote(param["id"])
                assert vote["message"] == param["assert3"]
                assert vote["error"] == 1
                # 取消点赞,回到取消点赞的状态
                cancelvote = hybrid_api_topic_request().diary_cancelvote(param["id"])
                assert cancelvote["error"] == 0
            else:
                # 如果是已经点过赞的状态就直接取消点赞
                # print(111)
                cancelvote = hybrid_api_topic_request().diary_cancelvote(param["id"])
                assert cancelvote["error"] == 0





# if r["error"] == 1:
#     assert r["message"] ==param["assert2"]


#     收藏之后取消收藏
# r1 = diary_isfavor_request().diary_cancelfavor()
# if r["error"] == 0:
#     assert r["error"] == param["assert"]