def test_process_must_notify_users(self):
        scheduler = Scheduler(report='my_report_class',
                              notify_emails='[email protected],[email protected]')

        with mock.patch('onmydesk.models.send_mail') as send_mail_mocked:
            scheduler.process()
            self.assertTrue(send_mail_mocked.called)
    def test_process_must_use_given_reference_date(self):
        self._patch('onmydesk.models.Report.process')

        scheduler = Scheduler(report='my_report_class')
        scheduler.set_params({'my_date': 'D-2', 'other_filter': 'other_value'})

        my_date = date(2016, 5, 10)
        with mock.patch('onmydesk.models.Report.set_params') as set_params:
            scheduler.process(reference_date=my_date)
            set_params.assert_called_once_with({'my_date': date(2016, 5, 8), 'other_filter': 'other_value'})
    def test_process_must_use_given_reference_date(self):
        self._patch('onmydesk.models.Report.process')

        scheduler = Scheduler(report='my_report_class')
        scheduler.set_params({'my_date': 'D-2', 'other_filter': 'other_value'})

        my_date = date(2016, 5, 10)
        with mock.patch('onmydesk.models.Report.set_params') as set_params:
            scheduler.process(reference_date=my_date)
            set_params.assert_called_once_with({
                'my_date': date(2016, 5, 8),
                'other_filter': 'other_value'
            })
    def test_process_must_return_a_saved_report_with_created_by_filled(self):
        user = User.objects.create_user('Joao', '*****@*****.**', '123souwebmaster')
        scheduler = Scheduler(report='my_report_class', created_by=user)

        report = scheduler.process()

        self.assertEqual(report.created_by, user)
    def test_process_must_return_a_saved_report_with_created_by_filled(self):
        user = User.objects.create_user(
            'Joao', '*****@*****.**',
            '123souwebmaster')
        scheduler = Scheduler(report='my_report_class', created_by=user)

        report = scheduler.process()

        self.assertEqual(report.created_by, user)
    def test_process_must_not_notify_if_scheduler_has_no_emails(self):
        scheduler = Scheduler(report='my_report_class')

        with mock.patch('onmydesk.models.send_mail') as send_mail_mocked:
            scheduler.process()
            self.assertFalse(send_mail_mocked.called)
    def test_process_must_notify_users(self):
        scheduler = Scheduler(report='my_report_class', notify_emails='[email protected],[email protected]')

        with mock.patch('onmydesk.models.send_mail') as send_mail_mocked:
            scheduler.process()
            self.assertTrue(send_mail_mocked.called)
    def test_process_must_call_report_process(self):
        scheduler = Scheduler(report='my_report_class')

        with mock.patch('onmydesk.models.Report.process') as process_mocked:
            scheduler.process()
            self.assertTrue(process_mocked.called)
    def test_process_must_return_a_saved_report(self):
        scheduler = Scheduler(report='my_report_class')
        report = scheduler.process()

        self.assertIsNotNone(report.id)
    def test_process_must_return_report(self):
        scheduler = Scheduler(report='my_report_class')
        result = scheduler.process()

        self.assertIsInstance(result, Report)
    def test_process_must_not_notify_if_scheduler_has_no_emails(self):
        scheduler = Scheduler(report='my_report_class')

        with mock.patch('onmydesk.models.send_mail') as send_mail_mocked:
            scheduler.process()
            self.assertFalse(send_mail_mocked.called)
    def test_process_must_call_report_process(self):
        scheduler = Scheduler(report='my_report_class')

        with mock.patch('onmydesk.models.Report.process') as process_mocked:
            scheduler.process()
            self.assertTrue(process_mocked.called)
    def test_process_must_return_a_saved_report(self):
        scheduler = Scheduler(report='my_report_class')
        report = scheduler.process()

        self.assertIsNotNone(report.id)
    def test_process_must_return_report(self):
        scheduler = Scheduler(report='my_report_class')
        result = scheduler.process()

        self.assertIsInstance(result, Report)