import pytest

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



class TestVote:
    data = BaseRequest().api_load(path_setting.TRACTATE_VOTE)
    test_case, test_data = get_ids(data, "tractate_vote")

    @pytest.mark.parametrize("param", test_data, ids=test_case)
    def test_vote(self, param):
        r = tractate_request().tractate_detail(param["current_city_id"], param["tractate_id"], param["data_type"])
        if r["error"] == 0:
            assert r["error"] == param["assert1"]
            # 如果没有点过赞,就先校验点赞之后再取消点赞。【最后保持取消点赞的状态】
            if not r["data"]["tractate_list"]["is_voted"]:
                vote = tractate_request().tractate_vote(param["tractate_id"], param["data_type"], param["reply_id"])
                assert vote["error"] == 0
                assert vote["message"] == param["message1"]
                # 取消点赞,回到取消点赞的状态
                canclevote = tractate_request().tractate_cancelvote(param["tractate_id"], param["data_type"], param["reply_id"])
                assert canclevote["error"] == 0
            else:
                # 如果是已经点过赞的状态就直接取消点赞
                canclevote = tractate_request().tractate_cancelvote(param["tractate_id"], param["data_type"], param["reply_id"])
                assert canclevote["message"] == param["message2"]