Esempio n. 1
0
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"
    ))
Esempio n. 2
0
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, *)"
    ))
Esempio n. 3
0
 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"}
Esempio n. 4
0
 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)
Esempio n. 5
0
    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)
Esempio n. 6
0
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"
    ))
Esempio n. 7
0
    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)
Esempio n. 8
0
 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
Esempio n. 9
0
    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)
Esempio n. 10
0
    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"))