def test_result_content_date(self): """" GET request retrieves expected past result data in view context """ url = reverse('results-index') Page.objects.create(title='results') # five fixtures in the future, five in the past today = datetime.now().date() past = today - timedelta(days=7) future = today - timedelta(days=-7) FixtureFactory.create_batch(5, event_date=past) FixtureFactory.create_batch(5, event_date=future) # add results for two past fixtures past_fixtures = Fixture.objects.filter( event_date__lte=timezone.now()).distinct() first_past_fixture = past_fixtures.first() last_past_fixture = past_fixtures.last() first_result = ResultFactory(fixture=first_past_fixture) ResultFactory(fixture=last_past_fixture) response = self.client.get(url) self.assertEqual(len(response.context['results']), 2) result = response.context['results'].first() self.assertEqual(result, first_result) self.assertLessEqual(result.fixture.event_date, today)
def test_get_year(self): """" GET request uses year, tested against gallery dates """ Page.objects.create(title='results') date_2018 = make_aware(datetime(2018, 1, 1)) date_2016 = make_aware(datetime(2016, 1, 1)) first_fixture = FixtureFactory(event_date=date_2018) first_result = ResultFactory(fixture=first_fixture) second_fixture = FixtureFactory(event_date=date_2016) second_result = ResultFactory(fixture=second_fixture) url = reverse('results-index') response = self.client.get(url) self.assertEqual(len(response.context['result_list']), 2) response = self.client.get(url, {'year': '2018'}) self.assertEqual(len(response.context['result_list']), 1) self.assertEqual(response.context['result_list'][0], first_result) response = self.client.get(url, {'year': '2016'}) self.assertEqual(len(response.context['result_list']), 1) self.assertEqual(response.context['result_list'][0], second_result) # year out of range, not used in query response = self.client.get(url, {'year': '1999'}) self.assertEqual(len(response.context['result_list']), 2)
def test_result_search_empty(self): """ GET request retrieves results filtered by search (none found) """ Page.objects.create(title='results') url = reverse('results-index') first_fixture = FixtureFactory(title='First Fixture') ResultFactory(fixture=first_fixture) second_fixture = FixtureFactory(title='Second Fixture') ResultFactory(fixture=second_fixture) response = self.client.get(url, {'search': 'third fixture'}) self.assertEqual(len(response.context['results']), 0)
def test_fixtures(self): """ Test latest fixtures are returned """ url = reverse('home-index') Page.objects.create(title='home') ContentFactory() future = timezone.now() + timezone.timedelta(days=+7) FixtureFactory.create_batch(5, event_date=future) response = self.client.get(url) self.assertEqual(len(response.context['fixtures']), 5) self.assertEqual(response.context['fixtures'][0], Fixture.objects.first())
def test_result_category_search_empty(self): """ GET request retrieves results filtered by search """ Page.objects.create(title='results') url = reverse('results-index') first_category = CategoryFactory(title='Cat 1') CategoryFactory(title='Cat 2') first_fixture = FixtureFactory(title='First Fixture', categories=[first_category]) ResultFactory(fixture=first_fixture) second_fixture = FixtureFactory(title='Second Fixture') ResultFactory(fixture=second_fixture) response = self.client.get(url, {'search': 'cat 3'}) self.assertEqual(len(response.context['results']), 0)
def test_result_content(self): """" GET request retrieves expected result/fixture data in view context """ url = reverse('results-index') Page.objects.create(title='results') first_fixture = FixtureFactory(title='First Fixture') first_result = ResultFactory(fixture=first_fixture) response = self.client.get(url) self.assertEqual(len(response.context['results']), 1) result = response.context['results'].first() self.assertEqual(result, first_result)
def test_results(self): """ Test latest results are returned """ url = reverse('home-index') Page.objects.create(title='home') ContentFactory() past = timezone.now() - timezone.timedelta(days=7) fixture = FixtureFactory(event_date=past) ResultFactory(fixture=fixture) response = self.client.get(url) self.assertEqual(len(response.context['results']), 1) self.assertEqual(response.context['results'][0], Result.objects.first())
def test_get_page_size(self): """" GET request uses page_size """ Page.objects.create(title='results') fixtures = FixtureFactory.create_batch(100) for fixture in fixtures: ResultFactory(fixture=fixture) url = reverse('results-index') response = self.client.get(url) self.assertEqual(len(response.context['result_list']), 10) self.assertEqual(response.context['paginate_by'], 10) response = self.client.get(url, {'pageSize': '50'}) self.assertEqual(len(response.context['result_list']), 50) self.assertEqual(response.context['paginate_by'], 50) response = self.client.get(url, {'pageSize': '87'}) self.assertEqual(len(response.context['result_list']), 10) self.assertEqual(response.context['paginate_by'], 10)