taskwiki/tests/test_preset_parsing.py

46 lines
1.6 KiB
Python

# -*- coding: utf-8 -*-
from tests.base import MockVim, MockCache
import sys
class TestParsingPresetHeader(object):
def setup(self):
self.mockvim = MockVim()
self.cache = MockCache()
sys.modules['vim'] = self.mockvim
from taskwiki.preset import PresetHeader
self.PresetHeader = PresetHeader
def teardown(self):
self.mockvim.reset()
self.cache.reset()
def process_preset_header(self, preset_header, test_syntax):
"""
Expands the example preset_header to a syntax of a markup and pass on to
MockVim to be processed.
The result of the processed preset_header is collected.
"""
markup, header_expand = test_syntax
formatted_preset_header = header_expand(preset_header)
print(formatted_preset_header)
self.cache.markup_syntax = markup
self.cache.buffer[0] = formatted_preset_header
header = self.PresetHeader.from_line(0, self.cache)
return header
def test_simple(self, test_syntax):
preset_header = "HEADER2(Test || project:Home)"
header = self.process_preset_header(preset_header, test_syntax)
assert header.taskfilter == ["(", "project:Home", ")"]
assert header.defaults == {'project': 'Home'}
def test_defaults(self, test_syntax):
preset_header = "HEADER2(Test || project:Home || +home)"
header = self.process_preset_header(preset_header, test_syntax)
assert header.taskfilter == ["(", "project:Home", ")"]
assert header.defaults == {'tags': ['home']}