def setUp(self): self.owner = Person.objects.create_user(email="*****@*****.**", password="******") self.non_owner = Person.objects.create_user( email="*****@*****.**", password="******") self.event = EventFactory(collect_housing_data=False) OrganizationMember.objects.create( person=self.owner, organization=self.event.organization, role=OrganizationMember.OWNER, ) self.order = OrderFactory(event=self.event, code='aaaaaaaa') self.transaction = TransactionFactory(event=self.event, order=self.order) item = ItemFactory(event=self.event) item_option = ItemOptionFactory(price=100, item=item) self.order.add_to_cart(item_option) self.order.add_to_cart(item_option) self.order.mark_cart_paid(self.transaction) self.attendee = AttendeeFactory( order=self.order, bought_items=self.order.bought_items.all()) self.url = reverse('brambling_event_order_detail', kwargs={ 'event_slug': self.event.slug, 'organization_slug': self.event.organization.slug, 'code': self.order.code, })
class OrderDetailViewTest(TestCase): def setUp(self): self.owner = Person.objects.create_user(email="*****@*****.**", password="******") self.non_owner = Person.objects.create_user(email="*****@*****.**", password="******") self.event = EventFactory(collect_housing_data=False) OrganizationMember.objects.create( person=self.owner, organization=self.event.organization, role=OrganizationMember.OWNER, ) self.order = OrderFactory(event=self.event, code='aaaaaaaa') self.transaction = TransactionFactory(event=self.event, order=self.order) item = ItemFactory(event=self.event) item_option = ItemOptionFactory(price=100, item=item) self.order.add_to_cart(item_option) self.order.add_to_cart(item_option) self.order.mark_cart_paid(self.transaction) self.attendee = AttendeeFactory(order=self.order, bought_items=self.order.bought_items.all()) self.url = reverse('brambling_event_order_detail', kwargs={ 'event_slug': self.event.slug, 'organization_slug': self.event.organization.slug, 'code': self.order.code, }) def test_post__order_notes(self): self.client.login(username=self.owner.email, password='******') response = self.client.post( self.url, { 'is_notes_form': '1', 'notes': 'Hello', }, ) self.assertEqual(response.status_code, 302) self.assertEqual(response['Location'], self.url) self.order.refresh_from_db() self.assertEqual(self.order.notes, 'Hello') def test_post__attendee_notes(self): self.client.login(username=self.owner.email, password='******') response = self.client.post( self.url, { 'is_attendee_form': '1', 'attendee_id': str(self.attendee.pk), 'notes': 'Hello', }, ) self.assertEqual(response.status_code, 302) self.assertEqual(response['Location'], self.url) self.attendee.refresh_from_db() self.assertEqual(self.attendee.notes, 'Hello')
def setUp(self): self.event = EventFactory(collect_housing_data=True) self.item = ItemFactory(event=self.event) self.item_option = ItemOptionFactory(price=100, item=self.item) self.order = OrderFactory(event=self.event) self.transaction = TransactionFactory( event=self.event, order=self.order, ) self.order.add_to_cart(self.item_option) self.order.mark_cart_paid(self.transaction) self.attendee = AttendeeFactory( order=self.order, bought_items=self.order.bought_items.all(), housing_status='have', email='*****@*****.**', other_needs='99 mattresses', person_avoid='Darth Vader', person_prefer='Lando Calrissian', ) self.attendee.ef_cause = [ EnvironmentalFactorFactory(name='Laughter'), EnvironmentalFactorFactory(name='Confusion'), ] self.attendee.housing_prefer = [ HousingCategoryFactory(name='Yurt'), ] self.attendee.ef_avoid = [ EnvironmentalFactorFactory(name='Ontology'), EnvironmentalFactorFactory(name='Gnosticism'), ] self.attendee.nights.add(HousingRequestNightFactory(date=self.event.start_date)) attendee_form = CustomFormFactory(event=self.event, form_type='attendee') f1 = CustomFormFieldFactory(form=attendee_form, name='favorite color') self.custom_key1 = f1.key entry1 = CustomFormEntry.objects.create( related_ct=ContentType.objects.get(model='attendee'), related_id=self.attendee.id, form_field=f1) entry1.set_value('ochre') entry1.save() housing_form = CustomFormFactory(event=self.event, form_type='housing') f2 = CustomFormFieldFactory(form=housing_form, name='floor or bed') self.custom_key2 = f2.key entry2 = CustomFormEntry.objects.create( related_ct=ContentType.objects.get(model='attendee'), related_id=self.attendee.pk, form_field=f2) entry2.set_value('bed') entry2.save()
def setUp(self): self.factory = RequestFactory() self.view = MergeOrderView() event = EventFactory(collect_housing_data=True) item = ItemFactory(event=event) item_option = ItemOptionFactory(price=100, item=item) self.person = PersonFactory() self.order1 = OrderFactory(event=event, person=self.person) self.order2 = OrderFactory(event=event, person=None, email=self.person.email) self.tr1 = TransactionFactory(event=event, order=self.order1) self.tr2 = TransactionFactory(event=event, order=self.order2) self.order1.add_to_cart(item_option) self.order1.mark_cart_paid(self.tr1) self.order2.add_to_cart(item_option) self.order2.add_to_cart(item_option) self.order2.mark_cart_paid(self.tr2) self.att1 = AttendeeFactory( order=self.order1, bought_items=self.order1.bought_items.all(), email='*****@*****.**') self.att2 = AttendeeFactory( order=self.order2, bought_items=self.order2.bought_items.all(), email='*****@*****.**') self.housing2 = EventHousingFactory( event=event, order=self.order2, contact_name='Picard', contact_email='*****@*****.**', contact_phone='111-111-1111', public_transit_access=True, person_prefer='Dr. Crusher', person_avoid='Wesley Crusher') self.attendee1 = AttendeeFactory(order=self.order1) self.attendee2 = AttendeeFactory(order=self.order2) self.view.request = self.factory.post('/', {'pk': self.order2.pk}) self.view.request.user = self.person setattr(self.view.request, 'session', 'session') messages = FallbackStorage(self.view.request) setattr(self.view.request, '_messages', messages)
def test_order_by_purchase_date(self): """ If ordering by purchase date is selected, we should get that ordering even if the field isn't selected. """ order2 = OrderFactory(event=self.event) transaction = TransactionFactory( event=self.event, order=order2, timestamp=timezone.now() - datetime.timedelta(days=50) ) order2.add_to_cart(self.item_option) order2.mark_cart_paid(transaction) attendee2 = AttendeeFactory( order=order2, bought_items=order2.bought_items.all(), housing_status='have', email='*****@*****.**', other_needs='99 mattresses', person_avoid='Darth Vader', person_prefer='Han Solo', ) table = AttendeeTable( event=self.event, data={ 'o': '-purchase_date', TABLE_COLUMN_FIELD: ['pk', 'get_full_name'], }, ) rows = list(table) self.assertEqual(rows[0]['pk'].value, self.attendee.pk) self.assertEqual(rows[1]['pk'].value, attendee2.pk)
def test_needs_housing(self): event = EventFactory(collect_housing_data=False) order = OrderFactory(event=event) transaction = TransactionFactory(event=event, order=order) item = ItemFactory(event=event) item_option = ItemOptionFactory(price=100, item=item) order.add_to_cart(item_option) order.add_to_cart(item_option) order.mark_cart_paid(transaction) a1 = AttendeeFactory(order=order, bought_items=order.bought_items.all(), housing_status=Attendee.NEED) a2 = AttendeeFactory(order=order, bought_items=order.bought_items.all()) self.assertTrue(a1.needs_housing()) self.assertFalse(a2.needs_housing())
def test_unicode_csv(self): event = EventFactory(collect_housing_data=True, currency='GBP') order = OrderFactory(event=event) transaction = TransactionFactory(event=event, order=order) item = ItemFactory(event=event) item_option = ItemOptionFactory(price=100, item=item) order.add_to_cart(item_option) order.add_to_cart(item_option) order.mark_cart_paid(transaction) AttendeeFactory( order=order, bought_items=order.bought_items.all(), housing_status=Attendee.HOME, ) view = AttendeeFilterView() view.event = event view.request = self.factory.get('/?format=csv') view.request.user = AnonymousUser() table = view.get_table(Attendee.objects.all()) response = view.render_to_response({'table': table}) self.assertEqual(response['content-disposition'], 'attachment; filename="export.csv"') content = list(response) self.assertIn('£200.00', content[1])
def test_attendee_count__home_housing(self): """Attendee count should be present & accurate; housing data should.""" event = EventFactory(collect_housing_data=True) order = OrderFactory(event=event) transaction = TransactionFactory(event=event, order=order) item = ItemFactory(event=event) item_option = ItemOptionFactory(price=100, item=item) order.add_to_cart(item_option) order.add_to_cart(item_option) order.mark_cart_paid(transaction) AttendeeFactory( order=order, bought_items=order.bought_items.all(), housing_status=Attendee.HOME, ) view = EventSummaryView() view.request = self.factory.get('/') view.request.user = AnonymousUser() view.event = event context_data = view.get_context_data() self.assertEqual(context_data['attendee_count'], 1) self.assertEqual(context_data['attendee_requesting_count'], 0) self.assertEqual(context_data['attendee_arranged_count'], 0) self.assertEqual(context_data['attendee_home_count'], 1)
def test_queryset_distinct(self): """ For authenticated users, make sure the qs is distinct. Specifically, having multiple additional editors on the event shouldn't cause duplication issues. """ person = PersonFactory() editor1 = PersonFactory() editor2 = PersonFactory() editor3 = PersonFactory() event = EventFactory(collect_housing_data=False) EventMember.objects.create( person=editor1, event=event, role=EventMember.EDIT, ) EventMember.objects.create( person=editor2, event=event, role=EventMember.EDIT, ) EventMember.objects.create( person=editor3, event=event, role=EventMember.EDIT, ) order = OrderFactory(event=event, person=person) # Set up three attendees to trigger duplication. AttendeeFactory(order=order) AttendeeFactory(order=order) AttendeeFactory(order=order) item = ItemFactory(event=event) item_option = ItemOptionFactory(price=100, item=item) order.add_to_cart(item_option) order.add_to_cart(item_option) viewset = BoughtItemViewSet() viewset.request = self.factory.get('/') viewset.request.user = person qs = viewset.get_queryset() self.assertEqual(len(qs), 2) self.assertEqual(set(qs), set(order.bought_items.all()))
def test_queryset_distinct(self): """ For authenticated users, make sure the qs is distinct. Specifically, having multiple additional editors on the event shouldn't cause duplication issues. """ person = PersonFactory() editor1 = PersonFactory() editor2 = PersonFactory() editor3 = PersonFactory() event = EventFactory(collect_housing_data=False) EventMember.objects.create( person=editor1, event=event, role=EventMember.EDIT, ) EventMember.objects.create( person=editor2, event=event, role=EventMember.EDIT, ) EventMember.objects.create( person=editor3, event=event, role=EventMember.EDIT, ) order = OrderFactory(event=event, person=person) att1 = AttendeeFactory(order=order) att2 = AttendeeFactory(order=order) att3 = AttendeeFactory(order=order) viewset = AttendeeViewSet() viewset.request = self.factory.get('/') viewset.request.user = person qs = viewset.get_queryset() self.assertEqual(len(qs), 3) self.assertEqual(set(qs), set((att1, att2, att3)))
def setUp(self): self.event = EventFactory() self.order = OrderFactory(event=self.event) self.transaction = TransactionFactory( event=self.event, order=self.order, ) self.item = ItemFactory(event=self.event) self.item_option = ItemOptionFactory(price=100, item=self.item) self.order.add_to_cart(self.item_option) self.order.mark_cart_paid(self.transaction) self.attendee = AttendeeFactory( order=self.order, bought_items=self.order.bought_items.all(), ) self.view = AttendeeFilterView() self.view.event = self.event
def setUp(self): self.factory = RequestFactory() self.owner = Person.objects.create_user(email="*****@*****.**", password="******") self.non_owner = Person.objects.create_user( email="*****@*****.**", password="******") self.event = EventFactory(collect_housing_data=False) OrganizationMember.objects.create( person=self.owner, organization=self.event.organization, role=OrganizationMember.OWNER, ) order = OrderFactory(event=self.event, code='aaaaaaaa') self.transaction = TransactionFactory(event=self.event, order=order) item = ItemFactory(event=self.event) item_option = ItemOptionFactory(price=100, item=item) order.add_to_cart(item_option) order.add_to_cart(item_option) order.mark_cart_paid(self.transaction) AttendeeFactory(order=order, bought_items=order.bought_items.all())
def setUp(self): self.factory = RequestFactory() owner = PersonFactory() self.event = EventFactory(collect_housing_data=False) OrganizationMember.objects.create( person=owner, organization=self.event.organization, role=OrganizationMember.OWNER, ) order = OrderFactory(event=self.event, code='aaaaaaaa') self.transaction = TransactionFactory(event=self.event, order=order) item = ItemFactory(event=self.event) item_option = ItemOptionFactory(price=100, item=item) order.add_to_cart(item_option) order.add_to_cart(item_option) order.mark_cart_paid(self.transaction) AttendeeFactory(order=order, bought_items=order.bought_items.all()) self.view = SendReceiptView() self.view.request = self.factory.get('/') self.view.request.user = owner
def setUp(self): self.owner = Person.objects.create_user(email="*****@*****.**", password="******") self.non_owner = Person.objects.create_user(email="*****@*****.**", password="******") self.event = EventFactory(collect_housing_data=False) OrganizationMember.objects.create( person=self.owner, organization=self.event.organization, role=OrganizationMember.OWNER, ) self.order = OrderFactory(event=self.event, code='aaaaaaaa') self.transaction = TransactionFactory(event=self.event, order=self.order) item = ItemFactory(event=self.event) item_option = ItemOptionFactory(price=100, item=item) self.order.add_to_cart(item_option) self.order.add_to_cart(item_option) self.order.mark_cart_paid(self.transaction) self.attendee = AttendeeFactory(order=self.order, bought_items=self.order.bought_items.all()) self.url = reverse('brambling_event_order_detail', kwargs={ 'event_slug': self.event.slug, 'organization_slug': self.event.organization.slug, 'code': self.order.code, })
def setUp(self): event = EventFactory(collect_housing_data=True, start_date=now().date() + timedelta(days=2), end_date=now().date() + timedelta(days=2)) order = OrderFactory(event=event, providing_housing=False) housing = EventHousingFactory(event=event, order=order, contact_name='Zardoz', contact_email='*****@*****.**', contact_phone='111-111-1111', public_transit_access=True, person_prefer='Han Solo', person_avoid='Greedo') HousingSlotFactory(eventhousing=housing, date=event.start_date, spaces=1, spaces_max=1) HousingSlotFactory(eventhousing=housing, date=event.start_date - timedelta(days=1), spaces=1, spaces_max=1) housing.ef_present.add(EnvironmentalFactorFactory(name='Carbonite')) housing.ef_present.add(EnvironmentalFactorFactory(name='Sandbarges')) housing.ef_avoid.add(EnvironmentalFactorFactory(name='Jedi')) housing.ef_avoid.add(EnvironmentalFactorFactory(name='Droids')) housing.housing_categories.add(HousingCategoryFactory(name='Palace')) transaction = TransactionFactory(event=event, order=order) item = ItemFactory(event=event) item_option = ItemOptionFactory(price=100, item=item) order.add_to_cart(item_option) order.mark_cart_paid(transaction) self.attendee = AttendeeFactory( order=order, bought_items=order.bought_items.all(), housing_status='have', email='*****@*****.**', other_needs='99 mattresses', person_avoid='Darth Vader', person_prefer='Lando Calrissian', ) self.attendee.ef_cause = [ EnvironmentalFactorFactory(name='Laughter'), EnvironmentalFactorFactory(name='Confusion'), ] self.attendee.housing_prefer = [ HousingCategoryFactory(name='Yurt'), ] self.attendee.ef_avoid = [ EnvironmentalFactorFactory(name='Ontology'), EnvironmentalFactorFactory(name='Gnosticism'), ] self.attendee.nights.add( HousingRequestNightFactory(date=event.start_date)) housing_form = CustomFormFactory(event=event, form_type='hosting') field = CustomFormFieldFactory(form=housing_form, name='bed condition') self.custom_key = field.key entry2 = CustomFormEntry.objects.create( related_ct=ContentType.objects.get(model='eventhousing'), related_id=housing.pk, form_field=field) entry2.set_value('unmade') entry2.save() self.event = event self.order = order
class AttendeeTableTestCase(TestCase): def setUp(self): event = EventFactory(collect_housing_data=True) order = OrderFactory(event=event) transaction = TransactionFactory(event=event, order=order) item = ItemFactory(event=event) item_option = ItemOptionFactory(price=100, item=item) order.add_to_cart(item_option) order.mark_cart_paid(transaction) self.attendee = AttendeeFactory( order=order, bought_items=order.bought_items.all(), housing_status='have', email='*****@*****.**', other_needs='99 mattresses', person_avoid='Darth Vader', person_prefer='Lando Calrissian', ) self.attendee.ef_cause = [ EnvironmentalFactorFactory(name='Laughter'), EnvironmentalFactorFactory(name='Confusion'), ] self.attendee.housing_prefer = [ HousingCategoryFactory(name='Yurt'), ] self.attendee.ef_avoid = [ EnvironmentalFactorFactory(name='Ontology'), EnvironmentalFactorFactory(name='Gnosticism'), ] self.attendee.nights.add( HousingRequestNightFactory(date=event.start_date)) attendee_form = CustomFormFactory(event=event, form_type='attendee') f1 = CustomFormFieldFactory(form=attendee_form, name='favorite color') self.custom_key1 = f1.key entry1 = CustomFormEntry.objects.create( related_ct=ContentType.objects.get(model='attendee'), related_id=self.attendee.id, form_field=f1) entry1.set_value('ochre') entry1.save() housing_form = CustomFormFactory(event=event, form_type='housing') f2 = CustomFormFieldFactory(form=housing_form, name='floor or bed') self.custom_key2 = f2.key entry2 = CustomFormEntry.objects.create( related_ct=ContentType.objects.get(model='attendee'), related_id=self.attendee.pk, form_field=f2) entry2.set_value('bed') entry2.save() self.event = event def test_blank_housing_fields_if_attendee_does_not_need_housing(self): table = AttendeeTable(self.event) for row in table: self.assertEqual(row['other_needs_if_needed'].value, '') self.assertEqual(row['housing_nights'].value, '') self.assertEqual(row['housing_preferences'].value, '') self.assertEqual(row['environment_avoid'].value, '') self.assertEqual(row['environment_cause'].value, '') self.assertEqual(row['person_prefer_if_needed'].value, '') self.assertEqual(row['person_avoid_if_needed'].value, '') self.assertEqual(row[self.custom_key2].value, '') def test__show_non_housing_form_data_if_attendee_needs_housing(self): table = AttendeeTable(self.event) for row in table: self.assertEqual(row[self.custom_key1].value, 'ochre') def test_show_non_housing_form_data_if_attendee_does_not_need_housing( self): self.attendee.housing_status = 'need' self.attendee.save() table = AttendeeTable(self.event) for row in table: self.assertEqual(row[self.custom_key1].value, 'ochre') def test_filled_housing_fields_if_attendee_needs_housing(self): self.attendee.housing_status = 'need' self.attendee.save() table = AttendeeTable(self.event) for row in table: self.assertNotEqual(row['other_needs_if_needed'].value, '') self.assertNotEqual(row['housing_nights'].value, '') self.assertNotEqual(row['housing_preferences'].value, '') self.assertNotEqual(row['environment_avoid'].value, '') self.assertNotEqual(row['environment_cause'].value, '') self.assertNotEqual(row['person_prefer_if_needed'].value, '') self.assertNotEqual(row['person_avoid_if_needed'].value, '') self.assertNotEqual(row[self.custom_key2].value, '')
class OrderDetailViewTest(TestCase): def setUp(self): self.owner = Person.objects.create_user(email="*****@*****.**", password="******") self.non_owner = Person.objects.create_user( email="*****@*****.**", password="******") self.event = EventFactory(collect_housing_data=False) OrganizationMember.objects.create( person=self.owner, organization=self.event.organization, role=OrganizationMember.OWNER, ) self.order = OrderFactory(event=self.event, code='aaaaaaaa') self.transaction = TransactionFactory(event=self.event, order=self.order) item = ItemFactory(event=self.event) item_option = ItemOptionFactory(price=100, item=item) self.order.add_to_cart(item_option) self.order.add_to_cart(item_option) self.order.mark_cart_paid(self.transaction) self.attendee = AttendeeFactory( order=self.order, bought_items=self.order.bought_items.all()) self.url = reverse('brambling_event_order_detail', kwargs={ 'event_slug': self.event.slug, 'organization_slug': self.event.organization.slug, 'code': self.order.code, }) def test_post__order_notes(self): self.client.login(username=self.owner.email, password='******') response = self.client.post( self.url, { 'is_notes_form': '1', 'notes': 'Hello', }, ) self.assertEqual(response.status_code, 302) self.assertEqual(response['Location'], self.url) self.order.refresh_from_db() self.assertEqual(self.order.notes, 'Hello') def test_post__attendee_notes(self): self.client.login(username=self.owner.email, password='******') response = self.client.post( self.url, { 'is_attendee_form': '1', 'attendee_id': str(self.attendee.pk), 'notes': 'Hello', }, ) self.assertEqual(response.status_code, 302) self.assertEqual(response['Location'], self.url) self.attendee.refresh_from_db() self.assertEqual(self.attendee.notes, 'Hello')
class AttendeeTableTestCase(TestCase): def setUp(self): self.event = EventFactory(collect_housing_data=True) self.item = ItemFactory(event=self.event) self.item_option = ItemOptionFactory(price=100, item=self.item) self.order = OrderFactory(event=self.event) self.transaction = TransactionFactory( event=self.event, order=self.order, ) self.order.add_to_cart(self.item_option) self.order.mark_cart_paid(self.transaction) self.attendee = AttendeeFactory( order=self.order, bought_items=self.order.bought_items.all(), housing_status='have', email='*****@*****.**', other_needs='99 mattresses', person_avoid='Darth Vader', person_prefer='Lando Calrissian', ) self.attendee.ef_cause = [ EnvironmentalFactorFactory(name='Laughter'), EnvironmentalFactorFactory(name='Confusion'), ] self.attendee.housing_prefer = [ HousingCategoryFactory(name='Yurt'), ] self.attendee.ef_avoid = [ EnvironmentalFactorFactory(name='Ontology'), EnvironmentalFactorFactory(name='Gnosticism'), ] self.attendee.nights.add(HousingRequestNightFactory(date=self.event.start_date)) attendee_form = CustomFormFactory(event=self.event, form_type='attendee') f1 = CustomFormFieldFactory(form=attendee_form, name='favorite color') self.custom_key1 = f1.key entry1 = CustomFormEntry.objects.create( related_ct=ContentType.objects.get(model='attendee'), related_id=self.attendee.id, form_field=f1) entry1.set_value('ochre') entry1.save() housing_form = CustomFormFactory(event=self.event, form_type='housing') f2 = CustomFormFieldFactory(form=housing_form, name='floor or bed') self.custom_key2 = f2.key entry2 = CustomFormEntry.objects.create( related_ct=ContentType.objects.get(model='attendee'), related_id=self.attendee.pk, form_field=f2) entry2.set_value('bed') entry2.save() def test_blank_housing_fields_if_attendee_does_not_need_housing(self): table = AttendeeTable(self.event) for row in table: self.assertEqual(row['other_needs_if_needed'].value, '') self.assertEqual(row['housing_nights'].value, '') self.assertEqual(row['housing_preferences'].value, '') self.assertEqual(row['environment_avoid'].value, '') self.assertEqual(row['environment_cause'].value, '') self.assertEqual(row['person_prefer_if_needed'].value, '') self.assertEqual(row['person_avoid_if_needed'].value, '') self.assertEqual(row[self.custom_key2].value, '') def test__show_non_housing_form_data_if_attendee_needs_housing(self): table = AttendeeTable(self.event) for row in table: self.assertEqual(row[self.custom_key1].value, 'ochre') def test_show_non_housing_form_data_if_attendee_does_not_need_housing(self): self.attendee.housing_status = 'need' self.attendee.save() table = AttendeeTable(self.event) for row in table: self.assertEqual(row[self.custom_key1].value, 'ochre') def test_filled_housing_fields_if_attendee_needs_housing(self): self.attendee.housing_status = 'need' self.attendee.save() table = AttendeeTable(self.event) for row in table: self.assertNotEqual(row['other_needs_if_needed'].value, '') self.assertNotEqual(row['housing_nights'].value, '') self.assertNotEqual(row['housing_preferences'].value, '') self.assertNotEqual(row['environment_avoid'].value, '') self.assertNotEqual(row['environment_cause'].value, '') self.assertNotEqual(row['person_prefer_if_needed'].value, '') self.assertNotEqual(row['person_avoid_if_needed'].value, '') self.assertNotEqual(row[self.custom_key2].value, '') def test_purchase_date_field(self): table = AttendeeTable( event=self.event, data={ TABLE_COLUMN_FIELD: ['pk', 'purchase_date'], }, ) row = list(table)[0] self.assertEqual( row['purchase_date'].value, format_as_localtime( self.transaction.timestamp, '%Y-%m-%d %H:%M', self.event.timezone, ), ) def test_order_by_purchase_date(self): """ If ordering by purchase date is selected, we should get that ordering even if the field isn't selected. """ order2 = OrderFactory(event=self.event) transaction = TransactionFactory( event=self.event, order=order2, timestamp=timezone.now() - datetime.timedelta(days=50) ) order2.add_to_cart(self.item_option) order2.mark_cart_paid(transaction) attendee2 = AttendeeFactory( order=order2, bought_items=order2.bought_items.all(), housing_status='have', email='*****@*****.**', other_needs='99 mattresses', person_avoid='Darth Vader', person_prefer='Han Solo', ) table = AttendeeTable( event=self.event, data={ 'o': '-purchase_date', TABLE_COLUMN_FIELD: ['pk', 'get_full_name'], }, ) rows = list(table) self.assertEqual(rows[0]['pk'].value, self.attendee.pk) self.assertEqual(rows[1]['pk'].value, attendee2.pk)