diff --git a/cosmpy/gov/rest_client.py b/cosmpy/gov/rest_client.py index c6e64b97..35020974 100644 --- a/cosmpy/gov/rest_client.py +++ b/cosmpy/gov/rest_client.py @@ -66,7 +66,11 @@ def Proposal(self, request: QueryProposalRequest) -> QueryProposalResponse: json_response = self._rest_api.get( f"{self.API_URL}/proposals/{request.proposal_id}", ) - return Parse(json_response, QueryProposalResponse()) + return Parse( + json_response, + QueryProposalResponse(), + ignore_unknown_fields=True, + ) def Proposals(self, request: QueryProposalsRequest) -> QueryProposalsResponse: """ @@ -80,7 +84,11 @@ def Proposals(self, request: QueryProposalsRequest) -> QueryProposalsResponse: f"{self.API_URL}/proposals/", request, ) - return Parse(json_response, QueryProposalsResponse()) + return Parse( + json_response, + QueryProposalsResponse(), + ignore_unknown_fields=True, + ) def Vote(self, request: QueryVoteRequest) -> QueryVoteResponse: """ diff --git a/tests/unit/test_gov/test_rest_client.py b/tests/unit/test_gov/test_rest_client.py index 7a1daa59..ca110dd9 100644 --- a/tests/unit/test_gov/test_rest_client.py +++ b/tests/unit/test_gov/test_rest_client.py @@ -89,6 +89,21 @@ def test_Proposal(self): assert gov.Proposal(QueryProposalRequest(proposal_id=1)) == expected_response assert mock_client.last_base_url == "/cosmos/gov/v1beta1/proposals/1" + def test_Proposal_with_is_expedited(self): + """Test Proposal handles expedited proposal responses.""" + content = { + "proposal": { + "proposal_id": "543", + "is_expedited": True, + } + } + mock_client, gov = self.make_clients(content) + + response = gov.Proposal(QueryProposalRequest(proposal_id=543)) + + assert response.proposal.proposal_id == 543 + assert mock_client.last_base_url == "/cosmos/gov/v1beta1/proposals/543" + def test_Proposals(self): """Test Proposals method.""" content = { @@ -117,6 +132,23 @@ def test_Proposals(self): assert gov.Proposals(QueryProposalsRequest()) == expected_response assert mock_client.last_base_url == "/cosmos/gov/v1beta1/proposals/" + def test_Proposals_with_is_expedited(self): + """Test Proposals handles expedited proposal responses.""" + content = { + "proposals": [ + { + "proposal_id": "543", + "is_expedited": True, + } + ] + } + mock_client, gov = self.make_clients(content) + + response = gov.Proposals(QueryProposalsRequest()) + + assert response.proposals[0].proposal_id == 543 + assert mock_client.last_base_url == "/cosmos/gov/v1beta1/proposals/" + def test_Vote(self): """Test Vote method.""" content = {"vote": {"proposal_id": "10", "voter": "addr"}}