def test_format_emacs_dates(self): test_locale = getLocaleAlias('ru') if test_locale: m.OrgDate.default_locale = test_locale self.assertEqual( "2015-12-09 Ср", m.OrgDate(datetime.date(2015, 12, 9)).to_org_format()) test_locale = getLocaleAlias('us') if test_locale: m.OrgDate.default_locale = test_locale self.assertEqual( "2015-11-18 Wed", m.OrgDate(datetime.date(2015, 11, 18)).to_org_format()) test_locale = getLocaleAlias('de') if test_locale: m.OrgDate.default_locale = test_locale self.assertEqual( "2015-12-10 Do", m.OrgDate(datetime.date(2015, 12, 10)).to_org_format())
def test_parse_scheduled_and_closed_time(self): m.OrgDate.default_locale = getLocaleAlias('us') org_text = textwrap.dedent("""\ * Headline 1 Normal notes * Headline 2 SCHEDULED: <2015-11-18 Wed> * Headline 3 SCHEDULED: <2015-12-09 Wed 19:00-20:00> * DONE Headline 4 CLOSED: [2015-12-10 Thu 03:25] * DONE Headline 5 CLOSED: [2015-12-10 Thu 03:25] SCHEDULED: <2015-12-09 Wed 03:00> """) tasktree = m.TasksTree.parse_text(org_text) self.assertEqual(tasktree[0].closed_time, None) self.assertEqual(tasktree[0].schedule_time, None) self.assertEqual(tasktree[1].closed_time, None) self.assertEqual(tasktree[1].schedule_time, m.OrgDate(datetime.date(2015, 11, 18))) self.assertEqual(tasktree[2].closed_time, None) self.assertEqual( tasktree[2].schedule_time, m.OrgDate(datetime.date(2015, 12, 9), datetime.time(19, 0), datetime.timedelta(hours=1))) self.assertEqual( tasktree[3].closed_time, m.OrgDate(datetime.date(2015, 12, 10), datetime.time(3, 25))) self.assertEqual(tasktree[3].schedule_time, None) self.assertEqual( tasktree[4].closed_time, m.OrgDate(datetime.date(2015, 12, 10), datetime.time(3, 25))) self.assertEqual( tasktree[4].schedule_time, m.OrgDate(datetime.date(2015, 12, 9), datetime.time(3, 0))) self.assertEqual(str(tasktree), org_text)
def test_scheduled_and_closed_time(self): m.OrgDate.default_locale = getLocaleAlias('us') org_text = textwrap.dedent("""\ * Headline 1 Normal notes * Headline 2 SCHEDULED: <2015-11-18 Wed> * Headline 3 SCHEDULED: <2015-12-09 Wed 19:00-20:00> * DONE Headline 4 CLOSED: [2015-12-10 Thu 03:25] * DONE Headline 5 CLOSED: [2015-12-10 Thu 03:25] SCHEDULED: <2015-12-09 Wed 03:00> """) tasktree = m.TasksTree.parse_text(org_text) self.assertEqual(tasktree[0].closed_time, None) self.assertEqual(tasktree[0].schedule_time, None) self.assertEqual(tasktree[1].closed_time, None) self.assertEqual(tasktree[1].schedule_time, m.OrgDate(datetime.date(2015, 11, 18))) self.assertEqual(tasktree[2].closed_time, None) self.assertEqual(tasktree[2].schedule_time, m.OrgDate(datetime.date(2015, 12, 9), datetime.time(19, 0), datetime.timedelta(hours=1))) self.assertEqual(tasktree[3].closed_time, m.OrgDate(datetime.date(2015, 12, 10), datetime.time(3, 25))) self.assertEqual(tasktree[3].schedule_time, None) self.assertEqual(tasktree[4].closed_time, m.OrgDate(datetime.date(2015, 12, 10), datetime.time(3, 25))) self.assertEqual(tasktree[4].schedule_time, m.OrgDate(datetime.date(2015, 12, 9), datetime.time(3, 0))) self.assertEqual(str(tasktree), org_text)
def test_sync_time(self): m.OrgDate.default_locale = getLocaleAlias('us') org_text = textwrap.dedent("""\ * TODO Headline A * TODO Headline B * TODO Headline C SCHEDULED: <2015-12-09 Wed 20:00-21:00> """) org_tree = m.TasksTree.parse_text(org_text) remote_tree = m.TasksTree(None) remote_tree.add_subtask('Headline A').update( todo=True, schedule_time=m.OrgDate(datetime.date(2015, 12, 9))) remote_tree.add_subtask('Headline B').update( todo=True) remote_tree.add_subtask('Headline C').update( completed=True, closed_time=m.OrgDate.now(), schedule_time=m.OrgDate(datetime.date(2015, 12, 9), datetime.time(20, 0), datetime.timedelta(hours=1))), remote_tree.add_subtask('Headline D').update( todo=True, schedule_time=m.OrgDate(datetime.date(2015, 12, 9))) m.treemerge(org_tree, remote_tree, None, TestMergeConf()) result_text = textwrap.dedent("""\ * TODO Headline A SCHEDULED: <2015-12-09 Wed> * TODO Headline B * DONE Headline C CLOSED: [{0}] SCHEDULED: <2015-12-09 Wed 20:00-21:00> * TODO Headline D SCHEDULED: <2015-12-09 Wed> """.format(m.OrgDate.now().to_org_format())) self.assertEqual(str(org_tree), result_text)
def __init__(self, *args, **kargs): super().__init__(*args, **kargs) self.now = m.OrgDate.now() m.OrgDate.default_locale = tests.getLocaleAlias('us')
def test_repeated_task_merge(self): m.OrgDate.default_locale = getLocaleAlias('us') base_text = textwrap.dedent("""\ * TODO RepeatedTask SCHEDULED: <2015-12-09 Wed> * TODO RepeatedTask SCHEDULED: <2015-12-10 Thu> * TODO RepeatedTask SCHEDULED: <2015-12-12 Sat> """) base_tree = m.TasksTree.parse_text(base_text) org_text = textwrap.dedent("""\ * TODO RepeatedTask SCHEDULED: <2015-12-09 Wed> * TODO RepeatedTask SCHEDULED: <2015-12-10 Thu> * DONE RepeatedTask CLOSED: [2015-12-12 Sat] SCHEDULED: <2015-12-12 Sat> """) org_tree = m.TasksTree.parse_text(org_text) remote_tree = m.TasksTree(None) remote_tasks = [ remote_tree.add_subtask('RepeatedTask').update( completed=True, closed_time=m.OrgDate(datetime.date(2015, 12, 11)), schedule_time=m.OrgDate(datetime.date(2015, 12, 11))), remote_tree.add_subtask('RepeatedTask').update( todo=True, schedule_time=m.OrgDate(datetime.date(2015, 12, 9))), remote_tree.add_subtask('RepeatedTask').update( todo=True, schedule_time=m.OrgDate(datetime.date(2015, 12, 12))), remote_tree.add_subtask('RepeatedTask').update( todo=True, schedule_time=m.OrgDate(datetime.date(2015, 12, 14))), ] result_text = textwrap.dedent("""\ * TODO RepeatedTask SCHEDULED: <2015-12-09 Wed> * DONE RepeatedTask CLOSED: [2015-12-11 Fri] SCHEDULED: <2015-12-11 Fri> * DONE RepeatedTask CLOSED: [2015-12-12 Sat] SCHEDULED: <2015-12-12 Sat> * TODO RepeatedTask SCHEDULED: <2015-12-14 Mon> """) remote_sync_plan = m.treemerge(org_tree, remote_tree, base_tree, m.InteractiveMergeConf(TestAdapterFor3Way())) self.assertEqual(str(org_tree), result_text) self.assertEqual(len(remote_sync_plan), 2) # Remove RepeatedTask <2015-12-11 Fri> assertObj = next(x for x in remote_sync_plan if x['item'] == remote_tasks[0]) self.assertEqual(assertObj['action'], 'remove') # Remove RepeatedTask <2015-12-12 Sat> assertObj = next(x for x in remote_sync_plan if x['item'] == remote_tasks[2]) self.assertEqual(assertObj['action'], 'remove')
def test_3way_merge(self): m.OrgDate.default_locale = getLocaleAlias('us') base_text = textwrap.dedent("""\ * NotTodoTestTask * TitleMergeTest ** TODO TitleMergeTask1 ** TODO TitleMergeTask2 ** TODO TitleMergeTask3 * ScheduleMergeTest * TODO ScheduleMergeTask1 SCHEDULED: <2015-12-09 Wed> * TODO ScheduleMergeTask2 SCHEDULED: <2015-12-09 Wed> * TODO ScheduleMergeTask3 SCHEDULED: <2015-12-09 Wed> """.format(m.OrgDate.now().to_org_format())) base_tree = m.TasksTree.parse_text(base_text) org_text = textwrap.dedent("""\ * NotTodoTestTask * TitleMergeTest ** TODO TitleMergeTask1 ** TODO TitleMergeTask2 org-edited ** TODO TitleMergeTask3 * ScheduleMergeTest * TODO ScheduleMergeTask1 SCHEDULED: <2015-12-09 Wed> * TODO ScheduleMergeTask2 SCHEDULED: <2015-12-10 Thu> * TODO ScheduleMergeTask3 SCHEDULED: <2015-12-09 Wed> """.format(m.OrgDate.now().to_org_format())) org_tree = m.TasksTree.parse_text(org_text) remote_tree = m.TasksTree(None) remote_tasks = [ remote_tree.add_subtask('TitleMergeTask1').update( todo=True), remote_tree.add_subtask('TitleMergeTask2').update( todo=True), remote_tree.add_subtask('TitleMergeTask3 remote-edited').update( todo=True), remote_tree.add_subtask('ScheduleMergeTask1').update( todo=True, schedule_time=m.OrgDate(datetime.date(2015, 12, 9))), remote_tree.add_subtask('ScheduleMergeTask2').update( todo=True, schedule_time=m.OrgDate(datetime.date(2015, 12, 9))), remote_tree.add_subtask('ScheduleMergeTask3').update( todo=True, schedule_time=m.OrgDate(datetime.date(2015, 12, 11))), ] result_text = textwrap.dedent("""\ * NotTodoTestTask * TitleMergeTest ** TODO TitleMergeTask1 ** TODO TitleMergeTask2 org-edited ** TODO TitleMergeTask3 remote-edited * ScheduleMergeTest * TODO ScheduleMergeTask1 SCHEDULED: <2015-12-09 Wed> * TODO ScheduleMergeTask2 SCHEDULED: <2015-12-10 Thu> * TODO ScheduleMergeTask3 SCHEDULED: <2015-12-11 Fri> """) remote_sync_plan = m.treemerge(org_tree, remote_tree, base_tree, m.InteractiveMergeConf(TestAdapterFor3Way())) self.assertEqual(str(org_tree), result_text) self.assertEqual(len(remote_sync_plan), 2) # TitleMergeTask2 org-edited assertObj = next(x for x in remote_sync_plan if x['item'] == remote_tasks[1]) self.assertEqual(assertObj['action'], 'update') self.assertEqual(assertObj['changes'], ['title']) self.assertEqual(assertObj['item'].title, 'TitleMergeTask2 org-edited') # ScheduleMergeTask2 assertObj = next(x for x in remote_sync_plan if x['item'] == remote_tasks[4]) self.assertEqual(assertObj['action'], 'update') self.assertEqual(assertObj['changes'], ['schedule_time']) self.assertEqual(assertObj['item'].schedule_time, m.OrgDate(datetime.date(2015, 12, 10)))