def test_work_week_returned_in_workday_only_mode(self): """Tests only workdays are returned in workday-mode.""" self.assertEqual( util.parse_date_range('this week', workdays_only=True), [ util.strict_parse_date('Mon Mar 19, 2018'), util.strict_parse_date('Tue Mar 20, 2018'), util.strict_parse_date('Wed Mar 21, 2018'), util.strict_parse_date('Thu Mar 22, 2018'), util.strict_parse_date('Fri Mar 23, 2018'), ])
class OptionsTest(fake_filesystem_unittest.TestCase): """Tests for the Options class""" def setUp(self): self.setUpPyfakefs() @freezegun.freeze_time(util.strict_parse_date('Mon Mar 26, 2018')) def test_default_behavior(self): """Tests nothing special happens when arbitrary args are passed.""" argv = ['config_test.py', 'command', 'line', 'args'] options, remaining_argv = config.Options.from_argv(argv) self.assertFalse(options.workdays_only) self.assertEqual(options.data_path, os.path.expanduser('~/.rednotebook/data')) self.assertEqual(options.default_date_range, [util.strict_parse_date('Mon Mar 26, 2018')]) self.assertEqual(remaining_argv, ['command', 'line', 'args']) def test_change_work_options(self): """Tests workday mode changes made in the config_options file.""" self.fs.create_file(os.path.expanduser('~/.rn2mdrc'), contents=""" [DEFAULT] workday mode=on """) options, unused_remaining_argv = config.Options.from_argv([]) self.assertTrue(options.workdays_only) def test_change_data_path(self): """Test data path changes made in the config file.""" self.fs.create_file(os.path.expanduser('~/.rn2mdrc'), contents=""" [DEFAULT] data path=/test """) options, unused_remaining_argv = config.Options.from_argv([]) self.assertEqual(options.data_path, '/test') @freezegun.freeze_time(util.strict_parse_date('Mon Mar 26, 2018')) def test_change_default_date_range(self): """Test default date range changes made in the config file.""" self.fs.create_file(os.path.expanduser('~/.rn2mdrc'), contents=""" [DEFAULT] default date range=last week """) options, unused_remaining_argv = config.Options.from_argv([]) self.assertEqual(options.default_date_range, [ util.strict_parse_date('Mon Mar 19, 2018'), util.strict_parse_date('Tue Mar 20, 2018'), util.strict_parse_date('Wed Mar 21, 2018'), util.strict_parse_date('Thu Mar 22, 2018'), util.strict_parse_date('Fri Mar 23, 2018'), util.strict_parse_date('Sat Mar 24, 2018'), util.strict_parse_date('Sun Mar 25, 2018'), ])
def test_default_behavior(self): """Tests nothing special happens when arbitrary args are passed.""" argv = ['config_test.py', 'command', 'line', 'args'] options, remaining_argv = config.Options.from_argv(argv) self.assertFalse(options.workdays_only) self.assertEqual(options.data_path, os.path.expanduser('~/.rednotebook/data')) self.assertEqual(options.default_date_range, [util.strict_parse_date('Mon Mar 26, 2018')]) self.assertEqual(remaining_argv, ['command', 'line', 'args'])
def test_last_week(self): """Tests that last week returns all dates from last week.""" self.assertEqual(util.parse_date_range('last week'), [ util.strict_parse_date('Mon Mar 19, 2018'), util.strict_parse_date('Tue Mar 20, 2018'), util.strict_parse_date('Wed Mar 21, 2018'), util.strict_parse_date('Thu Mar 22, 2018'), util.strict_parse_date('Fri Mar 23, 2018'), util.strict_parse_date('Sat Mar 24, 2018'), util.strict_parse_date('Sun Mar 25, 2018'), ])
def test_change_default_date_range(self): """Test default date range changes made in the config file.""" self.fs.create_file(os.path.expanduser('~/.rn2mdrc'), contents=""" [DEFAULT] default date range=last week """) options, unused_remaining_argv = config.Options.from_argv([]) self.assertEqual(options.default_date_range, [ util.strict_parse_date('Mon Mar 19, 2018'), util.strict_parse_date('Tue Mar 20, 2018'), util.strict_parse_date('Wed Mar 21, 2018'), util.strict_parse_date('Thu Mar 22, 2018'), util.strict_parse_date('Fri Mar 23, 2018'), util.strict_parse_date('Sat Mar 24, 2018'), util.strict_parse_date('Sun Mar 25, 2018'), ])
def test_yesterday_on_sunday_returns_friday_in_workdays_only_mode(self): """Tests yesterday on sunday is friday for workday-mode.""" self.assertEqual( util.parse_date_range('yesterday', workdays_only=True), [ util.strict_parse_date('Fri Mar 23, 2018'), ])
def test_today_on_sunday_rounds_to_friday_in_workdays_only_mode(self): """Tests workday-mode rounds to friday on sundays.""" self.assertEqual(util.parse_date_range('today', workdays_only=True), [ util.strict_parse_date('Fri Mar 23, 2018'), ])
class ParseDatesTest(unittest.TestCase): """Tests for the parse_date_range function.""" @freezegun.freeze_time(util.strict_parse_date('Mar 24, 2018')) def test_today(self): """Tests that today returns a single-element list for today's date.""" self.assertEqual(util.parse_date_range('today'), [ util.strict_parse_date('Mar 24, 2018'), ]) @freezegun.freeze_time(util.strict_parse_date('Fri Mar 23, 2018')) def test_this_week(self): """Tests that this week returns all dates in the week.""" self.assertEqual(util.parse_date_range('this week'), [ util.strict_parse_date('Mon Mar 19, 2018'), util.strict_parse_date('Tue Mar 20, 2018'), util.strict_parse_date('Wed Mar 21, 2018'), util.strict_parse_date('Thu Mar 22, 2018'), util.strict_parse_date('Fri Mar 23, 2018'), util.strict_parse_date('Sat Mar 24, 2018'), util.strict_parse_date('Sun Mar 25, 2018'), ]) @freezegun.freeze_time(util.strict_parse_date('Mon Mar 26, 2018')) def test_last_week(self): """Tests that last week returns all dates from last week.""" self.assertEqual(util.parse_date_range('last week'), [ util.strict_parse_date('Mon Mar 19, 2018'), util.strict_parse_date('Tue Mar 20, 2018'), util.strict_parse_date('Wed Mar 21, 2018'), util.strict_parse_date('Thu Mar 22, 2018'), util.strict_parse_date('Fri Mar 23, 2018'), util.strict_parse_date('Sat Mar 24, 2018'), util.strict_parse_date('Sun Mar 25, 2018'), ]) @freezegun.freeze_time(util.strict_parse_date('Sat Mar 24, 2018')) def test_today_on_saturday_rounds_to_friday_in_workdays_only_mode(self): """Tests workday-mode rounds to friday on saturdays.""" self.assertEqual(util.parse_date_range('today', workdays_only=True), [ util.strict_parse_date('Fri Mar 23, 2018'), ]) @freezegun.freeze_time(util.strict_parse_date('Sun Mar 25, 2018')) def test_today_on_sunday_rounds_to_friday_in_workdays_only_mode(self): """Tests workday-mode rounds to friday on sundays.""" self.assertEqual(util.parse_date_range('today', workdays_only=True), [ util.strict_parse_date('Fri Mar 23, 2018'), ]) @freezegun.freeze_time(util.strict_parse_date('Sat Mar 24, 2018')) def test_work_week_returned_in_workday_only_mode(self): """Tests only workdays are returned in workday-mode.""" self.assertEqual( util.parse_date_range('this week', workdays_only=True), [ util.strict_parse_date('Mon Mar 19, 2018'), util.strict_parse_date('Tue Mar 20, 2018'), util.strict_parse_date('Wed Mar 21, 2018'), util.strict_parse_date('Thu Mar 22, 2018'), util.strict_parse_date('Fri Mar 23, 2018'), ]) @freezegun.freeze_time(util.strict_parse_date('Sun Mar 25, 2018')) def test_yesterday_on_sunday_returns_friday_in_workdays_only_mode(self): """Tests yesterday on sunday is friday for workday-mode.""" self.assertEqual( util.parse_date_range('yesterday', workdays_only=True), [ util.strict_parse_date('Fri Mar 23, 2018'), ]) @freezegun.freeze_time(util.strict_parse_date('Mon Mar 26, 2018')) def test_yesterday_on_monday_returns_friday_in_workdays_only_mode(self): """Tests yesterday on monday is friday for workday-mode.""" self.assertEqual( util.parse_date_range('yesterday', workdays_only=True), [ util.strict_parse_date('Fri Mar 23, 2018'), ]) @freezegun.freeze_time(util.strict_parse_date('Fri Mar 23, 2018')) def test_tomorrow_on_friday_returns_monday_in_workdays_only_mode(self): """Tests tomorrow on friday is monday for workday-only mode.""" self.assertEqual(util.parse_date_range('tomorrow', workdays_only=True), [ util.strict_parse_date('Mon Mar 26, 2018'), ]) @freezegun.freeze_time(util.strict_parse_date('Sat Mar 24, 2018')) def test_tomorrow_on_saturday_returns_monday_in_workdays_only_mode(self): """Tests tomorrow on saturday is monday for workday-only mode.""" self.assertEqual(util.parse_date_range('tomorrow', workdays_only=True), [ util.strict_parse_date('Mon Mar 26, 2018'), ])
def test_today(self): """Tests that today returns a single-element list for today's date.""" self.assertEqual(util.parse_date_range('today'), [ util.strict_parse_date('Mar 24, 2018'), ])
def test_wrong_format(self): """"Tests that date in wrong format raises an error.""" with self.assertRaisesRegex(ValueError, r'not a valid format'): util.strict_parse_date('2018-03-24')
def test_without_weekday(self): """Tests that date without weekday can still be parsed.""" self.assertEqual(util.strict_parse_date('Mar 23, 2018'), dt.date(2018, 3, 23))
def test_wrong_weekday(self): """Tests that date with wrong weekday raises an error.""" with self.assertRaisesRegex( ValueError, r"does not have the same weekday .* " r"\(expected: 'Sat', actual: 'Fri'\)"): util.strict_parse_date('Sat Mar 23, 2018')
def test_tomorrow_on_saturday_returns_monday_in_workdays_only_mode(self): """Tests tomorrow on saturday is monday for workday-only mode.""" self.assertEqual(util.parse_date_range('tomorrow', workdays_only=True), [ util.strict_parse_date('Mon Mar 26, 2018'), ])
def test_correct_weekday(self): """Tests that date with correct weekday returns normally.""" self.assertEqual(util.strict_parse_date('Fri Mar 23, 2018'), dt.date(2018, 3, 23))