def test_get(self): c1 = testing.factory_category(display_priority=10) c2 = testing.factory_category(display_priority=5) t1 = testing.factory_ticket(category=c1, start_date='2016-11-05') t2 = testing.factory_ticket(category=c1, start_date='2016-11-08') t3 = testing.factory_ticket(category=c2) res = self.client.get(self._getTarget()) self.assertTemplateUsed(res, 'tickets/list.html') self.assertEqual(len(res.context['tickets']), 3) self.assertEqual(res.context['tickets'][0], t1) self.assertEqual(res.context['tickets'][1], t2) self.assertEqual(res.context['tickets'][2], t3)
def test_post(self): t = testing.factory_ticket(seller=self.user, status=models.Ticket.STATUS_DISPLAY) res = self.client.post(self._getTarget(ticket_id=t.id)) self.assertRedirects(res, reverse('tbpauth:mypage')) t.refresh_from_db() self.assertEqual(t.status, models.Ticket.STATUS_STOPPED)
def test_post(self): t = testing.factory_ticket(quantity=50) res = self.client.post(self._getTarget(ticket_id=t.id), data={'amount': 50}) self.assertRedirects(res, reverse('tickets:list')) self.assertEqual(len(self.client.session['cart']), 1) self.assertEqual(self.client.session['cart'][0]['ticket_id'], t.id) self.assertEqual(self.client.session['cart'][0]['amount'], 50)
def test_get(self): p = factory_purchase(user=self.user) p2 = factory_purchase(user=self.user) t3 = factory_ticket(seller=self.user, status=Ticket.STATUS_STOPPED, start_date='2016-12-01') t2 = factory_ticket(seller=self.user, status=Ticket.STATUS_STOPPED, start_date='2016-11-30') t1 = factory_ticket(seller=self.user, status=Ticket.STATUS_DISPLAY) res = self.client.get(self._getTarget()) self.assertEqual(len(res.context['purchases']), 2) self.assertTemplateUsed(res, 'tbpauth/mypage.html') self.assertEqual(res.context['profile_user'], self.user) self.assertEqual(res.context['purchases'][0], p) self.assertEqual(res.context['purchases'][1], p2) self.assertEqual(len(res.context['selling_tickets']), 3) self.assertEqual(res.context['selling_tickets'][0], t1) self.assertEqual(res.context['selling_tickets'][1], t2) self.assertEqual(res.context['selling_tickets'][2], t3)
def factory_purchase(**kwargs): """ テスト用のPurchaseのデータを作る """ d = { 'amount': 10, } d.update(kwargs) if 'ticket' not in d: d['ticket'] = factory_ticket() if 'user' not in d: d['user'] = factory_user() return models.Purchase.objects.create(**d)
def test_get_paginate(self): c1 = testing.factory_category(display_priority=10) tickets = [] for i in range(21): t = testing.factory_ticket(category=c1, start_date='2016-11-05') tickets.append(t) res = self.client.get(self._getTarget()) self.assertTemplateUsed(res, 'tickets/list.html') self.assertEqual(len(res.context['tickets']), 20) self.assertEqual(list(res.context['tickets']), tickets[:20]) res = self.client.get(self._getTarget(), data={'page': 2}) self.assertTemplateUsed(res, 'tickets/list.html') self.assertEqual(len(res.context['tickets']), 1) self.assertEqual(list(res.context['tickets']), tickets[20:])
def test_quantity_display(self): target = testing.factory_ticket(quantity=1000) self.assertEqual(target.quantity_display(), '1,000枚')
def test_fee_rate_large_event(self): target = testing.factory_ticket(quantity=100) self.assertEqual(target.fee_rate(), 0.01)
def test_get_not_my_ticket(self): t = testing.factory_ticket(seller=factory_user()) res = self.client.get(self._getTarget(ticket_id=t.id)) self.assertEqual(res.status_code, 404)
def test_fee_rate_small_event(self): target = testing.factory_ticket(quantity=49) self.assertEqual(target.fee_rate(), 0.05)
def test_clean_amount_too_small(self): ticket = testing.factory_ticket(quantity=800) target = forms.TicketCartForm(ticket=ticket, data={'amount': 0}) self.assertFalse(target.is_valid()) self.assertEqual(target.errors['amount'], ['この値は 1 以上でなければなりません。'])
def test_fee_rate_with_extra_fee(self): category = testing.factory_category(extra_fee_rate=0.05) target = testing.factory_ticket(quantity=10, category=category) self.assertEqual(target.fee_rate(), 0.1)
def test_get(self): t = testing.factory_ticket() res = self.client.get(self._getTarget(ticket_id=t.id)) self.assertTemplateUsed(res, 'tickets/detail.html') self.assertEqual(res.context['ticket'], t) self.assertEqual(res.context['form'].ticket, t)
def test_price_display(self): target = testing.factory_ticket(price=1000) self.assertEqual(target.price_display(), '1,000円')
def test_stock_amount_without_purchase(self): target = testing.factory_ticket(quantity=10) self.assertEqual(target.stock_amount(), 10)
def test_stock_amount(self): target = testing.factory_ticket(quantity=10) factory_purchase(amount=4, ticket=target) factory_purchase(amount=5, ticket=target) self.assertEqual(target.stock_amount(), 1)
def test_fee(self): target = testing.factory_ticket(quantity=10, price=100) self.assertEqual(target.fee(), 5)
def test_get_paginate_too_big_page(self): t1 = testing.factory_ticket() res = self.client.get(self._getTarget(), data={'page': 999999}) self.assertTemplateUsed(res, 'tickets/list.html') self.assertEqual(len(res.context['tickets']), 1) self.assertEqual(res.context['tickets'][0], t1)
def test_fee_rate_display(self): target = testing.factory_ticket(quantity=100) self.assertEqual(target.fee_rate_display(), '1%')
def test_get_sold_out(self): t = testing.factory_ticket(status=models.Ticket.STATUS_SOLD_OUT) res = self.client.get(self._getTarget(ticket_id=t.id)) self.assertEqual(res.status_code, 404)
def test_fee_display(self): target = testing.factory_ticket(quantity=100, price=1000) self.assertEqual(target.fee_display(), '10円 / 枚')
def test_post_invalid(self): t = testing.factory_ticket(quantity=50) res = self.client.post(self._getTarget(ticket_id=t.id), data={'amount': 51}) self.assertEqual(res.status_code, 200) self.assertEqual(res.context['form'].errors['amount'], ['在庫が不足しています'])
def test_stock_amount_display(self): target = testing.factory_ticket(quantity=10) self.assertEqual(target.stock_amount_display(), '10枚')
def test_clean_amount_too_big(self): ticket = testing.factory_ticket(quantity=800) target = forms.TicketCartForm(ticket=ticket, data={'amount': 801}) self.assertFalse(target.is_valid()) self.assertEqual(target.errors['amount'], ['在庫が不足しています'])
def test_status_is_display(self): target = testing.factory_ticket(status=models.Ticket.STATUS_DISPLAY) self.assertTrue(target.status_is_display())
def test_clean_amount(self): ticket = testing.factory_ticket(quantity=800) target = forms.TicketCartForm(ticket=ticket, data={'amount': 800}) self.assertTrue(target.is_valid())
def test_get(self): t = testing.factory_ticket(seller=self.user) res = self.client.get(self._getTarget(ticket_id=t.id)) self.assertTemplateUsed(res, 'tickets/manage.html') self.assertEqual(res.context['ticket'], t)