コード例 #1
0
 def setUp(self):
     self.client = Client()
     self.ticketing_event = TicketingEventsFactory()
     self.gbe_event = ShowFactory()
     self.privileged_user = ProfileFactory().user_object
     grant_privilege(self.privileged_user, 'Ticketing - Admin')
     self.url = reverse('set_ticket_to_event',
                        urlconf='ticketing.urls',
                        args=[self.ticketing_event.event_id,
                              "on",
                              self.gbe_event.eventitem_id])
コード例 #2
0
    def test_get_tickets_for_master_class(self):
        '''get the one ticket that is active for the Master Class
        '''
        event = GenericEventFactory(type='Master')
        ticketing_event = TicketingEventsFactory(conference=event.e_conference,
                                                 title="Master Class 2017")
        ticketing_event.linked_events.add(event)
        ticketing_event.save()
        TicketItemFactory(ticketing_event=ticketing_event,
                          live=True,
                          has_coupon=False)
        tickets = event.get_tickets()

        self.assertEqual(len(tickets), 1)
        self.assertEqual(tickets[0].title, "Master Class 2017")
コード例 #3
0
    def test_get_eb_inventory_ticket_pagination(self, m_eventbrite):
        # privileged user gets the inventory of tickets from (fake) EB
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        event = TicketingEventsFactory()
        BrownPaperSettingsFactory()
        EventbriteSettingsFactory()
        simple_event_dict = copy.deepcopy(event_dict)
        simple_event_dict['events'] = [event_dict['events'][0]]
        continue_ticket_page = copy.deepcopy(ticket_dict1)
        continue_ticket_page['pagination']['has_more_items'] = True
        continue_ticket_page['pagination']['continuation'] = "eyJwYWdlIjogMn0"
        m_eventbrite.side_effect = [
            simple_event_dict, continue_ticket_page, ticket_dict3
        ]

        response = self.import_tickets()
        assert_alert_exists(response, 'success', 'Success',
                            ("Successfully imported %d events, %d tickets" %
                             (1, 4)))
        assert_alert_exists(response, 'success', 'Success',
                            ("BPT: imported %d tickets") % (0))
        ticket = get_object_or_404(TicketItem, ticket_id='987987987')
        self.assertEqual(ticket.cost, Decimal('0.00'))
        ticket = get_object_or_404(TicketItem, ticket_id='098098098')
        self.assertEqual(ticket.cost, Decimal('100.00'))
コード例 #4
0
    def test_get_transaction_fake_out(self, m_urlopen):
        '''
           in a case of user email vs. purchase email, purchase wins.
        '''
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        event = TicketingEventsFactory()
        ticket = TicketItemFactory(ticketing_event=event,
                                   ticket_id='%s-%s' %
                                   (event.event_id, '3255985'))
        BrownPaperSettingsFactory()
        limbo, created = User.objects.get_or_create(username='******')
        user = UserFactory(email='*****@*****.**')
        profile = ProfileFactory(user_object=user,
                                 purchase_email='*****@*****.**')
        a = Mock()
        order_filename = open("tests/ticketing/orderlist.xml", 'r')
        a.read.side_effect = [File(order_filename).read()]
        m_urlopen.return_value = a

        self.assertEqual(process_bpt_order_list(), 1)
        transaction = get_object_or_404(Transaction, reference='A12345678')
        self.assertEqual(str(transaction.order_date), "2014-08-15 19:26:56")
        self.assertEqual(transaction.shipping_method, 'Will Call')
        self.assertEqual(transaction.order_notes, 'None')
        self.assertEqual(transaction.payment_source, 'Brown Paper Tickets')
        self.assertEqual(transaction.purchaser.email, '*****@*****.**')
        self.assertEqual(transaction.purchaser.phone, '111-222-3333')
        self.assertEqual(transaction.purchaser.matched_to_user, limbo)
        self.assertEqual(transaction.purchaser.first_name, 'John')
        self.assertEqual(transaction.purchaser.last_name, 'Smith')
        user.delete()
コード例 #5
0
    def test_get_transaction_purchase_email_case_mismatch(self, m_urlopen):
        '''
           get a transaction for a real user via the purchase_email
        '''
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        event = TicketingEventsFactory()
        ticket = TicketItemFactory(ticketing_event=event,
                                   ticket_id='%s-%s' %
                                   (event.event_id, '3255985'))
        BrownPaperSettingsFactory()
        profile = ProfileFactory(purchase_email='*****@*****.**')

        a = Mock()
        order_filename = open("tests/ticketing/orderlist.xml", 'r')
        a.read.side_effect = [File(order_filename).read()]
        m_urlopen.return_value = a

        self.assertEqual(process_bpt_order_list(), 1)
        transaction = get_object_or_404(Transaction, reference='A12345678')
        self.assertEqual(str(transaction.order_date), "2014-08-15 19:26:56")
        self.assertEqual(transaction.shipping_method, 'Will Call')
        self.assertEqual(transaction.order_notes, 'None')
        self.assertEqual(transaction.payment_source, 'Brown Paper Tickets')
        self.assertEqual(transaction.purchaser.email, '*****@*****.**')
        self.assertEqual(transaction.purchaser.phone, '111-222-3333')
        self.assertEqual(transaction.purchaser.matched_to_user,
                         profile.user_object)
        self.assertEqual(transaction.purchaser.first_name, 'John')
        self.assertEqual(transaction.purchaser.last_name, 'Smith')
        profile.user_object.delete()
コード例 #6
0
def make_act_app_ticket(conference):
    ticketing_event = TicketingEventsFactory(conference=conference,
                                             act_submission_event=True)
    ticket_id = "%s-1111" % (ticketing_event.event_id)
    ticket = TicketItemFactory(ticket_id=ticket_id,
                               ticketing_event=ticketing_event)
    return ticketing_event.event_id
コード例 #7
0
 def test_make_new_ticket(self, m_urlopen):
     grant_privilege(self.privileged_user, 'Ticketing - Admin')
     TicketingEvents.objects.all().delete()
     BrownPaperSettings.objects.all().delete()
     BrownPaperSettingsFactory()
     ticketing_event = TicketingEventsFactory(
         conference=self.current_conference)
     a = Mock()
     event_filename = open("tests/ticketing/eventlist.xml", 'r')
     a.read.side_effect = [File(event_filename).read()]
     m_urlopen.return_value = a
     login_as(self.privileged_user, self)
     data = self.edit_class()
     data['event_id'] = "1122333"
     data['display_icon'] = "icon-diamond"
     response = self.client.post(self.url, data=data, follow=True)
     new_class = GenericEvent.objects.get(e_title=data['e_title'])
     self.assertEqual(new_class.type, "Master")
     occurrence = Event.objects.get(
         eventitem__eventitem_id=new_class.eventitem_id)
     self.assertRedirects(
         response, "%s?%s-day=%d&filter=Filter&new=[%d]" %
         (reverse('manage_event_list',
                  urlconf='gbe.scheduling.urls',
                  args=[self.current_conference.conference_slug
                        ]), self.current_conference.conference_slug,
          self.day.pk, occurrence.pk))
     assert_alert_exists(
         response, 'success', 'Success',
         "%s %s - %s" % (create_ticket_event_success_msg, data['event_id'],
                         "GBE10 Whole Shebang 2016"))
     assert_alert_exists(response, 'warning', "Warning",
                         no_tickets_found_msg)
コード例 #8
0
    def test_transactions_sync_bpt_only(self, m_urlopen):
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        BrownPaperSettingsFactory()
        event = TicketingEventsFactory(event_id="1")
        ticket = TicketItemFactory(ticketing_event=event,
                                   ticket_id='%s-%s' %
                                   (event.event_id, '3255985'))

        limbo, created = User.objects.get_or_create(username='******')

        a = Mock()
        order_filename = open("tests/ticketing/orderlist.xml", 'r')
        a.read.side_effect = [File(order_filename).read()]
        m_urlopen.return_value = a

        login_as(self.privileged_user, self)
        response = self.client.post(self.url, data={'Sync': 'Sync'})
        nt.assert_equal(response.status_code, 200)

        transaction = get_object_or_404(Transaction, reference='A12345678')
        nt.assert_equal(str(transaction.order_date), "2014-08-15 19:26:56")
        nt.assert_equal(transaction.shipping_method, 'Will Call')
        nt.assert_equal(transaction.order_notes, 'None')
        nt.assert_equal(transaction.payment_source, 'Brown Paper Tickets')
        nt.assert_equal(transaction.purchaser.email, '*****@*****.**')
        nt.assert_equal(transaction.purchaser.phone, '111-222-3333')
        nt.assert_equal(transaction.purchaser.matched_to_user, limbo)
        nt.assert_equal(transaction.purchaser.first_name, 'John')
        nt.assert_equal(transaction.purchaser.last_name, 'Smith')
        assert_alert_exists(
            response, 'success', 'Success',
            "%s   Transactions imported: %s - BPT" %
            (import_transaction_message, "1"))
        assert_alert_exists(response, 'danger', 'Error', no_settings_error)
コード例 #9
0
    def test_get_event_detail(self, m_urlopen):
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        event = TicketingEventsFactory(title='', description='')
        BrownPaperSettingsFactory()

        a = Mock()
        event_filename = open("tests/ticketing/eventlist.xml", 'r')
        date_filename = open("tests/ticketing/datelist.xml", 'r')
        price_filename = open("tests/ticketing/pricelist.xml", 'r')
        a.read.side_effect = [
            File(event_filename).read(),
            File(date_filename).read(),
            File(price_filename).read()
        ]
        m_urlopen.return_value = a

        response = self.import_tickets()
        self.assertEqual(response.status_code, 200)
        reload_event = get_object_or_404(TicketingEvents,
                                         event_id='%s' % (event.event_id))
        self.assertEqual(response.status_code, 200)
        self.assertIn(
            "The Great Burlesque Exposition of 2016 takes place Feb. 5-7",
            reload_event.description)
コード例 #10
0
    def test_reimport_bpt_inventory(self, m_urlopen):
        # reimporting gets nothing new but doesn't fail
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        event = TicketingEventsFactory()
        BrownPaperSettingsFactory()
        TicketItemFactory(ticket_id='%s-4513068' % (event.event_id),
                          has_coupon=True,
                          live=False,
                          ticketing_event=event)
        a = Mock()
        date_filename = open("tests/ticketing/datelist.xml", 'r')
        price_filename = open("tests/ticketing/pricelist.xml", 'r')
        a.read.side_effect = [
            File(date_filename).read(),
            File(price_filename).read()
        ]
        m_urlopen.return_value = a

        response = self.import_tickets()
        self.assertEqual(response.status_code, 200)
        ticket = get_object_or_404(TicketItem,
                                   ticket_id='%s-4513068' % (event.event_id))
        assert ticket.live
        assert ticket.has_coupon
コード例 #11
0
    def test_get_bpt_inventory(self, m_urlopen):
        # privileged user gets the inventory of tickets from (fake) BPT
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        event = TicketingEventsFactory()
        BrownPaperSettingsFactory()

        a = Mock()
        date_filename = open("tests/ticketing/datelist.xml", 'r')
        price_filename = open("tests/ticketing/pricelist.xml", 'r')
        a.read.side_effect = [
            File(date_filename).read(),
            File(price_filename).read()
        ]
        m_urlopen.return_value = a

        response = self.import_tickets()
        self.assertEqual(response.status_code, 200)
        assert_alert_exists(response, 'danger', 'Error', no_settings_error)
        assert_alert_exists(response, 'success', 'Success',
                            "BPT: imported %d tickets" % 12)
        ticket = get_object_or_404(TicketItem,
                                   ticket_id='%s-4513068' % (event.event_id))
        self.assertEqual(response.status_code, 200)
        self.assertEqual(ticket.cost, Decimal('125.00'))
コード例 #12
0
def make_vendor_app_purchase(conference, user_object):
    ticketing_event = TicketingEventsFactory(conference=conference,
                                             vendor_submission_event=True)
    purchaser = PurchaserFactory(matched_to_user=user_object)
    ticket_id = "%s-1111" % (ticketing_event.event_id)
    ticket = TicketItemFactory(ticket_id=ticket_id,
                               ticketing_event=ticketing_event)
    transaction = TransactionFactory(ticket_item=ticket, purchaser=purchaser)
    return transaction
コード例 #13
0
 def test_get_tickets(self):
     grant_privilege(self.privileged_user, 'Ticketing - Admin')
     ticketing_event = TicketingEventsFactory(
         conference=self.current_conference)
     login_as(self.privileged_user, self)
     response = self.client.get(self.url)
     self.assertEqual(response.status_code, 200)
     self.assertContains(
         response,
         "%s - %s" % (ticketing_event.event_id, ticketing_event.title))
コード例 #14
0
    def test_get_tickets_for_class_three_ways(self):
        '''the ticket is linked to the class event three ways - 'most',
        'conference', and a direct link.  It only should appear once.
        '''
        event = ClassFactory()
        ticketing_event = TicketingEventsFactory(
            conference=event.e_conference,
            include_most=True,
            include_conference=True,
            title="The Whole Shebang 2016")
        ticketing_event.linked_events.add(event)
        ticketing_event.save()
        TicketItemFactory(ticketing_event=ticketing_event,
                          live=True,
                          has_coupon=False)

        tickets = event.get_tickets()
        self.assertEqual(len(tickets), 1)
        self.assertEqual(tickets[0].title, "The Whole Shebang 2016")
コード例 #15
0
    def test_no_event_list(self, m_urlopen):
        # not event list comes when getting inventory
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        event = TicketingEventsFactory(title="", description="")
        BrownPaperSettingsFactory()

        a = Mock()
        a.read.side_effect = []
        m_urlopen.return_value = a

        response = self.import_tickets()
        self.assertEqual(response.status_code, 200)
コード例 #16
0
    def test_no_settings(self, m_urlopen):
        # not date list comes when getting inventory
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        event = TicketingEventsFactory(title="", description="")

        a = Mock()
        event_filename = open("tests/ticketing/eventlist.xml", 'r')
        a.read.side_effect = [File(event_filename).read()]
        m_urlopen.return_value = a

        response = self.import_tickets()
        self.assertEqual(response.status_code, 200)
コード例 #17
0
    def test_urlerror(self, m_urlopen):
        # first read from BPT has a URL read error
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        event = TicketingEventsFactory(title="", description="")
        BrownPaperSettingsFactory()

        a = Mock()
        a.read.side_effect = urllib.error.URLError("test url error")
        m_urlopen.return_value = a

        response = self.import_tickets()
        self.assertEqual(response.status_code, 200)
コード例 #18
0
def make_admission_purchase(conference,
                            user_object,
                            include_most=False,
                            include_conference=False):
    ticketing_event = TicketingEventsFactory(
        conference=conference,
        include_most=include_most,
        include_conference=include_conference)
    purchaser = PurchaserFactory(matched_to_user=user_object)
    ticket_id = "%s-1111" % (ticketing_event.event_id)
    ticket = TicketItemFactory(ticket_id=ticket_id,
                               ticketing_event=ticketing_event)
    transaction = TransactionFactory(ticket_item=ticket, purchaser=purchaser)
コード例 #19
0
    def test_get_eb_no_org(self, m_eventbrite):
        # privileged user gets the inventory of tickets from (fake) EB
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        event = TicketingEventsFactory()
        BrownPaperSettingsFactory()
        EventbriteSettingsFactory(organization_id=None)

        m_eventbrite.side_effect = [org_dict]

        response = self.import_tickets()
        assert_alert_exists(
            response, 'danger', 'Error',
            "%s<br>%s - %s" % (org_id_instructions, "547440371489", "GBE Dev"))
コード例 #20
0
    def test_get_tickets_for_class(self):
        '''get one ticket for everything but master, and one for classes
        '''
        event = ClassFactory()
        ws_ticketing_event = TicketingEventsFactory(
            conference=event.e_conference,
            include_most=True,
            title="The Whole Shebang 2016")
        sch_ticketing_event = TicketingEventsFactory(
            conference=event.e_conference,
            include_conference=True,
            title="The Scholar 2016")
        whole_shebang = TicketItemFactory(ticketing_event=ws_ticketing_event,
                                          live=True,
                                          has_coupon=False)
        scholar = TicketItemFactory(ticketing_event=sch_ticketing_event,
                                    live=True,
                                    has_coupon=False)
        tickets = event.get_tickets()

        self.assertEqual(len(tickets), 2)
        self.assertEqual(tickets[0], ws_ticketing_event)
        self.assertEqual(tickets[1], sch_ticketing_event)
コード例 #21
0
    def test_get_tickets_for_show(self):
        '''just gets 1 ticket for Whole Shebang
        '''
        event = ShowFactory()
        ticketing_event = TicketingEventsFactory(
            conference=event.e_conference,
            include_most=True,
            title="The Whole Shebang 2016")
        TicketItemFactory(ticketing_event=ticketing_event,
                          live=True,
                          has_coupon=False)
        tickets = event.get_tickets()

        self.assertEqual(len(tickets), 1)
        self.assertEqual(tickets[0].title, "The Whole Shebang 2016")
コード例 #22
0
    def test_get_tickets_for_special_event(self):
        '''get the one ticket that is active for all except master classes
        '''
        event = GenericEventFactory(type='Special')
        ticketing_event = TicketingEventsFactory(
            conference=event.e_conference,
            include_most=True,
            title="The Whole Shebang 2016")
        TicketItemFactory(ticketing_event=ticketing_event,
                          live=True,
                          has_coupon=False)

        tickets = event.get_tickets()

        self.assertEqual(len(tickets), 1)
        self.assertEqual(tickets[0].title, "The Whole Shebang 2016")
コード例 #23
0
def setup_fees(conference, is_act=False, is_vendor=False):
    PayPalSettingsFactory()
    event = TicketingEventsFactory(conference=conference,
                                   vendor_submission_event=is_vendor,
                                   act_submission_event=is_act)
    if is_vendor:
        ticket = TicketItemFactory(live=True, ticketing_event=event)
        add_on = TicketItemFactory(live=True,
                                   ticketing_event=event,
                                   add_on=True)
        return [ticket, add_on]
    if is_act:
        ticket = TicketItemFactory(live=True,
                                   ticketing_event=event,
                                   is_minimum=True,
                                   cost=10)
        return [ticket]
コード例 #24
0
    def test_get_eb_org_fail(self, m_eventbrite):
        # privileged user gets the inventory of tickets from (fake) EB
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        event = TicketingEventsFactory()
        BrownPaperSettingsFactory()
        EventbriteSettingsFactory(organization_id=None)

        m_eventbrite.side_effect = [{
            "status_code": 403,
            "error_description": "Made up error",
            "error": "NOT_ALLOWED"
        }]

        response = self.import_tickets()
        assert_alert_exists(response, 'danger', 'Error',
                            eventbrite_error % (403, "Made up error"))
    def setUp(self):
        self.client = Client()
        # Conference Setup
        conference = ConferenceFactory(accepting_bids=True, status='upcoming')
        self.ticketing_event = TicketingEventsFactory(
            conference=conference, act_submission_event=True)
        self.ticket = TicketItemFactory(ticket_id="%s-1111" %
                                        (self.ticketing_event.event_id),
                                        ticketing_event=self.ticketing_event,
                                        special_comp=True)

        # User/Human setup
        self.profile = ProfileFactory()
        self.privileged_user = ProfileFactory()
        grant_privilege(self.privileged_user, 'Ticketing - Transactions')

        self.url = reverse("comp_ticket", urlconf="ticketing.urls")
コード例 #26
0
    def test_get_eb_inventory_ticket_fail(self, m_eventbrite):
        # privileged user gets the inventory of tickets from (fake) EB
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        event = TicketingEventsFactory()
        BrownPaperSettingsFactory()
        EventbriteSettingsFactory()
        simple_event_dict = copy.deepcopy(event_dict)
        simple_event_dict['events'] = [event_dict['events'][0]]
        error_ticket_page = {
            "status_code": 403,
            "error_description": "Made up error",
            "error": "NOT_ALLOWED"
        }
        m_eventbrite.side_effect = [simple_event_dict, error_ticket_page]

        response = self.import_tickets()
        assert_alert_exists(response, 'danger', 'Error',
                            eventbrite_error % (403, "Made up error"))
コード例 #27
0
    def test_transactions_sync_eb_match_prior_purchaser(self, m_eventbrite):
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        EventbriteSettings.objects.all().delete()
        BrownPaperSettingsFactory(active_sync=False)
        EventbriteSettingsFactory()
        event = TicketingEventsFactory(event_id="1", source=2)
        ticket = TicketItemFactory(ticketing_event=event, ticket_id='3255985')

        limbo, created = User.objects.get_or_create(username='******')
        purchaser = PurchaserFactory(matched_to_user=limbo)
        user = UserFactory(email=purchaser.email)
        m_eventbrite.return_value = order_dict

        login_as(self.privileged_user, self)
        response = self.client.post(self.url, data={'Sync': 'Sync'})
        print(response.content)
        test_purchaser = Purchaser.objects.get(pk=purchaser.pk)
        self.assertEqual(test_purchaser.matched_to_user, user)
コード例 #28
0
    def test_transactions_sync_eb_w_purchaser(self, m_eventbrite):
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        EventbriteSettings.objects.all().delete()
        BrownPaperSettingsFactory()
        EventbriteSettingsFactory()
        event = TicketingEventsFactory(event_id="1", source=2)
        ticket = TicketItemFactory(ticketing_event=event, ticket_id='3255985')
        purchaser = PurchaserFactory()
        known_buyer_order = order_dict
        known_buyer_order['attendees'][0]["profile"]["email"] = purchaser.email
        m_eventbrite.return_value = known_buyer_order

        login_as(self.privileged_user, self)
        response = self.client.post(self.url, data={'Sync': 'Sync'})
        assert_alert_exists(
            response, 'success', 'Success',
            "%s  Transactions imported: %d -- Eventbrite" %
            (import_transaction_message, 1))
コード例 #29
0
    def test_get_tickets_nothing_active(self):
        '''the ticket is linked to the class and there are two active prices
        only the most expensive is shown
        '''
        event = ClassFactory()
        ticketing_event = TicketingEventsFactory(conference=event.e_conference,
                                                 include_conference=True)
        TicketItemFactory(ticketing_event=ticketing_event,
                          live=False,
                          has_coupon=False,
                          title="The Whole Shebang 2016")
        TicketItemFactory(ticketing_event=ticketing_event,
                          live=True,
                          has_coupon=True,
                          cost=299.99,
                          title="The Whole Shebang 2016 - expensive")

        tickets = event.get_tickets()

        self.assertEqual(len(tickets), 0)
コード例 #30
0
    def test_transactions_sync_eb_bad_auth_token(self, m_eventbrite):
        TicketingEvents.objects.all().delete()
        BrownPaperSettings.objects.all().delete()
        EventbriteSettings.objects.all().delete()
        BrownPaperSettingsFactory()
        EventbriteSettingsFactory()
        event = TicketingEventsFactory(event_id="1", source=2)
        ticket = TicketItemFactory(ticketing_event=event, ticket_id='3255985')

        m_eventbrite.side_effect = [{
            "status_code": 401,
            "error_description": "The OAuth token you provided was invalid.",
            "error": "NOT_AUTH"
        }]

        login_as(self.privileged_user, self)
        response = self.client.post(self.url, data={'Sync': 'Sync'})
        assert_alert_exists(
            response, 'danger', 'Error', eventbrite_error %
            (401, "The OAuth token you provided was invalid."))