def setUp(self): self.sponsor = Sponsor.objects.create(name="Sponsor 1") self.sponsor2 = Sponsor.objects.create(name="Sponsor 2") self.due_trial = makeTrial(self.sponsor, registry_id='due_trial', results_due=True, has_results=False) self.reported_trial = makeTrial(self.sponsor, registry_id='reported_trial', results_due=True, has_results=True, reported_date=date(2016, 12, 1)) self.qa_submitted_trial = makeTrial(self.sponsor, registry_id='qa_submitted_trial', results_due=True) self.qa_submitted_trial.trialqa_set.create( submitted_to_regulator=date(2016, 12, 1)) self.cancelled_trial = makeTrial(self.sponsor, registry_id='cancelled_trial', results_due=True) self.cancelled_trial.trialqa_set.create( submitted_to_regulator=date(2016, 12, 1), cancelled_by_sponsor=date(2016, 12, 1)) self.not_due_trial = makeTrial(self.sponsor, registry_id='not_due_trial', results_due=False, has_results=False)
def setUp(self, datetime_mock): self.mock_today = date(2017, 1, 31) datetime_mock.today = Mock(return_value=self.mock_today) self.sponsor = Sponsor.objects.create(name="Sponsor 1", updated_date=self.mock_today) self.due_trial = makeTrial(self.sponsor, results_due=True, has_results=False, updated_date=self.mock_today) self.reported_trial = makeTrial( self.sponsor, results_due=True, has_results=True, # The following has the effect of setting # `previous_status` to `overdue` and status to `reported` status=Trial.STATUS_OVERDUE, reported_date=date(2016, 12, 1), updated_date=self.mock_today) self.due_but_no_longer_act_trial = makeTrial( self.sponsor, results_due=True, has_results=False, previous_status=Trial.STATUS_OVERDUE, status=Trial.STATUS_NO_LONGER_ACT, updated_date=self.mock_today) self.old_no_longer_act_trial = makeTrial( self.sponsor, results_due=True, has_results=False, previous_status=Trial.STATUS_OVERDUE, status=Trial.STATUS_NO_LONGER_ACT, updated_date=date(2016, 1, 1)) set_current_rankings()
def setUp(self, datetime_mock): datetime_mock.today = Mock(return_value=date(2017, 1, 31)) self.sponsor = Sponsor.objects.create(name="Sponsor 1") self.due_trial = makeTrial(self.sponsor, results_due=True, has_results=False) self.reported_trial = makeTrial(self.sponsor, results_due=True, has_results=True, reported_date=date(2016, 12, 1)) set_current_rankings()
def test_trial_ongoing(self): trial = makeTrial(self.sponsor, has_results=False, results_due=False, completion_date='2016-01-01') self.assertEqual(trial.status, 'ongoing') self.assertEqual(trial.calculated_due_date(), date(2016, 12, 31))
def test_trial_overdue(self): trial = makeTrial(self.sponsor, has_results=False, results_due=True, completion_date='2016-01-01') self.assertEqual(trial.status, 'overdue') self.assertEqual(list(self.sponsor.trial_set.overdue()), [trial])
def test_unreported_trial_late_outside_grace(self, datetime_mock): datetime_mock.today = Mock(return_value=date(2017, 1, 31)) trial = makeTrial(self.sponsor, has_results=False, results_due=True, completion_date='2016-01-01') self.assertEqual(trial.days_late, 31)
def test_reported_trial_not_late(self): trial = makeTrial(self.sponsor, has_results=True, results_due=True, completion_date='2016-01-01', reported_date='2016-12-01') self.assertEqual(trial.days_late, None)
def test_trials_reported_late_is_late(self): trial = makeTrial(self.sponsor, has_results=True, results_due=True, completion_date='2016-01-01', reported_date='2017-01-01') self.assertEqual(trial.status, 'reported-late') self.assertEqual(list(self.sponsor.trial_set.reported_late()), [trial])
def test_trial_with_certificate_ongoing(self): trial = makeTrial(self.sponsor, has_results=False, results_due=False, has_exemption=True, completion_date='2016-01-01') self.assertEqual(trial.status, 'ongoing') self.assertEqual(trial.calculated_due_date(), date(2019, 1, 1))
def test_reported_trial_finably_late(self): trial = makeTrial(self.sponsor, has_results=True, results_due=True, completion_date='2015-01-01', reported_date='2017-01-01') self.assertEqual(trial.days_late, 366) self.assertEqual(trial.finable_days_late, 366 - Trial.FINES_GRACE_PERIOD)
def test_trial_under_qa_late(self): trial = makeTrial(self.sponsor, has_results=False, results_due=True, completion_date='2016-01-01') TrialQA.objects.create(submitted_to_regulator='2017-01-01', returned_to_sponsor=None, trial=trial) self.assertEqual(trial.days_late, 1)
def test_reported_trial_no_longer_late(self): trial = makeTrial(self.sponsor, has_results=True, results_due=True, completion_date='2015-01-01', reported_date='2017-01-01') trial.results_due = False trial.save() self.assertEqual(trial.finable_days_late, None)
def _makeRankingsForDate(self, target_date): with patch('frontend.trial_computer.date') as datetime_mock: self.mock_today = target_date datetime_mock.today = Mock(return_value=self.mock_today) self.sponsor1 = _make_sponsor_with_date(1, self.mock_today) self.sponsor2 = _make_sponsor_with_date(2, self.mock_today) self.due_trial = makeTrial(self.sponsor1, registry_id='due trial', results_due=True, has_results=False, updated_date=self.mock_today) self.reported_trial = makeTrial(self.sponsor2, registry_id='reported trial', results_due=True, has_results=True, reported_date=date(2016, 12, 1), updated_date=self.mock_today) set_current_rankings()
def test_all_variables(self, twitter_mock): self.due_trial = makeTrial( self.sponsor, results_due=True, has_results=False, updated_date=self.mock_today) self.invisible_ongoing_trial = makeTrial( self.sponsor, results_due=True, has_results=False, previous_status=Trial.STATUS_ONGOING, status=Trial.STATUS_NO_LONGER_ACT, updated_date=self.mock_today) self.invisible_overdue_trial = makeTrial( self.sponsor, results_due=True, has_results=False, previous_status=Trial.STATUS_OVERDUE, status=Trial.STATUS_NO_LONGER_ACT, updated_date=self.mock_today) self.reported_trial = makeTrial( self.sponsor, results_due=True, has_results=True, reported_date=date(2016, 12, 1), updated_date=self.mock_today) for _ in range(3): self.late_trial = makeTrial( self.sponsor, results_due=True, has_results=True, reported_date=date(2017, 12, 1), updated_date=self.mock_today) set_current_rankings() api = MagicMock(twitter.api.Api, name='api') twitter_mock.Api.return_value = api out = StringIO() call_command('tweet_today', stdout=out) api.PostUpdate.assert_called_with( 'Since our last update, 1 trial became overdue, and 3 trials ' 'reported late. 1 trial reported its results on time. 80% of ' 'all due trials have reported their results. ' 'https://fdaaa.trialstracker.net/')
def test_reported_trial_under_qa(self): trial = makeTrial(self.sponsor, has_results=False, results_due=True, completion_date='2016-01-01') TrialQA.objects.create(submitted_to_regulator='2016-02-01', returned_to_sponsor=None, trial=trial) self.assertEqual(trial.status, 'reported') self.assertEqual(str(trial.calculated_reported_date()), '2016-02-01')
def test_trial_under_qa_late_with_cancellation(self, datetime_mock): datetime_mock.today = Mock(return_value=date(2017, 3, 1)) trial = makeTrial(self.sponsor, has_results=False, results_due=True, completion_date='2016-01-01') TrialQA.objects.create(submitted_to_regulator='2016-02-01', cancelled_by_sponsor='2016-02-02', trial=trial) self.assertEqual(trial.days_late, 60) self.assertEqual(trial.finable_days_late, None)
def test_status_choices(self): makeTrial(self.sponsor, has_results=False, results_due=True, completion_date='2016-01-01') self.assertEqual(self.sponsor.status_choices(), [('overdue', 'Overdue')]) self.assertEqual(Trial.objects.status_choices(), [('overdue', 'Overdue')]) makeTrial(self.sponsor, has_results=False, results_due=False, completion_date='2016-01-01') self.assertEqual(self.sponsor.status_choices(), [ ('overdue', 'Overdue'), ('ongoing', 'Ongoing'), ]) self.assertEqual(Trial.objects.status_choices(), [ ('overdue', 'Overdue'), ('ongoing', 'Ongoing'), ])
def test_single_variable(self, twitter_mock): self.due_trial = makeTrial( self.sponsor, results_due=True, has_results=False, updated_date=self.mock_today) set_current_rankings() api = MagicMock(twitter.api.Api, name='api') twitter_mock.Api.return_value = api out = StringIO() call_command('tweet_today', stdout=out) api.PostUpdate.assert_called_with( 'Since our last update, 1 trial became overdue. 0% of all due ' 'trials have reported their results. ' 'https://fdaaa.trialstracker.net/')
def test_trial_under_qa_late_with_much_correspondence(self): trial = makeTrial(self.sponsor, has_results=False, results_due=True, completion_date='2016-01-01') TrialQA.objects.create(submitted_to_regulator='2016-02-01', returned_to_sponsor='2016-02-02', trial=trial) TrialQA.objects.create(submitted_to_regulator='2016-02-03', cancelled_by_sponsor='2016-02-04', trial=trial) TrialQA.objects.create(submitted_to_regulator='2017-03-01', trial=trial) self.assertEqual(trial.days_late, 60) self.assertEqual(trial.finable_days_late, None)