예제 #1
0
    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())
예제 #2
0
    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())
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
    def __init__(self, *args, **kargs):
        super().__init__(*args, **kargs)

        self.now = m.OrgDate.now()
        m.OrgDate.default_locale = tests.getLocaleAlias('us')
예제 #7
0
    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')
예제 #8
0
    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)))