def test_activate_deactivate(monkeypatch, setdt): setdt(2012, 10, 24) tracker = Tracker(nodecreator=FakeNodeCreator(tasks.Task), skeleton=False) tracker.deserialize({"life": "task: \xfc1\n" " @active\n" "task: \xfc2\n" "task: \xfc3\n" }) setdt(2012, 10, 24, 0, 5) navigation._cmd("done", tracker.root) navigation._cmd("done", tracker.root) assert match(tracker.serialize()["life"], ( "task#?????: \xfc1\n" " @finished: 5m after October 24, 2012 12:00:00 AM\n" "task#?????: \xfc2\n" " @finished: 0s after October 24, 2012 12:05:00 AM\n" "task#?????: \xfc3\n" " @started: October 24, 2012 12:05:00 AM\n" " @active\n" ))
def test_archiving(setdt): tracker = Tracker(skeleton=False) tracker.root.loading_in_progress = True days_node = Days("days", None, tracker.root) tracker.root.addchild(days_node) setdt(2013, 12, 22, 12) days_node.createchild("day", "July 19, 2012") days_node.createchild("day", "July 21, 2012") days_node.createchild("day", "July 23, 2012") days_node.createchild("day", "July 22, 2012") days_node.createchild("day", "July 20, 2012") days_node.load_finished() tracker.root.loading_in_progress = False assert all(node.node_type == "archived" for node in days_node.children) assert match("\n".join(node.text for node in days_node.children), ( "day#?????: July 19, 2012 (Thursday, *)\n" "day#?????: July 20, 2012 (Friday, *)\n" "day#?????: July 21, 2012 (Saturday, *)\n" "day#?????: July 22, 2012 (Sunday, *)\n" "day#?????: July 23, 2012 (Monday, *)" ))
def test_skeleton_day_active(self, setdt): setdt(2013, 1, 30, 12) tracker = Tracker() tracker.deserialize({"life": "days\n" " day#bcdef: today\n" " @started: September 23, 2012 11:00 AM\n" " _genactive#cdefg: something\n" " @active\n" " sleep#defgh: today\n" "todo bucket#ghijk\n" "fitness log#hijkl" }) today = tracker.root.find("days > day: today").one() tracker.root.active_node.started = None assert match(serialize_to_str(tracker.root), ( "days#00001\n" " day#bcdef: {0}\n" " @started: September 23, 2012 11:00:00 AM\n" " _genactive#cdefg: something\n" " @active\n" " sleep#defgh: {0}\n" "todo bucket#ghijk\n" "fitness log#hijkl\n" ).format(today.text)) assert set(tracker.root.ids) == { "00001", "bcdef", "cdefg", "defgh", "ghijk", "hijkl", "00000"}
def test_empty_next_peer(self): tracker = Tracker(False) origin = tracker.root.createchild("task", "origin") creator = searching.parse_create("-> task: derp") creator(origin) assert match("\n".join(serialize(tracker.root, is_root=True)), ( "task#?????: origin\n" "task#?????: derp" )) assert repr(creator)
def test_create_node(self): tracker = Tracker(False, FakeNodeCreator(GenericActivate)) origin = tracker.root.createchild("task", "origin") creator = searching.parse_create("task: Target") creator(origin) assert match("\n".join(serialize(origin)), ( "task#?????: origin\n" " task#?????: Target" )) assert repr(creator)
def test_out_of_order(setdt): tracker = Tracker(skeleton=False) days_node = Days("days", None, tracker.root) tracker.root.addchild(days_node) setdt(2013, 12, 29, 12) days_node.createchild("day", "December 19, 2012") days_node.addchild(GenericActivate("archived", "19 a")) days_node.addchild(GenericActivate("archived", "19 b")) ignoreme = days_node.createchild("day", "December 21, 2012") days_node.addchild(GenericActivate("archived", "21 a")) days_node.addchild(GenericActivate("archived", "21 b")) days_node.createchild("day", "December 23, 2012", before=ignoreme) days_node.addchild(GenericActivate("archived", "23 a")) days_node.addchild(GenericActivate("archived", "23 b")) days_node.createchild("day", "December 22, 2012") days_node.addchild(GenericActivate("archived", "22 out of order a")) days_node.addchild(GenericActivate("archived", "22 out of order b")) days_node.createchild("day", "December 20, 2012") days_node.addchild(GenericActivate("archived", "20 out of order a")) days_node.addchild(GenericActivate("archived", "20 out of order b")) result = tracker.serialize()["life"] assert match(result, ( "days#?????\n" " day#?????: December 19, 2012 (Wednesday, *)\n" " archived#?????: 19 a\n" " archived#?????: 19 b\n" " day#?????: December 20, 2012 (Thursday, *)\n" " day#?????: December 21, 2012 (Friday, *)\n" " archived#?????: 21 a\n" " archived#?????: 21 b\n" # December 22 was moved back to before 23, leaving # its archived nodes behind " day#?????: December 22, 2012 (Saturday, *)\n" " day#?????: December 23, 2012 (Sunday, *)\n" " archived#?????: 23 a\n" " archived#?????: 23 b\n" " archived#?????: 22 out of order a\n" " archived#?????: 22 out of order b\n" " archived#?????: 20 out of order a\n" " archived#?????: 20 out of order b\n" ))
def test_existing_query(self): tracker = Tracker(False, FakeNodeCreator(GenericActivate)) origin = tracker.root.createchild("task", "origin") selector = searching.parse_single("task: target") creator = searching.parse_create(query=selector) creator(origin) assert match("\n".join(serialize(origin)), ( "task#?????: origin\n" " task#?????: target" )) assert repr(creator)
def test_skeleton_load_integration(self, setdt): setdt(2013, 1, 30, 12) tracker = Tracker() tracker.deserialize({"life": "todo bucket\n" "fitness log" }) assert tracker.root.active_node is tracker.root assert match(serialize_to_str(tracker.root), ( "todo bucket#?????\n" "fitness log#?????\n" )) assert len(tracker.root.ids) == 3 assert tracker.root.id == "00000" assert "00000" in tracker.root.ids assert tracker.root.ids["00000"] is tracker.root for depth, node in tracker.root.iter_flat_children(): assert node.id in tracker.root.ids assert tracker.root.ids[node.id] is node
def test_last_2(self): creator = searching.parse_create("-> :{last} > task: target") tracker = Tracker(False, FakeNodeCreator(GenericActivate)) origin = tracker.root.createchild("task", "origin") tracker.root.createchild("task", "ignore 1") tracker.root.createchild("task", "ignore 2") tracker.root.createchild("task", "ignore 3") tracker.root.createchild("task", "expected") creator(origin) assert match("\n".join(serialize(tracker.root, is_root=True)), ( "task#?????: origin\n" "task#?????: ignore 1\n" "task#?????: ignore 2\n" "task#?????: ignore 3\n" "task#?????: expected\n" " task#?????: target" )) assert repr(creator)
def test_save_basic(self, tmpdir): tracker = Tracker(nodecreator=FakeNodeCreator(), skeleton=False) node1 = GenericNode("node1", "\u2665node1_text", tracker.root) tracker.root.addchild(node1) node2 = GenericNode("node2", "\u2665node2_text", tracker.root) tracker.root.addchild(node2) node3 = GenericNode("node3", None, tracker.root) tracker.root.addchild(node3) node1_1 = GenericNode("node1_1", "\u2665node1_1_text", node1) node1_1.setoption("herp", "\u2665derp") node1.addchild(node1_1) node1_2 = GenericNode("node1_2", "\u2665node1_2_text", node1) node1_2.continue_text("\u2665herk derk") node1.addchild(node1_2) node2_1 = GenericNode("node2_1", "\u2665node2_1_text", node2) node2_1.setoption("hark", "\u2665dark") node2_1.continue_text('\u2665honk donk') node2.addchild(node2_1) f = tmpdir.join("life") tracker.save(str(tmpdir)) assert match(f.read("rb"), ( "node1#?????: \u2665node1_text\n" " node1_1#?????: \u2665node1_1_text\n" " @herp: \u2665derp\n" " node1_2#?????: \u2665node1_2_text\n" " - \u2665herk derk\n" "node2#?????: \u2665node2_text\n" " node2_1#?????: \u2665node2_1_text\n" " - \u2665honk donk\n" " @hark: \u2665dark\n" "node3#?????\n" ).encode("utf-8"))