def test_efilings(self):
        """ Check filings returns in general endpoint"""
        factories.EFilingsFactory(committee_id='C001')
        factories.EFilingsFactory(committee_id='C002')

        results = self._results(api.url_for(EFilingsView))
        self.assertEqual(len(results), 2)
Example #2
0
    def test_filter_receipt_date_efile(self):

        [
            factories.EFilingsFactory(committee_id='C013',
                                      beginning_image_number=5,
                                      filed_date=datetime.date(2015, 1, 1)),
            factories.EFilingsFactory(committee_id='C014',
                                      beginning_image_number=6,
                                      filed_date=datetime.date(2015, 1, 2)),
        ]
        results = self._results(
            api.url_for(EFilingsView,
                        min_receipt_date=datetime.date(2015, 1, 1),
                        max_receipt_date=datetime.date(2015, 1, 2)))
        self.assertEqual(len(results), 2)
Example #3
0
 def test_schedule_e_efile_filters(self):
     filters = [
         ('image_number', ScheduleEEfile.image_number, ['456', '789']),
         ('committee_id', ScheduleEEfile.committee_id, ['C01', 'C02']),
         ('support_oppose_indicator',
          ScheduleEEfile.support_oppose_indicator, ['S', 'O']),
         ('most_recent', ScheduleEEfile.most_recent, [True, False]),
         ('candidate_office', ScheduleEEfile.candidate_office,
          ['H', 'S', 'P']),
         ('candidate_party', ScheduleEEfile.candidate_party, ['DEM',
                                                              'REP']),
         ('candidate_office_state', ScheduleEEfile.candidate_office_state,
          ['AZ', 'AK']),
         ('candidate_office_district',
          ScheduleEEfile.candidate_office_district, ['00', '01']),
         ('filing_form', ScheduleEEfile.filing_form, ['F3X', 'F5']),
         ('is_notice', ScheduleE.is_notice, [True, False]),
     ]
     factories.EFilingsFactory(file_number=123)
     for label, column, values in filters:
         [
             factories.ScheduleEEfileFactory(**{column.key: value})
             for value in values
         ]
         results = self._results(
             api.url_for(ScheduleEEfileView, **{label: values[0]}))
         assert len(results) == 1
         assert results[0][column.key] == values[0]
Example #4
0
    def test_views(self, upload_s3):
        committee = factories.CommitteeFactory(committee_type='H')
        committee_id = committee.committee_id
        factories.CommitteeHistoryFactory(committee_id=committee_id,
                                          committee_type='H')
        filing = factories.FilingsFactory(committee_id=committee_id)
        efiling = factories.EFilingsFactory(committee_id=committee_id,
                                            receipt_date=datetime.datetime(
                                                2012, 1, 1))
        basef3pfiling = factories.BaseF3PFilingFactory(
            committee_id=committee_id, receipt_date=datetime.date(2012, 1, 1))

        db.session.commit()

        for view in tasks.RESOURCE_WHITELIST:
            if view.endpoint in [
                    'reportsview',
                    'efilingsummaryview',
            ]:
                url = api.url_for(view,
                                  committee_type=committee.committee_type)
            elif view.endpoint in [
                    'filingsview',
                    'committeereportsview',
            ]:
                url = api.url_for(view, committee_id=committee.committee_id)
            else:
                url = api.url_for(view)
            tasks.export_query(url, b'')
Example #5
0
    def test_views(self, make_bundle):
        committee = factories.CommitteeFactory(committee_type='H')
        committee_id = committee.committee_id
        factories.CommitteeHistoryFactory(committee_id=committee_id,
                                          committee_type='H')
        filing = factories.FilingsFactory(committee_id=committee_id)  # noqa
        efiling = factories.EFilingsFactory(  # noqa
            committee_id=committee_id,
            receipt_date=datetime.datetime(2012, 1, 1))
        basef3pfiling = factories.BaseF3PFilingFactory(  # noqa
            committee_id=committee_id,
            receipt_date=datetime.date(2012, 1, 1))

        db.session.commit()

        # these are the major downloadable resources, we may want to add more later
        RESOURCE_WHITELIST = {
            aggregates.ScheduleABySizeView,
            aggregates.ScheduleAByStateView,
            aggregates.ScheduleAByZipView,
            aggregates.ScheduleAByEmployerView,
            aggregates.ScheduleAByOccupationView,
            aggregates.ScheduleBByRecipientView,
            aggregates.ScheduleBByRecipientIDView,
            aggregates.ScheduleBByPurposeView,
            candidate_aggregates.TotalsCandidateView,
            candidates.CandidateList,
            committees.CommitteeList,
            costs.CommunicationCostView,
            costs.ElectioneeringView,
            filings.EFilingsView,
            filings.FilingsList,
            filings.FilingsView,
            reports.ReportsView,
            reports.CommitteeReportsView,
            reports.EFilingHouseSenateSummaryView,
            reports.EFilingPresidentialSummaryView,
            reports.EFilingPacPartySummaryView,
            sched_a.ScheduleAView,
            sched_a.ScheduleAEfileView,
            sched_b.ScheduleBView,
            sched_b.ScheduleBEfileView,
            sched_d.ScheduleDView,
            sched_e.ScheduleEView,
            sched_e.ScheduleEEfileView,
            sched_f.ScheduleFView,
        }

        for view in RESOURCE_WHITELIST:
            if view.endpoint in ['reportsview']:
                url = api.url_for(view,
                                  committee_type=committee.committee_type)
            elif view.endpoint in [
                    'filingsview',
                    'committeereportsview',
            ]:
                url = api.url_for(view, committee_id=committee.committee_id)
            else:
                url = api.url_for(view)
            tasks.export_query(url, base64.b64encode(b'').decode('UTF-8'))
    def test_file_number_efilings(self):
        """ Check filing returns with a specified file number"""
        file_number = 1124839
        factories.EFilingsFactory(file_number=file_number)

        results = self._results(
            api.url_for(EFilingsView, file_number=file_number))
        self.assertEqual(results[0]['file_number'], file_number)
    def test_committee_efilings(self):
        """ Check filing returns with a specified committee id"""
        committee_id = 'C8675309'
        factories.EFilingsFactory(committee_id=committee_id)

        results = self._results(
            api.url_for(EFilingsView, committee_id=committee_id))
        self.assertEqual(results[0]['committee_id'], committee_id)
Example #8
0
    def test_filter_date_efile(self):
        [
            factories.EFilingsFactory(
                committee_id='C010',
                beginning_image_number=2,
                filed_date=datetime.date(2012, 1, 1),
            ),
            factories.EFilingsFactory(
                committee_id='C011',
                beginning_image_number=3,
                filed_date=datetime.date(2013, 1, 1),
            ),
            factories.EFilingsFactory(
                committee_id='C012',
                beginning_image_number=4,
                filed_date=datetime.date(2014, 1, 1),
            ),
            factories.EFilingsFactory(
                committee_id='C013',
                beginning_image_number=5,
                filed_date=datetime.date(2015, 1, 1),
            ),
        ]

        min_date = datetime.date(2013, 1, 1)
        results = self._results(
            api.url_for(EFilingsView, min_receipt_date=min_date))
        self.assertTrue(
            all(each for each in results
                if each['filed_date'] >= min_date.isoformat()))
        max_date = datetime.date(2014, 1, 1)
        results = self._results(
            api.url_for(EFilingsView, max_receipt_date=max_date))
        self.assertTrue(
            all(each for each in results
                if each['filed_date'] <= max_date.isoformat()))
        results = self._results(
            api.url_for(EFilingsView,
                        min_receipt_date=min_date,
                        max_receipt_date=max_date))
        self.assertTrue(
            all(each for each in results if min_date.isoformat() <=
                each['filed_date'] <= max_date.isoformat()))
Example #9
0
 def test_schedule_e_efile_filter_cand_search(self):
     [
         factories.ScheduleEEfileFactory(
             cand_fulltxt=sa.func.to_tsvector('C001, Rob, Senior')),
         factories.ScheduleEEfileFactory(
             cand_fulltxt=sa.func.to_tsvector('C002, Ted, Berry')),
         factories.ScheduleEEfileFactory(
             cand_fulltxt=sa.func.to_tsvector('C003, Rob, Junior')),
     ]
     factories.EFilingsFactory(file_number=123)
     db.session.flush()
     results = self._results(
         api.url_for(ScheduleEEfileView, candidate_search='Rob'))
     assert len(results) == 2
Example #10
0
 def test_schedule_e_efile_candidate_id_filter(self):
     filters = [
         ('candidate_id', ScheduleEEfile.candidate_id, ['S01', 'S02']),
     ]
     factories.EFilingsFactory(file_number=123)
     for label, column, values in filters:
         [
             factories.ScheduleEEfileFactory(**{column.key: value})
             for value in values
         ]
         results = self._results(
             api.url_for(ScheduleEEfileView, **{label: values[0]}))
         assert len(results) == 1
         assert results[0][column.key] == values[0]
Example #11
0
 def test_filters_sched_e_efile(self):
     filters = [
         ('image_number', ScheduleEEfile.image_number, ['123', '456']),
         ('committee_id', ScheduleEEfile.committee_id, ['C01', 'C02']),
         ('support_oppose_indicator', ScheduleEEfile.support_oppose_indicator, ['S', 'O']),
     ]
     factories.EFilingsFactory(file_number=123)
     for label, column, values in filters:
         [
             factories.ScheduleEEfileFactory(**{column.key: value})
             for value in values
         ]
         results = self._results(api.url_for(ScheduleEEfileView, **{label: values[0]}))
         assert len(results) == 1
         assert results[0][column.key] == values[0]
Example #12
0
    def test_schedule_e_efile_uses_exact_count(self, get_query_plan_mock):
        schedule_e_efile = [
            factories.ScheduleEEfileFactory() for i in range(5)
        ]
        factories.EFilingsFactory(file_number=123)
        db.session.flush()

        query = db.session.query(models.ScheduleEEfile)
        # Estimated rows = 6000000
        get_query_plan_mock.return_value = [('Seq Scan on real_efile_se_f57_vw  (cost=0.00..10.60 rows=6000000 width=1289)',)]
        resource = sched_e.ScheduleEEfileView()
        count, estimate = counts.get_count(query, db.session, resource.use_estimated_counts)
        # Always use exact count for Schedule E efile
        self.assertEqual(count, 5)
        self.assertEqual(estimate, False)