def test_schedule_e_sort_args_ascending(self): [ factories.ScheduleEFactory(expenditure_amount=100, expenditure_date=datetime.date(2016, 1, 1), committee_id='101', support_oppose_indicator='s'), factories.ScheduleEFactory(expenditure_amount=100, expenditure_date=datetime.date(2016, 1, 1), committee_id='101', support_oppose_indicator='o'), ] results = self._results(api.url_for(ScheduleEView, sort='support_oppose_indicator')) self.assertEqual(results[0]['support_oppose_indicator'], 'o')
def test_sort_sched_e(self): expenditures = [ factories.ScheduleEFactory(expenditure_amount=50), factories.ScheduleEFactory(expenditure_amount=100, expenditure_date=datetime.date(2016, 1, 1)), factories.ScheduleEFactory(expenditure_amount=150, expenditure_date=datetime.date(2016, 2, 1)), factories.ScheduleEFactory(expenditure_amount=200, expenditure_date=datetime.date(2016, 3, 1)), ] sub_ids = [str(each.sub_id) for each in expenditures] results = self._results(api.url_for(ScheduleEView, sort='-expenditure_date', sort_nulls_last=True)) self.assertEqual([each['sub_id'] for each in results], sub_ids[::-1])
def test_amount_sched_e(self): [ factories.ScheduleEFactory(expenditure_amount=50), factories.ScheduleEFactory(expenditure_amount=100), factories.ScheduleEFactory(expenditure_amount=150), factories.ScheduleEFactory(expenditure_amount=200), ] results = self._results(api.url_for(ScheduleEView, min_amount=100)) self.assertTrue(all(each['expenditure_amount'] >= 100 for each in results)) results = self._results(api.url_for(ScheduleEView, max_amount=150)) self.assertTrue(all(each['expenditure_amount'] <= 150 for each in results)) results = self._results(api.url_for(ScheduleEView, min_amount=100, max_amount=150)) self.assertTrue(all(100 <= each['expenditure_amount'] <= 150 for each in results))
def test_schedule_e_filters_date_range(self): factories.ScheduleEFactory(filing_date=datetime.datetime(2023, 12, 30)) factories.ScheduleEFactory(filing_date=datetime.datetime(2021, 8, 29)) factories.ScheduleEFactory(filing_date=datetime.datetime(2019, 10, 25)) factories.ScheduleEFactory(filing_date=datetime.datetime(2017, 6, 22)) factories.ScheduleEFactory(filing_date=datetime.datetime(2015, 10, 15)) results = self._results( api.url_for( ScheduleEView, min_filing_date=datetime.date.fromisoformat('2015-01-01'))) assert len(results) == 5 results = self._results( api.url_for( ScheduleEView, max_filing_date=datetime.date.fromisoformat('2021-10-25'))) assert len(results) == 4
def test_filter_sched_e_most_recent(self): [ factories.ScheduleEFactory(committee_id='C001', filing_form='F24', most_recent=True), factories.ScheduleEFactory(committee_id='C002', filing_form='F5', most_recent=False), factories.ScheduleEFactory(committee_id='C003', filing_form='F24', most_recent=True), factories.ScheduleEFactory(committee_id='C004', filing_form='F3X', most_recent=True), ] results = self._results( api.url_for(ScheduleEView, most_recent=True, **self.kwargs)) self.assertEqual(len(results), 3)
def test_schedule_e_filter_fulltext_fail(self): """ test names that expect no returns """ payee_names = ['#', '##', '@#$%^&*', '%', '', ' '] [ factories.ScheduleEFactory(payee_name_text=payee) for payee in payee_names ] results = self._results( api.url_for(ScheduleEView, payee_name=payee_names)) self.assertEquals(len(results), 0)
def test_schedule_e_filter_fulltext_pass(self): """ test names that expect to be returned """ payee_names = [ 'Test.com', 'Test com', 'Testerosa', 'Test#com', 'Test.com and Test.com' ] [factories.ScheduleEFactory(payee_name=payee) for payee in payee_names] results = self._results(api.url_for(ScheduleEView, payee_name='test')) for result in results: print(result, '\n') self.assertEqual(len(results), len(payee_names))
def test_filters_sched_e(self): filters = [ ('image_number', ScheduleE.image_number, ['123', '456']), ('committee_id', ScheduleE.committee_id, ['C01', 'C02']), ('support_oppose_indicator', ScheduleE.support_oppose_indicator, ['S', 'O']), ('is_notice', ScheduleE.is_notice, [True, False]), ] for label, column, values in filters: [ factories.ScheduleEFactory(**{column.key: value}) for value in values ] results = self._results(api.url_for(ScheduleEView, **{label: values[0]})) assert len(results) == 1 assert results[0][column.key] == values[0]
def test_schedule_e_filters(self): filters = [ ('image_number', ScheduleE.image_number, ['123', '456']), ('committee_id', ScheduleE.committee_id, ['C01', 'C02']), ('support_oppose_indicator', ScheduleE.support_oppose_indicator, ['S', 'O']), ('is_notice', ScheduleE.is_notice, [True, False]), ('candidate_office_state', ScheduleE.candidate_office_state, ['AZ', 'AK']), ('candidate_office_district', ScheduleE.candidate_office_district, ['00', '01']), ('candidate_party', ScheduleE.candidate_party, ['DEM', 'REP']), ('candidate_office', ScheduleE.candidate_office, ['H', 'S', 'P']), ] for label, column, values in filters: [ factories.ScheduleEFactory(**{column.key: value}) for value in values ] results = self._results( api.url_for(ScheduleEView, **{label: values[0]})) assert len(results) == 1 assert results[0][column.key] == values[0]