Tests for filtering

This commit is contained in:
Manuel Ebert 2013-08-06 17:57:31 -07:00
parent e5ee4e3f97
commit d4cb4e64f6
4 changed files with 79 additions and 3 deletions

View file

@ -1,4 +1,4 @@
2013-06-09 15:39 I have an @idea:
2013-04-09 15:39 I have an @idea:
(1) write a command line @journal software
(2) ???
(3) PROFIT!

View file

@ -0,0 +1,52 @@
Feature: Expoting a Journal
Scenario: Exporting to json
Given we use the config "tags.json"
When we run "jrnl --export json"
Then we should get no error
and the output should be
"""
{
"entries": [
{
"body": "(1) write a command line @journal software\n(2) ???\n(3) PROFIT!",
"date": "2013-04-09",
"time": "15:39",
"title": "I have an @idea:"
},
{
"body": "As alway's he shared his latest @idea on how to rule the world with me.",
"date": "2013-06-10",
"time": "15:40",
"title": "I met with @dan."
}
],
"tags": {
"@idea": 2,
"@journal": 1,
"@dan": 1
}
}
"""
Scenario: Exporting using filters should only export parts of the journal
Given we use the config "tags.json"
When we run "jrnl -to 'may 2013' --export json"
Then we should get no error
and the output should be
"""
{
"entries": [
{
"body": "(1) write a command line @journal software\n(2) ???\n(3) PROFIT!",
"date": "2013-04-09",
"time": "15:39",
"title": "I have an @idea:"
}
],
"tags": {
"@idea": 1,
"@journal": 1
}
}
"""

View file

@ -8,6 +8,20 @@ try:
except ImportError:
from cStringIO import StringIO
def _parse_args(command):
nargs=[]
concats = []
for a in command.split()[1:]:
if a.startswith("'"):
concats.append(a.strip("'"))
elif a.endswith("'"):
concats.append(a.strip("'"))
nargs.append(u" ".join(concats))
concats = []
else:
nargs.append(a)
return nargs
def read_journal(journal_name="default"):
with open(jrnl.CONFIG_PATH) as config_file:
config = json.load(config_file)
@ -34,14 +48,14 @@ def set_config(context, config_file):
@when('we run "{command}" and enter "{inputs}"')
def run_with_input(context, command, inputs=None):
text = inputs or context.text
args = command.split()[1:]
args = _parse_args(command)
buffer = StringIO(text.strip())
jrnl.util.STDIN = buffer
jrnl.cli(args)
@when('we run "{command}"')
def run(context, command):
args = command.split()[1:]
args = _parse_args(command)
jrnl.cli(args or None)

View file

@ -10,3 +10,13 @@ Feature: Tagging
@journal : 1
@dan : 1
"""
Scenario: Filtering journals should also filter tags
Given we use the config "tags.json"
When we run "jrnl -from 'may 2013' --tags"
Then we should get no error
and the output should be
"""
@idea : 1
@dan : 1
"""