def test_clean_and_save_ticket_discount_code(self): # if saved with no discount_code, the ticket should save successfully ticket_no_code = models.Ticket(status='requested', title='mr', first_name="test", last_name="Test", type=self.ticket_type, email='*****@*****.**', phone='0912345678') ticket_no_code.save() # if saved with a code that matches the ticket type of the ticket, the ticket should save successfully ticket_with_valid_code = models.Ticket(status='requested', title='mr', first_name="test", last_name="Test", type=self.ticket_type, email='*****@*****.**', phone='0912345678', discount_code=self.discount_code) ticket_with_valid_code.save() # if discount code has been applied, the discount code should not be available self.assertEquals(self.discount_code.issued_tickets, 1) self.assertIs(self.discount_code.is_available, False) # if saved with a code that matches the ticket type of the ticket, the ticket should save successfully ticket_with_used_code = models.Ticket(status='requested', title='mr', first_name="test", last_name="Test", type=self.ticket_type, email='*****@*****.**', phone='0912345678', discount_code=self.discount_code) self.assertRaises(ValidationError, ticket_with_used_code.save) # if saved with a code that does not match the ticket type of the ticket, the ticket should # raise a validationError ticket_with_invalid_code = models.Ticket(status='requested', title='mr', first_name="test", last_name="Test", type=self.ticket_type, email='*****@*****.**', phone='0912345678', discount_code=self.discount_code_2) # the discount code has not been applied so the number of allowed usages should stay 100 self.assertEquals(self.discount_code_2.issued_tickets, 0) self.assertRaises(ValidationError, ticket_with_invalid_code.save)
def test_automatic_order_generator(self): ticket = models.Ticket(status='requested', title='mr', first_name="test", last_name="Test", type=self.ticket_type, email='*****@*****.**', phone='0912345678', discount_code=self.discount_code) ticket.save() self.assertEquals(ticket.order.status, 'awaiting_payment') self.assertEquals(ticket.order.price, self.ticket_type.price) self.assertEquals(ticket.order.discount, 60)
def test_clean_and_save_ticket_discount_code(self): # if saved with no discount_code, the ticket should save successfully ticket_no_code = models.Ticket(status='requested', title='mr', first_name="test", last_name="Test", type=self.ticket_type, email='*****@*****.**', phone='0912345678') ticket_no_code.save() # if saved with a code that matches the ticket type of the ticket, the ticket should save successfully ticket_with_valid_code = models.Ticket(status='requested', title='mr', first_name="test", last_name="Test", type=self.ticket_type, email='*****@*****.**', phone='0912345678', discount_code=self.discount_code) ticket_with_valid_code.save() # if saved with a code that does not match the ticket type of the ticket, the ticket should # raise a validationError ticket_with_invalid_code = models.Ticket(status='requested', title='mr', first_name="test", last_name="Test", type=self.ticket_type, email='*****@*****.**', phone='0912345678', discount_code=self.discount_code_2) self.assertRaises(ValidationError, ticket_with_invalid_code.save)
def test_string_representation(self): """ String representation of model instance have to be equal to its title """ entry = models.Ticket(first_name="Test", last_name="Tester") self.assertEqual(str(entry), '%s %s' % (entry.first_name, entry.last_name)) entry.title = 'mr' self.assertEqual( str(entry), '%s %s %s' % (dict(TITLE_CHOICES)[entry.title], entry.first_name, entry.last_name))
def test_save_tickets_for_different_event(self): title1 = 'First title' title2 = 'Second title' date_to = timezone.now() date_from = date_to + datetime.timedelta(seconds=1) location = models.Location.objects.order_by('?').first() date_kwargs = {'date_from': date_from, 'date_to': date_to} event_kwargs = {'event_type': Event.MEETUP, 'location': location} event_kwargs.update(date_kwargs) event1 = Event.objects.create(title=title1, slug=slugify(title1), **event_kwargs) event2 = Event.objects.create(title=title2, slug=slugify(title2), **event_kwargs) ticket_type1 = TicketType.objects.create(title=title1, event=event1, price=0, **date_kwargs) ticket_type2 = TicketType.objects.create(title=title2, event=event2, price=0, **date_kwargs) ticket_kwargs = {'status': 'requested', 'title': 'mr', 'first_name': 'test', 'last_name': 'Test', 'email': '*****@*****.**', 'phone': '0912345678'} ticket1 = models.Ticket.objects.create(type=ticket_type1, **ticket_kwargs) ticket2 = models.Ticket(type=ticket_type2, order=ticket1.order, **ticket_kwargs) self.assertRaises(ValidationError, ticket2.save)
def test_automatic_order_generator(self): time = timezone.now() location = models.Location(title='test_title', street='test_street', city='test_city', postcode=000000, state='test_state', capacity=20) location.save() event = models.Event(title='test_event', description='test', event_type='meetup', status=models.event.PUBLISHED, location=location, date_from=time, date_to=time) event.save() ticket_type = models.TicketType(title='test', description='test', price=100, event=event, date_from=timezone.now(), date_to=timezone.now()) ticket_type.save() discount_code = models.DiscountCode(title='test discount', hash='test', discount=60, date_from=time, date_to=time, usage=1, ticket_type=ticket_type) discount_code.save() ticket = models.Ticket(status='requested', title='mr', first_name="test", last_name="Test", type=ticket_type, email='*****@*****.**', phone='0912345678', discount_code=discount_code) ticket.save() self.assertEquals(ticket.order.status, 'awaiting_payment') self.assertEquals(ticket.order.price, ticket_type.price) self.assertEquals(ticket.order.discount, 60)