def get_order(self, event_id):
        session = {}
        event = Event(event_id=event_id, session=session, **self.api_settings)

        latest_date = (
            datetime.date.today() +
            datetime.timedelta(days=7)
        )

        performances = event.get_performances(
            latest_date=latest_date
        )

        for p in reversed(performances):
            if p.date.weekday() != 5:
                performance = p
                break

        ticket_type = performance.get_availability()[0]

        despatch_method = performance.despatch_methods[0]

        concession = ticket_type.get_concessions(
            no_of_tickets=1,
            despatch_method=despatch_method
        )[0][0]

        concession_list = [concession]

        core = Core(session=session, **self.api_settings)

        return core.create_order(
            concessions=concession_list,
            despatch_method=despatch_method,
        )
    def setUp(self):

        super(MakeReservationTests, self).setUp()

        session = {}
        event = Event(event_id='6IF', session=session, **self.api_settings)

        latest_date = (
            datetime.date.today() +
            datetime.timedelta(days=7)
        )

        performances = event.get_performances(
            latest_date=latest_date
        )

        for p in reversed(performances):
            if p.date.weekday() != 5:
                performance = p
                break

        ticket_types = performance.get_availability()

        ticket_type = ticket_types[0]

        despatch_method = performance.despatch_methods[0]

        ticket_concessions = ticket_type.get_concessions(
            no_of_tickets=1,
            despatch_method=despatch_method
        )

        concessions = ticket_concessions[0]

        concession = concessions[0]

        concession_list = [concession]

        core = Core(session=session, **self.api_settings)

        order = core.create_order(
            concessions=concession_list,
            despatch_method=despatch_method,
        )

        self.trolley = Trolley(session=session, **self.api_settings)

        self.trolley.add_order(order)

        self.reservation = self.trolley.get_reservation()
 def setUp(self):
     session = {}
     self.core = Core(session=session, **self.api_settings)
class CoreTests(InterfaceObjectTestCase):

    def setUp(self):
        session = {}
        self.core = Core(session=session, **self.api_settings)

    def test_search_events_keyword(self):

        events = self.core.search_events(keyword='test')

        self.assertTrue(events)

    def test_search_events_contains_event(self):

        events = self.core.search_events(keyword='test')

        for e in events:
            self.assertIsInstance(e, Event)

    def test_search_events_keyword_paging(self):

        events = self.core.search_events(
            keyword='test', page_length='5', page_number='1'
        )

        self.assertTrue(events)

    def test_search_events_keyword_empty(self):

        events = self.core.search_events(keyword='abc24382hggeouh%$')

        self.assertFalse(events)

    def test_search_events_sort_top(self):

        events = self.core.search_events(
            keyword='test', sort_by='top'
        )

        self.assertTrue(events)

    def test_search_events_sort_user_rating(self):

        events = self.core.search_events(
            keyword='test', sort_by='user_rating'
        )

        self.assertTrue(events)

    def test_search_events_sort_critic_rating(self):

        events = self.core.search_events(
            keyword='test', sort_by='critic_rating'
        )

        self.assertTrue(events)

    def test_search_events_auto_date_range(self):

        for value in settings.AUTO_DATE_RANGE:
            events = self.core.search_events(
                keyword='test', auto_date_range=value
            )

            self.assertTrue(events)

    def test_search_events_cities(self):

        self.core.search_events(keyword='test')

        self.assertIsInstance(self.core.event_cities, dict)

        self.assertIn('london-uk', self.core.event_cities)

        for city, info in self.core.event_cities.items():
            self.assertIsInstance(city, str)
            self.assertIsInstance(info, dict)

            self.assertIn('count', info)
            self.assertIn('description', info)

    def test_search_events_categories(self):

        self.core.search_events(keyword='test')

        self.assertIsInstance(self.core.event_categories, dict)

        self.assertIn('theatre/', self.core.event_categories)

        for cat, info in self.core.event_categories.items():
            self.assertIsInstance(cat, str)
            self.assertIsInstance(info, dict)

            self.assertIn('count', info)
            self.assertIn('category', info)
            self.assertIn('sub_categories', info)

    def test_search_events_countries(self):

        self.core.search_events(keyword='test')

        self.assertIsInstance(self.core.event_countries, dict)

        self.assertIn('uk', self.core.event_countries)

        for country, info in self.core.event_countries.items():
            self.assertIsInstance(country, str)
            self.assertIsInstance(info, dict)

            self.assertIn('count', info)
            self.assertIn('description', info)

    def test_search_events_price_range(self):

        self.core.search_events(keyword='test')

        self.assertTrue(self.core.event_price_range)

        self.assertIsInstance(self.core.event_price_range, list)

        for price in self.core.event_price_range:
            self.assertIsInstance(price, float)
    def setUp(self):
        session = {}
        event = Event(event_id='6IF', session=session, **self.api_settings)

        latest_date = (
            datetime.date.today() +
            datetime.timedelta(days=7)
        )

        performances = event.get_performances(
            latest_date=latest_date
        )

        for p in reversed(performances):
            if p.date.weekday() != 5:
                performance = p
                break

        ticket_types = performance.get_availability()

        ticket_type = ticket_types[0]

        despatch_method = performance.despatch_methods[0]

        ticket_concessions = ticket_type.get_concessions(
            no_of_tickets=1,
            despatch_method=despatch_method
        )

        concessions = ticket_concessions[0]

        concession = concessions[0]

        concession_list = [concession]

        core = Core(session=session, **self.api_settings)

        order = core.create_order(
            concessions=concession_list,
            despatch_method=despatch_method,
        )

        self.trolley = Trolley(session=session, **self.api_settings)

        self.trolley.add_order(order)

        self.reservation = self.trolley.get_reservation()

        customer_address = Address(
            address_line_one='1 Test Lane',
            address_line_two=None,
            town='Test Town',
            county='County',
            postcode='AB12 3CD',
            country_code='GB'
        )

        customer = Customer(
            title='Mr',
            first_name='Test',
            last_name='User',
            email_address='*****@*****.**',
            home_phone='01234567890',
            work_phone='01234567890',
            address=customer_address,
            user_can_use_data=True,
            supplier_can_use_data=False,
            world_can_use_data=False
        )

        self.purchase_response = self.reservation.purchase_reservation(
            customer=customer,
        )
    def setUp(self):

        super(CoreTests, self).setUp()

        session = {}
        self.core = Core(session=session, **self.api_settings)