diff --git a/test/continue.t b/test/continue.t index c665fa4f..a732843c 100755 --- a/test/continue.t +++ b/test/continue.t @@ -177,6 +177,62 @@ class TestContinue(TestCase): self.assertTrue('tags' in j[2]) self.assertEqual(j[2]['tags'], ['FOO']) + def test_continue_with_id_and_range(self): + """Verify that continue with a range adds a copy with same tags""" + now = datetime.now() + now_utc = now.utcnow() + + one_hour_before = now - timedelta(hours=1) + two_hours_before = now - timedelta(hours=2) + three_hours_before = now - timedelta(hours=3) + four_hours_before = now - timedelta(hours=4) + five_hours_before = now - timedelta(hours=5) + + code, out, err = self.t("start FOO {}T{:%H}:00:00".format(now.date(), five_hours_before)) + self.assertIn("Tracking FOO\n", out) + + code, out, err = self.t("stop {}T{:%H}:00:00".format(now.date(), four_hours_before)) + self.assertIn("Recorded FOO\n", out) + + code, out, err = self.t("start BAR {}T{:%H}:00:00".format(now.date(), four_hours_before)) + self.assertIn("Tracking BAR\n", out) + + code, out, err = self.t("stop {}T{:%H}:00:00".format(now.date(), three_hours_before)) + self.assertIn("Recorded BAR\n", out) + + self.t("continue @2 {0}T{1:%H}:00:00 - {0}T{2:%H}:00:00".format(now.date(), two_hours_before, one_hour_before)) + + j = self.t.export() + + one_hour_before_utc = now_utc - timedelta(hours=1) + two_hours_before_utc = now_utc - timedelta(hours=2) + three_hours_before_utc = now_utc - timedelta(hours=3) + four_hours_before_utc = now_utc - timedelta(hours=4) + five_hours_before_utc = now_utc - timedelta(hours=5) + + self.assertEqual(len(j), 3) + + self.assertTrue('start' in j[0]) + self.assertEqual(j[0]['start'], '{:%Y%m%dT%H}0000Z'.format(five_hours_before_utc), 'start time of first interval does not match: expected {:%Y%m%dT%H}0000Z, actual {}'.format(five_hours_before_utc, j[0]['start'])) + self.assertTrue('end' in j[0]) + self.assertEqual(j[0]['end'], '{:%Y%m%dT%H}0000Z'.format(four_hours_before_utc), 'end time of first interval does not match: expected {:%Y%m%dT%H}0000Z, actual {}'.format(four_hours_before_utc, j[0]['end'])) + self.assertTrue('tags' in j[0]) + self.assertEqual(j[0]['tags'], ['FOO']) + + self.assertTrue('start' in j[1]) + self.assertEqual(j[1]['start'], '{:%Y%m%dT%H}0000Z'.format(four_hours_before_utc), 'start time of second interval does not match: expected {:%Y%m%dT%H}0000Z, actual {}'.format(four_hours_before_utc, j[1]['start'])) + self.assertTrue('end' in j[1]) + self.assertEqual(j[1]['end'], '{:%Y%m%dT%H}0000Z'.format(three_hours_before_utc), 'end time of second interval does not match: expected {:%Y%m%dT%H}0000Z, actual {}'.format(three_hours_before_utc, j[1]['end'])) + self.assertTrue('tags' in j[1]) + self.assertEqual(j[1]['tags'], ['BAR']) + + self.assertTrue('start' in j[2]) + self.assertEqual(j[2]['start'], '{:%Y%m%dT%H}0000Z'.format(two_hours_before_utc), 'start time of added interval does not match: expected {:%Y%m%dT%H}0000Z, actual {}'.format(two_hours_before_utc, j[2]['start'])) + self.assertTrue('end' in j[2]) + self.assertEqual(j[2]['end'], '{:%Y%m%dT%H}0000Z'.format(one_hour_before_utc), 'end time of added interval does not match: expected {:%Y%m%dT%H}0000Z, actual {}'.format(one_hour_before_utc, j[2]['end'])) + self.assertTrue('tags' in j[2]) + self.assertEqual(j[2]['tags'], ['FOO']) + if __name__ == "__main__": from simpletap import TAPTestRunner unittest.main(testRunner=TAPTestRunner())