From 49ffea7b924fc57828ef2198ac8a65f6b1948943 Mon Sep 17 00:00:00 2001 From: lance Date: Wed, 29 Jan 2020 21:30:23 -0800 Subject: [PATCH] more work on bids tests --- bids/tests/test_views.py | 26 ++++++++++++++++++++++++-- bids/views.py | 5 ++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/bids/tests/test_views.py b/bids/tests/test_views.py index 6a36830..351dbae 100644 --- a/bids/tests/test_views.py +++ b/bids/tests/test_views.py @@ -10,7 +10,7 @@ from bids.models import ItemBid from bids.views import list_bids -class ItemBidModelsTestCase(TestCase): +class ItemBidViewsTestCase(TestCase): def setUp(self): self.client = Client() self.seller_password = token_urlsafe(32) @@ -79,12 +79,34 @@ class ItemBidModelsTestCase(TestCase): self.client.logout() # Test that buyer's bids are the only bids returned from view - user_bids = ItemBid.objects.filter(bidder=self.buyer) + all_bids = ItemBid.objects.all() + user_bids = all_bids.filter(bidder=self.buyer) self.assertEqual(len(user_bids), len(response.context['bids'])) + self.assertLess(len(user_bids), len(all_bids)) # Test that each bid belongs to the buyer for bid in response.context['bids']: self.assertEqual(bid.bidder, self.buyer) + def test_create_bid_requires_auth(self): + response = self.client.get(reverse('create_bid', args=[self.test_item.id])) + self.assertTrue(response.url.startswith(reverse('login'))) + self.assertEqual(response.status_code, 302) + + def test_create_bid_redirects_home_if_item_id_missing(self): + self.client.login(username=self.buyer.username, password=self.buyer_password) + response = self.client.get(reverse('create_bid', args=[9999])) + self.client.logout() + self.assertTrue(response.url.startswith(reverse('home'))) + self.assertEqual(response.status_code, 302) + + def test_create_bid_redirects_to_edit_if_bid_already_posted(self): + self.client.login(username=self.buyer.username, password=self.buyer_password) + response = self.client.get(reverse('create_bid', args=[self.test_item.id])) + self.client.logout() + print(response) + # self.assertTrue(response.url.startswith(reverse('home'))) + # self.assertEqual(response.status_code, 302) + diff --git a/bids/views.py b/bids/views.py index f6d8bdb..4e5954d 100644 --- a/bids/views.py +++ b/bids/views.py @@ -33,7 +33,10 @@ def list_bids(request): @login_required def create_bid(request, item_id): - item = Item.objects.get(id=item_id) + item = Item.objects.filter(id=item_id).first() + if item is None: + messages.error(request, "That item does not exist for you to bid on.") + return HttpResponseRedirect(reverse('home')) current_user_bid = item.bids.filter(bidder=request.user).first() # Do not allow bidding if current user is the owner