コード例 #1
0
        def test_does_not_set_modified_if_status_identical_and_no_changes(
                self):
            task_dt = datetime.datetime(2018,
                                        1,
                                        1,
                                        0,
                                        0,
                                        0,
                                        0,
                                        tzinfo=timezone.UTC())
            current_dt = datetime.datetime(2018,
                                           3,
                                           3,
                                           0,
                                           0,
                                           0,
                                           0,
                                           tzinfo=timezone.UTC())
            old_data = nodedata.TaskData(
                status='todo',
                modified=task_dt,
                created=task_dt,
                finished=False,
            )
            new_data = nodedata.TaskData(
                status='todo',
                modified=None,
                created=None,
                finished=None,
            )

            merged_data = self.update(old_data, new_data, current_dt)
            assert merged_data.modified == task_dt
コード例 #2
0
        def test_created(self):
            old_created_date = datetime.datetime(2018,
                                                 1,
                                                 1,
                                                 0,
                                                 0,
                                                 0,
                                                 tzinfo=timezone.UTC())
            new_created_date = datetime.datetime(2018,
                                                 2,
                                                 2,
                                                 0,
                                                 0,
                                                 0,
                                                 tzinfo=timezone.UTC())
            current_date = datetime.datetime(2018,
                                             3,
                                             3,
                                             0,
                                             0,
                                             0,
                                             0,
                                             tzinfo=timezone.UTC())

            old_data = nodedata.TaskData(status='todo',
                                         created=old_created_date)
            new_data = nodedata.TaskData(status='todo',
                                         created=new_created_date)

            merged_data = self.update(old_data, new_data, current_date)
            assert merged_data.created == new_created_date
コード例 #3
0
        def test_status(self):
            old_modified_date = datetime.datetime(2018,
                                                  1,
                                                  1,
                                                  0,
                                                  0,
                                                  0,
                                                  tzinfo=timezone.UTC())
            new_modified_date = datetime.datetime(2018,
                                                  2,
                                                  2,
                                                  0,
                                                  0,
                                                  0,
                                                  tzinfo=timezone.UTC())
            current_date = datetime.datetime(2018,
                                             3,
                                             3,
                                             0,
                                             0,
                                             0,
                                             0,
                                             tzinfo=timezone.UTC())

            old_data = nodedata.TaskData(status='todo',
                                         modified=old_modified_date)
            new_data = nodedata.TaskData(status='wip',
                                         modified=new_modified_date)

            merged_data = self.update(old_data, new_data, current_date)
            assert merged_data.status == 'wip'
コード例 #4
0
        def test_finished_with_date_when_already_finished(self):
            old_finished_date = datetime.datetime(2018,
                                                  1,
                                                  1,
                                                  0,
                                                  0,
                                                  0,
                                                  tzinfo=timezone.UTC())
            new_finished_date = datetime.datetime(2018,
                                                  2,
                                                  2,
                                                  0,
                                                  0,
                                                  0,
                                                  tzinfo=timezone.UTC())
            current_date = datetime.datetime(2018,
                                             3,
                                             3,
                                             0,
                                             0,
                                             0,
                                             0,
                                             tzinfo=timezone.UTC())

            old_data = nodedata.TaskData(status='done',
                                         finished=old_finished_date)
            new_data = nodedata.TaskData(status='done',
                                         finished=new_finished_date)

            merged_data = self.update(old_data, new_data, current_date)
            assert merged_data.finished == old_finished_date
コード例 #5
0
        def test_unfinished_to_finished_without_date(self):
            current_date = datetime.datetime(2018,
                                             3,
                                             3,
                                             0,
                                             0,
                                             0,
                                             0,
                                             tzinfo=timezone.UTC())

            old_data = nodedata.TaskData(status='todo')
            new_data = nodedata.TaskData(status='done')

            merged_data = self.update(old_data, new_data, current_date)
            assert merged_data.finished == current_date
コード例 #6
0
        def test_updates_finished(self):
            # 'status' and 'finished' are inconsistent
            taskdata = nodedata.TaskData(status='done', finished=False)
            dt = datetime.datetime(2018, 1, 1, 0, 0, 0, tzinfo=timezone.UTC())

            new_taskdata = self.touch(taskdata, dt)
            assert new_taskdata.finished == dt
コード例 #7
0
        def test_does_not_set_modified_when_identical(self):
            task_dt = datetime.datetime(2018,
                                        1,
                                        1,
                                        0,
                                        0,
                                        0,
                                        0,
                                        tzinfo=timezone.UTC())
            current_dt = datetime.datetime(2018,
                                           3,
                                           3,
                                           0,
                                           0,
                                           0,
                                           0,
                                           tzinfo=timezone.UTC())
            taskdata = nodedata.TaskData(
                status='todo',
                modified=task_dt,
                created=task_dt,
                finished=False,
            )

            merged_data = self.update(taskdata, taskdata, current_dt)
            assert merged_data.modified == task_dt
コード例 #8
0
 def test_finished_defaults_to_false(self):
     taskdata = nodedata.TaskData(
         status='todo',
         created=None,
         finished=None,
         modified=None,
     )
     assert taskdata.finished is False
コード例 #9
0
 def test_sets_modified_when_null(self):
     taskdata = nodedata.TaskData(status='todo', modified=None)
     now_dt = datetime.datetime(2018,
                                1,
                                1,
                                0,
                                0,
                                0,
                                tzinfo=timezone.UTC())
     new_taskdata = self.finalize(taskdata, now_dt)
     assert new_taskdata.modified == now_dt
コード例 #10
0
 def test_does_not_set_created_already_set(self):
     created = datetime.datetime(2017,
                                 1,
                                 1,
                                 0,
                                 0,
                                 0,
                                 tzinfo=timezone.UTC())
     now = datetime.datetime(2018, 1, 1, 0, 0, 0, tzinfo=timezone.UTC())
     taskdata = nodedata.TaskData(status='todo', created=created)
     new_taskdata = self.finalize(taskdata, now)
     assert new_taskdata.created == created
コード例 #11
0
 def test_clears_finished_when_task_incomplete(self):
     finished = datetime.datetime(2017,
                                  1,
                                  1,
                                  0,
                                  0,
                                  0,
                                  tzinfo=timezone.UTC())
     now = datetime.datetime(2018, 1, 1, 0, 0, 0, tzinfo=timezone.UTC())
     taskdata = nodedata.TaskData(status='todo', finished=finished)
     new_taskdata = self.finalize(taskdata, now)
     assert new_taskdata.finished is False
コード例 #12
0
 def test_does_not_change_non_null_modified(self):
     modified = datetime.datetime(2017,
                                  1,
                                  1,
                                  0,
                                  0,
                                  0,
                                  tzinfo=timezone.UTC())
     now = datetime.datetime(2018, 1, 1, 0, 0, 0, tzinfo=timezone.UTC())
     taskdata = nodedata.TaskData(status='todo', modified=modified)
     new_taskdata = self.finalize(taskdata, now)
     assert new_taskdata.modified == modified
コード例 #13
0
 def test_does_not_overwrite_finished_when_task_complete_and_finished_is_set(
         self):
     finished = datetime.datetime(2017,
                                  1,
                                  1,
                                  0,
                                  0,
                                  0,
                                  tzinfo=timezone.UTC())
     now = datetime.datetime(2018, 1, 1, 0, 0, 0, tzinfo=timezone.UTC())
     taskdata = nodedata.TaskData(status='done', finished=finished)
     new_taskdata = self.finalize(taskdata, now)
     assert new_taskdata.finished == finished
コード例 #14
0
        def test_overwrites_modified(self):
            taskdata = nodedata.TaskData(status='todo',
                                         modified=datetime.datetime(
                                             2017,
                                             1,
                                             1,
                                             0,
                                             0,
                                             0,
                                             tzinfo=timezone.UTC()))
            dt = datetime.datetime(2018, 1, 1, 0, 0, 0, tzinfo=timezone.UTC())

            new_taskdata = self.touch(taskdata, dt)
            assert new_taskdata.modified == dt
コード例 #15
0
        def test_finished_to_unfinished(self):
            old_finished_date = datetime.datetime(2018,
                                                  1,
                                                  1,
                                                  0,
                                                  0,
                                                  0,
                                                  tzinfo=timezone.UTC())
            current_date = datetime.datetime(2018,
                                             3,
                                             3,
                                             0,
                                             0,
                                             0,
                                             0,
                                             tzinfo=timezone.UTC())

            old_data = nodedata.TaskData(status='done',
                                         finished=old_finished_date)
            new_data = nodedata.TaskData(status='todo')

            merged_data = self.update(old_data, new_data, current_date)
            assert merged_data.finished is False
コード例 #16
0
 def test_sets_data_obj(self):
     dt = datetime.datetime(1970, 1, 1, 0, 0, 0, tzinfo=timezone.UTC())
     task = astnode.Node(
         _id=None,
         ntype='task',
         name='task A',
         data={
             'status': 'todo',
             'created': dt,
             'finished': False,
             'modified': dt,
         },
         children=None,
     )
     new_data = nodedata.TaskData(status='done')
     task.data = new_data
     assert task.data == new_data
コード例 #17
0
        def test_does_not_overwrite_created(self):
            created_dt = datetime.datetime(2017,
                                           1,
                                           1,
                                           0,
                                           0,
                                           0,
                                           tzinfo=timezone.UTC())
            current_dt = datetime.datetime(2018,
                                           1,
                                           1,
                                           0,
                                           0,
                                           0,
                                           tzinfo=timezone.UTC())
            taskdata = nodedata.TaskData(status='todo', created=created_dt)

            new_taskdata = self.touch(taskdata, current_dt)
            assert new_taskdata.created == created_dt
コード例 #18
0
 def test_equality(self, params):
     task_A = nodedata.TaskData(*params)
     task_B = nodedata.TaskData(*params)
     assert task_A == task_B
コード例 #19
0
 def test_finished_valid(self, finished):
     taskdata = nodedata.TaskData('todo', finished=finished)
     assert taskdata.finished == finished
コード例 #20
0
 def test_finished_none_defaults_to_false(self):
     taskdata = nodedata.TaskData('todo', finished=None)
     assert taskdata.finished is False
コード例 #21
0
 def test_finished_invalid_type(self):
     with pytest.raises(TypeError):
         nodedata.TaskData('todo', finished='abc')
コード例 #22
0
 def test_finished_missing_timezone(self):
     with pytest.raises(TypeError):
         dt = datetime.datetime(2018, 1, 1, 0, 0, 0)
         nodedata.TaskData('todo', finished=dt)
コード例 #23
0
 def test_modified_valid(self, modified):
     taskdata = nodedata.TaskData(status='todo', modified=modified)
     assert taskdata.modified == modified
コード例 #24
0
 def test_modified_datetime_missing_tzinfo(self):
     modified = datetime.datetime(2018, 1, 1, 0, 0, 0)
     with pytest.raises(TypeError):
         nodedata.TaskData(status='todo', modified=modified)
コード例 #25
0
 def test_modified_invalid(self):
     with pytest.raises(TypeError):
         nodedata.TaskData(status='todo', modified='November 1st')
コード例 #26
0
        def test_assigns_created(self):
            taskdata = nodedata.TaskData(status='todo')
            dt = datetime.datetime(2018, 1, 1, 0, 0, 0, tzinfo=timezone.UTC())

            new_taskdata = self.touch(taskdata, dt)
            assert new_taskdata.created == dt
コード例 #27
0
 def test_does_not_set_finished_when_task_incomplete_and_finished_is_null(
         self):
     now = datetime.datetime(2018, 1, 1, 0, 0, 0, tzinfo=timezone.UTC())
     taskdata = nodedata.TaskData(status='todo', finished=None)
     new_taskdata = self.finalize(taskdata, now)
     assert new_taskdata.finished is False
コード例 #28
0
 def test_inequality(self, params):
     task_A = nodedata.TaskData('todo', *params)
     task_B = nodedata.TaskData('skip', *params)
     assert task_A != task_B
コード例 #29
0
 def test_sets_created_if_null(self):
     now = datetime.datetime(2018, 1, 1, 0, 0, 0, tzinfo=timezone.UTC())
     taskdata = nodedata.TaskData(status='todo', created=None)
     new_taskdata = self.finalize(taskdata, now)
     assert new_taskdata.created == now
コード例 #30
0
 def test_created_datetime_without_tzinfo(self):
     created = datetime.datetime(2018, 1, 1, 0, 0, 0)
     with pytest.raises(TypeError):
         nodedata.TaskData(status='todo', created=created)