Skip to content

Commit

Permalink
fix codesy#142, fix codesy#146 - show pending claims in widget
Browse files Browse the repository at this point in the history
set Bid's Issue when creating Bid
  • Loading branch information
groovecoder committed Mar 8, 2015
1 parent 43a0e7c commit 6e9ae3c
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 17 deletions.
2 changes: 1 addition & 1 deletion auctions/templates/bid.html
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
</div>
</fieldset>
</form>
{% if issue %}
{% if bid.issue %}
{% include "includes/claim_form.html" %}
{% endif %}
{% endblock %}
6 changes: 5 additions & 1 deletion auctions/templates/includes/claim_form.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
{% if claim %}
<p>You have <a href="//{{current_site.domain}}{% url 'claim-detail' claim.id %}">a claim</a> for this issue.</p>
{% else %}
<form id="codesy_claim" class="pure-form pure-g" action="//{{current_site.domain}}{% url 'claim-list' %}" method="POST">
{% csrf_token %}
<fieldset>
<input name="issue" type="hidden" value="{{ issue.id }}" />
<input name="issue" type="hidden" value="{{ bid.issue.id }}" />
<input class="pure-button button-success" type="submit" value="Claim the payout for this issue" />
</fieldset>
</form>
{% endif %}
35 changes: 25 additions & 10 deletions auctions/tests/view_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
def _make_test_bid():
user = mommy.make(settings.AUTH_USER_MODEL)
url = 'http://gh.com/project'
bid = mommy.make('auctions.Bid', user=user, url=url)
issue = mommy.make('auctions.Issue', url=url)
return user, url, bid, issue
bid = mommy.make('auctions.Bid', user=user, url=url, issue=issue)
return user, url, bid


def _make_test_claim():
Expand All @@ -39,15 +39,15 @@ def test_attrs(self):
self.viewset.serializer_class, serializers.BidSerializer)

def test_pre_save_sets_user_to_request_user(self):
user, url, bid, issue = _make_test_bid()
user, url, bid = _make_test_bid()
self.viewset.request = fudge.Fake().has_attr(user=user)

self.viewset.pre_save(bid)

self.assertEqual(bid.user, user)

def test_get_queryset_filters_by_request_user(self):
user1, url, bid1, issue1 = _make_test_bid()
user1, url, bid1 = _make_test_bid()
user2 = mommy.make(settings.AUTH_USER_MODEL)
mommy.make('auctions.Bid', user=user2)
mommy.make('auctions.Bid', user=user2)
Expand All @@ -63,7 +63,12 @@ def test_get_queryset_filters_by_request_user(self):
def test_perform_create_creates_Issue(self):
url = 'https://github.com/example/project/issue/7'
fake_serializer = fudge.Fake("serializers.BidSerializer")
fake_serializer.expects('save').returns_fake().has_attr(url=url)
(fake_serializer
.expects('save')
.returns_fake()
.has_attr(url=url)
.expects('save')
)
self.viewset.perform_create(fake_serializer)
# the Issue should be available
models.Issue.objects.get(url=url)
Expand All @@ -82,11 +87,11 @@ def test_attrs(self):

@fudge.patch('auctions.views.Response')
def test_get_existant_bid(self, mock_resp):
user, url, bid, issue = _make_test_bid()
user, url, bid = _make_test_bid()
self.view.request = fudge.Fake().has_attr(
user=user, QUERY_PARAMS={'url': url})
mock_resp.expects_call().with_args(
{'bid': bid, 'url': url, 'issue': issue}, template_name='bid.html')
{'bid': bid, 'url': url, 'claim': None}, template_name='bid.html')

self.view.get(self.view.request)

Expand All @@ -99,10 +104,20 @@ def test_get_nonexistant_bid_assigns_None(self, mock_resp):
self.view.request = fudge.Fake().has_attr(
user=user, QUERY_PARAMS={'url': url})
mock_resp.expects_call().with_args(
{'bid': None, 'url': url, 'issue': None}, template_name='bid.html')
{'bid': None, 'url': url, 'claim': None}, template_name='bid.html')

self.view.get(self.view.request)

@fudge.patch('auctions.views.Response')
def test_get_existant_bid_with_claim(self, mock_resp):
user, url, bid = _make_test_bid()
claim = mommy.make('auctions.Claim', issue=bid.issue, claimant=user)
self.view.request = fudge.Fake().has_attr(
user=user, QUERY_PARAMS={'url': url})
mock_resp.expects_call().with_args(
{'bid': bid, 'url': url, 'claim': claim}, template_name='bid.html')

self.view.get(self.view.request)

class ClaimViewSetTest(TestCase):
def setUp(self):
Expand Down Expand Up @@ -157,12 +172,12 @@ def test_attrs(self):

@fudge.patch('auctions.views.Response')
def test_get_existant_bid_returns_confirm_claim_form(self, mock_resp):
user, url, bid, issue = _make_test_bid()
user, url, bid = _make_test_bid()
self.view.request = fudge.Fake().has_attr(
QUERY_PARAMS={'bid': bid.id}
)
mock_resp.expects_call().with_args(
{'bid': bid, 'issue': issue},
{'bid': bid, 'issue': bid.issue},
template_name='confirm_claim.html'
)

Expand Down
19 changes: 14 additions & 5 deletions auctions/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,12 @@ def get_queryset(self):

def perform_create(self, serializer):
bid = serializer.save()
Issue.objects.get_or_create(
issue, created = Issue.objects.get_or_create(
url=bid.url,
defaults={'state': 'open', 'last_fetched': None}
)
bid.issue = issue
bid.save()


class GetBid(APIView):
Expand All @@ -45,15 +47,22 @@ class GetBid(APIView):
def get(self, request, format=None):
url = self.request.QUERY_PARAMS.get('url')
bid = None
issue = None
claim = None
try:
bid = Bid.objects.get(user=self.request.user, url=url)
issue = Issue.objects.get(url=url)
except Bid.DoesNotExist:
bid = None
pass
else:
try:
claim = Claim.objects.get(
claimant=self.request.user, issue=bid.issue
)
except Claim.DoesNotExist:
pass


resp = Response({'bid': bid,
'issue': issue,
'claim': claim,
'url': url},
template_name='bid.html')
return resp
Expand Down

0 comments on commit 6e9ae3c

Please sign in to comment.