Exemple #1
0
 def test_oof_settings_validation(self):
     utc = zoneinfo.ZoneInfo('UTC')
     with self.assertRaises(ValueError):
         # Needs a start and end
         OofSettings(state=OofSettings.SCHEDULED, ).clean(version=None)
     with self.assertRaises(ValueError):
         # Start must be before end
         OofSettings(
             state=OofSettings.SCHEDULED,
             start=datetime.datetime(2100, 12, 1, tzinfo=utc),
             end=datetime.datetime(2100, 11, 1, tzinfo=utc),
         ).clean(version=None)
     with self.assertRaises(ValueError):
         # End must be in the future
         OofSettings(
             state=OofSettings.SCHEDULED,
             start=datetime.datetime(2000, 11, 1, tzinfo=utc),
             end=datetime.datetime(2000, 12, 1, tzinfo=utc),
         ).clean(version=None)
     with self.assertRaises(ValueError):
         # Must have an internal and external reply
         OofSettings(
             state=OofSettings.SCHEDULED,
             start=datetime.datetime(2100, 11, 1, tzinfo=utc),
             end=datetime.datetime(2100, 12, 1, tzinfo=utc),
         ).clean(version=None)
Exemple #2
0
    def test_oof_settings(self):
        # First, ensure a common starting point
        utc = zoneinfo.ZoneInfo('UTC')
        self.account.oof_settings = OofSettings(
            state=OofSettings.DISABLED,
            start=datetime.datetime.combine(RANDOM_DATE_MIN,
                                            datetime.time.min,
                                            tzinfo=utc),
            end=datetime.datetime.combine(RANDOM_DATE_MAX,
                                          datetime.time.max,
                                          tzinfo=utc),
        )

        oof = OofSettings(
            state=OofSettings.ENABLED,
            external_audience='None',
            internal_reply="I'm on holidays. See ya guys!",
            external_reply='Dear Sir, your email has now been deleted.',
        )
        self.account.oof_settings = oof
        self.assertEqual(self.account.oof_settings, oof)

        oof = OofSettings(
            state=OofSettings.ENABLED,
            external_audience='Known',
            internal_reply='XXX',
            external_reply='YYY',
        )
        self.account.oof_settings = oof
        self.assertEqual(self.account.oof_settings, oof)

        # Scheduled duration must not be in the past
        tz = self.account.default_timezone
        start, end = get_random_datetime_range(
            start_date=datetime.datetime.now(tz).date())
        oof = OofSettings(
            state=OofSettings.SCHEDULED,
            external_audience='Known',
            internal_reply="I'm in the pub. See ya guys!",
            external_reply="I'm having a business dinner in town",
            start=start,
            end=end,
        )
        self.account.oof_settings = oof
        self.assertEqual(self.account.oof_settings, oof)

        oof = OofSettings(
            state=OofSettings.DISABLED,
            start=start,
            end=end,
        )
        self.account.oof_settings = oof
        # TODO: For some reason, disabling OOF does not always work. Don't assert because we want a stable test suite
        if self.account.oof_settings != oof:
            self.skipTest('Disabling OOF did not work')