74 lines
2.4 KiB
Python
74 lines
2.4 KiB
Python
import json
|
|
from mock import patch
|
|
|
|
from grant.proposal.models import Proposal
|
|
from grant.utils.enums import ProposalStatus
|
|
from ..config import BaseProposalCreatorConfig
|
|
from ..test_data import test_proposal, mock_blockchain_api_requests
|
|
from ..mocks import mock_request
|
|
|
|
|
|
class TestProposalContributionAPI(BaseProposalCreatorConfig):
|
|
@patch('requests.get', side_effect=mock_blockchain_api_requests)
|
|
def test_create_proposal_contribution(self, mock_blockchain_get):
|
|
self.login_default_user()
|
|
|
|
contribution = {
|
|
"amount": "1.2345"
|
|
}
|
|
|
|
post_res = self.app.post(
|
|
"/api/v1/proposals/{}/contributions".format(self.proposal.id),
|
|
data=json.dumps(contribution),
|
|
content_type='application/json'
|
|
)
|
|
|
|
self.assertStatus(post_res, 201)
|
|
|
|
@patch('requests.get', side_effect=mock_blockchain_api_requests)
|
|
def test_create_duplicate_contribution(self, mock_blockchain_get):
|
|
self.login_default_user()
|
|
|
|
contribution = {
|
|
"amount": "1.2345"
|
|
}
|
|
|
|
post_res = self.app.post(
|
|
"/api/v1/proposals/{}/contributions".format(self.proposal.id),
|
|
data=json.dumps(contribution),
|
|
content_type='application/json'
|
|
)
|
|
|
|
self.assertStatus(post_res, 201)
|
|
|
|
dupe_res = self.app.post(
|
|
"/api/v1/proposals/{}/contributions".format(self.proposal.id),
|
|
data=json.dumps(contribution),
|
|
content_type='application/json'
|
|
)
|
|
self.assert200(dupe_res)
|
|
self.assertEqual(dupe_res.json['id'], post_res.json['id'])
|
|
|
|
@patch('requests.get', side_effect=mock_blockchain_api_requests)
|
|
def test_get_proposal_contribution(self, mock_blockchain_get):
|
|
self.login_default_user()
|
|
|
|
contribution = {
|
|
"amount": "1.2345"
|
|
}
|
|
|
|
post_res = self.app.post(
|
|
"/api/v1/proposals/{}/contributions".format(self.proposal.id),
|
|
data=json.dumps(contribution),
|
|
content_type='application/json'
|
|
)
|
|
contribution_id = post_res.json['id']
|
|
|
|
contribution_res = self.app.get(
|
|
f'/api/v1/proposals/{self.proposal.id}/contributions/{contribution_id}'
|
|
)
|
|
|
|
contribution = contribution_res.json
|
|
self.assertEqual(contribution['id'], contribution_id)
|
|
self.assertEqual(contribution['status'], ProposalStatus.PENDING)
|