|
2 | 2 |
|
3 | 3 | import os |
4 | 4 | import sys |
| 5 | +import time |
5 | 6 | import unittest |
6 | 7 | from datetime import datetime as _datetime |
7 | 8 |
|
@@ -106,6 +107,37 @@ def test_create_remote_zone_and_update_properties__issue_816(self): |
106 | 107 | if newzone: |
107 | 108 | newzone.remove() |
108 | 109 |
|
| 110 | + def test_zone_create_and_modify_times__issue_822(self): |
| 111 | + newzone = None |
| 112 | + try: |
| 113 | + # Create new zone |
| 114 | + newzonename = "otherzone" |
| 115 | + newzone = self.sess.zones.create(newzonename, "remote") |
| 116 | + query_zone = self.sess.query(Zone).filter(Zone.name == newzonename).one() |
| 117 | + create_time = query_zone[Zone.create_time] |
| 118 | + old_modify_time = query_zone[Zone.modify_time] |
| 119 | + |
| 120 | + # Confirm that creation/modification are datetimes |
| 121 | + self.assertIsInstance(create_time, _datetime) |
| 122 | + self.assertIsInstance(old_modify_time, _datetime) |
| 123 | + |
| 124 | + # Confirm we get the same result via query vs. iRODSZone object attribute |
| 125 | + self.assertEqual(create_time, self.sess.zones.get(newzonename).create_time) |
| 126 | + self.assertEqual(old_modify_time, self.sess.zones.get(newzonename).modify_time) |
| 127 | + |
| 128 | + # Confirm modify time is updated after comment change after more than one second, |
| 129 | + # but create time is not changed. |
| 130 | + time.sleep(1.5) |
| 131 | + newzone.modify("comment", "some comment") |
| 132 | + query_zone = self.sess.query(Zone).filter(Zone.name == newzonename).one() |
| 133 | + self.assertEqual(query_zone[Zone.create_time], create_time) |
| 134 | + self.assertGreater(query_zone[Zone.modify_time], old_modify_time) |
| 135 | + self.assertGreater(self.sess.zones.get(newzonename).modify_time, old_modify_time) |
| 136 | + |
| 137 | + finally: |
| 138 | + if newzone: |
| 139 | + newzone.remove() |
| 140 | + |
109 | 141 |
|
110 | 142 | if __name__ == "__main__": |
111 | 143 | # let the tests find the parent irods lib |
|
0 commit comments