# -*- coding: utf-8 -*- from datetime import datetime from tests.base import IntegrationTest from time import sleep class TestViewportsTaskGeneration(IntegrationTest): viminput = """ === Work tasks | +work === """ vimoutput = """ === Work tasks | +work === * [ ] tag work task #{uuid} """ tasks = [ dict(description="tag work task", tags=['work']), ] def execute(self): self.command("w", regex="written$", lines=1) class TestViewportsTaskGenerationEmptyFilter(IntegrationTest): viminput = """ === Work tasks | === """ vimoutput = """ === Work tasks | === * [ ] some task #{uuid} """ tasks = [ dict(description="some task"), ] def execute(self): self.command("w", regex="written$", lines=1) class TestViewportsTaskRemoval(IntegrationTest): viminput = """ === Work tasks | -work === * [ ] tag work task #{uuid} """ vimoutput = """ === Work tasks | -work === """ tasks = [ dict(description="tag work task", tags=['work']), ] def execute(self): self.command("w", regex="written$", lines=1) class TestViewportsContextTaskGeneration(IntegrationTest): viminput = """ === Work tasks | @work === """ vimoutput = """ === Work tasks | @work === * [ ] tag work task #{uuid} """ tasks = [ dict(description="tag work task", tags=['work']), ] def execute(self): with open(self.taskrc_path, 'a') as f: f.write('context.work=+work\n') self.command("w", regex="written$", lines=1) class TestViewportsContextComplexFilterTaskGeneration(IntegrationTest): viminput = """ === Work tasks | @work or project:Home === """ vimoutput = """ === Work tasks | @work or project:Home === * [ ] home project task #{uuid} * [ ] tag work task #{uuid} """ tasks = [ dict(description="tag work task", tags=['work']), dict(description="home project task", project='Home'), ] def execute(self): with open(self.taskrc_path, 'a') as f: f.write('context.work=+work\n') self.command("w", regex="written$", lines=1) class TestViewportsTwoContextTaskGeneration(IntegrationTest): viminput = """ === Work tasks | @work or @home === """ vimoutput = """ === Work tasks | @work or @home === * [ ] home project task #{uuid} * [ ] tag work task #{uuid} """ tasks = [ dict(description="tag work task", tags=['work']), dict(description="home project task", project='Home'), ] def execute(self): with open(self.taskrc_path, 'a') as f: f.write('context.work=+work\n') f.write('context.home=project:Home\n') self.command("w", regex="written$", lines=1) class TestViewportsContextInvalid(IntegrationTest): viminput = """ === Work tasks | @doesnotexist === """ vimoutput = """ === Work tasks | @doesnotexist === """ def execute(self): self.command("w", regex="Context definition for 'doesnotexist' " "could not be found.", lines=3) class TestViewportDefaultsAssigment(IntegrationTest): viminput = """ === Work tasks | +work === * [ ] tag work task """ vimoutput = """ === Work tasks | +work === * [ ] tag work task #{uuid} """ def execute(self): self.command("w", regex="written$", lines=1) assert len(self.tw.tasks.pending()) == 1 task = self.tw.tasks.pending()[0] assert task['description'] == 'tag work task' assert task['status'] == 'pending' assert task['tags'] == set(['work']) class TestViewportDefaultsExplicit(IntegrationTest): viminput = """ === Work tasks | project:Home +home | project:Chores === * [ ] home task """ vimoutput = """ === Work tasks | project:Home +home | project:Chores === """ def execute(self): self.command("w", regex="written$", lines=1) assert len(self.tw.tasks.pending()) == 1 task = self.tw.tasks.pending()[0] assert task['description'] == 'home task' assert task['status'] == 'pending' assert task['project'] == 'Chores' assert task['tags'] == set() class TestViewportDefaultsExplicitEmpty(IntegrationTest): viminput = """ === Work tasks | project:Home +home | project: === * [ ] home task """ vimoutput = """ === Work tasks | project:Home +home | project: === """ def execute(self): self.command("w", regex="written$", lines=1) assert len(self.tw.tasks.pending()) == 1 task = self.tw.tasks.pending()[0] assert task['description'] == 'home task' assert task['status'] == 'pending' assert task['project'] == None assert task['tags'] == set() class TestViewportDefaultsTerminatedByHeader(IntegrationTest): viminput = """ === Work tasks | +work === * [ ] tag work task === Unrelated work tasks === * [ ] not tagged work task """ vimoutput = """ === Work tasks | +work === * [ ] tag work task #{uuid} === Unrelated work tasks === * [ ] not tagged work task #{uuid} """ def execute(self): self.command("w", regex="written$", lines=1) assert len(self.tw.tasks.pending()) == 2 task = self.tw.tasks.filter('+work')[0] assert task['description'] == 'tag work task' assert task['status'] == 'pending' assert task['tags'] == set(['work']) task = self.tw.tasks.filter('-work')[0] assert task['description'] == 'not tagged work task' assert task['status'] == 'pending' assert task['tags'] == set() class TestViewportInspection(IntegrationTest): viminput = """ === Work tasks | +work === * [ ] tag work task #{uuid} """ vimoutput = """ ViewPort inspection: -------------------- Name: Work tasks Filter used: -DELETED -PARENT ( +work ) Defaults used: tags:['work'] Ordering used: status+,end+,due+,pri-,project+ Matching taskwarrior tasks: 1 Displayed tasks: 1 Tasks to be added: Tasks to be deleted: """ tasks = [ dict(description="tag work task", tags=['work']), ] def execute(self): self.command("w", regex="written$", lines=1) self.client.feedkeys('1gg') self.client.feedkeys(r'\') sleep(0.5) assert self.py("print(vim.current.buffer)", regex="') sleep(0.5) assert self.py("print(vim.current.buffer)", regex="