diff --git a/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry b/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry index e182716c..9721dd55 100644 --- a/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry +++ b/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry @@ -31,7 +31,11 @@ conubia nostra, per inceptos himenaeos. UUID D04D335AFED711EABA18FAFFC2100C3D Tags - + + ipsum + tagone + tagtwo + Creator Device Agent diff --git a/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry b/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry index 9c2f0a54..8c2f3c52 100644 --- a/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry +++ b/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry @@ -35,7 +35,9 @@ Quisque auctor lacinia consectetur. UUID FC8A86CAFED711EA8892FAFFC2100C3D Tags - + + tagtwo + Creator Device Agent diff --git a/features/data/journals/basic_dayone.dayone/entries/FD8ABC8EFED711EABC35FAFFC2100C3D.doentry b/features/data/journals/basic_dayone.dayone/entries/FD8ABC8EFED711EABC35FAFFC2100C3D.doentry index 6eb2a2cc..d998c36b 100644 --- a/features/data/journals/basic_dayone.dayone/entries/FD8ABC8EFED711EABC35FAFFC2100C3D.doentry +++ b/features/data/journals/basic_dayone.dayone/entries/FD8ABC8EFED711EABC35FAFFC2100C3D.doentry @@ -23,7 +23,10 @@ ante eget fringilla. @tagthree and also @tagone UUID FD8ABC8EFED711EABC35FAFFC2100C3D Tags - + + tagthree + tagone + Creator Device Agent diff --git a/features/format.feature b/features/format.feature index d5189aad..b1d1ce78 100644 --- a/features/format.feature +++ b/features/format.feature @@ -12,6 +12,40 @@ Feature: Custom formats And entry 1 should have an array "tags" with 2 elements And entry 2 should have an array "tags" with 2 elements + Scenario Outline: Printing a journal that has multiline entries with tags + Given we use the config ".yaml" + When we run "jrnl -n 1 @ipsum" + Then we should get no error + And the output should be + """ + 2020-08-29 11:11 Entry the first. + | Lorem @ipsum dolor sit amet, consectetur adipiscing elit. Praesent malesuada + | quis est ac dignissim. Aliquam dignissim rutrum pretium. Phasellus + | pellentesque + | augue et venenatis facilisis. Suspendisse potenti. Sed dignissim sed nisl eu + | consequat. Aenean ante ex, elementum ut interdum et, mattis eget lacus. In + | commodo nulla nec tellus placerat, sed ultricies metus bibendum. Duis eget + | venenatis erat. In at dolor dui. @tagone and maybe also @tagtwo. + | + | Curabitur accumsan nunc ac neque tristique, eleifend faucibus justo + | ullamcorper. Suspendisse at mattis nunc. Nullam eget lacinia urna. Suspendisse + | potenti. Ut urna est, venenatis sed ante in, ultrices congue mi. Maecenas eget + | molestie metus. Mauris porttitor dui ornare gravida porta. Quisque sed lectus + | hendrerit, lacinia ante eget, vulputate ante. Aliquam vitae erat non felis + | feugiat sagittis. Phasellus quis arcu fringilla, mattis ligula id, vestibulum + | urna. Vivamus facilisis leo a mi tincidunt condimentum. Donec eu euismod enim. + | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam eu ligula eget + | velit scelerisque fringilla. Phasellus pharetra justo et nulla fringilla, ac + | porta sapien accumsan. Class aptent taciti sociosqu ad litora torquent per + | conubia nostra, per inceptos himenaeos. + """ + + Examples: configs + | config | + | basic_onefile | + | basic_folder | + | basic_dayone | + Scenario: Exporting using filters should only export parts of the journal Given we use the config "tags.yaml" When we run "jrnl -until 'may 2013' --export json" diff --git a/features/search.feature b/features/search.feature index b3f7d1e3..0c8e1cd5 100644 --- a/features/search.feature +++ b/features/search.feature @@ -68,7 +68,6 @@ Feature: Searching in a journal | basic_folder | | basic_dayone | - @todo # Day One tag search is broken Scenario Outline: Searching for a string within tag results Given we use the config ".yaml" When we run "jrnl @tagone -contains maybe" @@ -79,9 +78,8 @@ Feature: Searching in a journal | config | | basic_onefile | | basic_folder | - #| basic_dayone | + | basic_dayone | - @todo # Day One tag search is broken Scenario Outline: Searching for a string within AND tag results Given we use the config ".yaml" When we run "jrnl -and @tagone @tagtwo -contains maybe" @@ -92,9 +90,8 @@ Feature: Searching in a journal | config | | basic_onefile | | basic_folder | - #| basic_dayone | + | basic_dayone | - @todo # Day One tag search is broken Scenario Outline: Searching for a string within NOT tag results Given we use the config ".yaml" When we run "jrnl -not @tagone -contains lonesome" @@ -105,7 +102,7 @@ Feature: Searching in a journal | config | | basic_onefile | | basic_folder | - #| basic_dayone | + | basic_dayone | Scenario Outline: Searching for dates Given we use the config ".yaml" @@ -119,7 +116,7 @@ Feature: Searching in a journal | config | | basic_onefile | | basic_folder | - #| basic_dayone | + | basic_dayone | Scenario: Out of order entries to a Folder journal should be listed in date order Given we use the config "empty_folder.yaml" @@ -135,8 +132,69 @@ Feature: Searching in a journal 2014-03-07 16:37 Second entry of journal. """ - # fails when system time is UTC (as on Travis-CI) - @skip + Scenario Outline: Searching for all tags should show counts of each tag + Given we use the config ".yaml" + When we run "jrnl --tags" + Then we should get no error + And the output should be + """ + @tagtwo : 2 + @tagone : 2 + @tagthree : 1 + @ipsum : 1 + """ + + Examples: configs + | config | + | basic_onefile | + | basic_folder | + | basic_dayone | + + Scenario Outline: Filtering journals should also filter tags + Given we use the config ".yaml" + When we run "jrnl -from 'september 2020' --tags" + Then we should get no error + And the output should be + """ + @tagthree : 1 + @tagone : 1 + """ + + Examples: configs + | config | + | basic_onefile | + | basic_folder | + | basic_dayone | + + Scenario Outline: Excluding a tag should filter out all entries with that tag + Given we use the config ".yaml" + When we run "jrnl --tags -not @tagtwo" + Then the output should be + """ + @tagthree : 1 + @tagone : 1 + """ + + Examples: configs + | config | + | basic_onefile | + | basic_folder | + | basic_dayone | + + Scenario Outline: Excluding multiple tags should filter out all entries with those tags + Given we use the config ".yaml" + When we run "jrnl --tags -not @tagone -not @tagthree" + Then the output should be + """ + @tagtwo : 1 + """ + + Examples: configs + | config | + | basic_onefile | + | basic_folder | + | basic_dayone | + Scenario: DayOne tag searching should work with tags containing a mixture of upper and lower case. # https://github.com/jrnl-org/jrnl/issues/354 Given we use the config "dayone.yaml" diff --git a/features/tag.feature b/features/tag.feature index 28bd639d..8c1fff4e 100644 --- a/features/tag.feature +++ b/features/tag.feature @@ -1,29 +1,11 @@ Feature: Tagging +# See search.feature for tag-related searches +# And format.feature for tag-related output - Scenario: Displaying tags - Given we use the config "tags.yaml" - When we run "jrnl --tags" - Then we should get no error - And the output should be - """ - @idea : 2 - @journal : 1 - @dan : 1 - """ - - Scenario: Filtering journals should also filter tags - Given we use the config "tags.yaml" - When we run "jrnl -from 'may 2013' --tags" - Then we should get no error - And the output should be - """ - @idea : 1 - @dan : 1 - """ - - Scenario: Tags should allow certain special characters - Given we use the config "tags-216.yaml" - When we run "jrnl --tags" + Scenario Outline: Tags should allow certain special characters such as /, +, # + Given we use the config ".yaml" + When we run "jrnl 2020-09-26: This is an entry about @os/2 and @c++ and @c#" + When we run "jrnl --tags -on 2020-09-26" Then we should get no error And the output should be """ @@ -32,114 +14,56 @@ Feature: Tagging @c# : 1 """ - Scenario: An email should not be a tag - Given we use the config "tags-237.yaml" - When we run "jrnl --tags" - Then we should get no error - And the output should be - """ - @newline : 1 - @email : 1 - """ + Examples: configs + | config | + | basic_onefile | + | basic_folder | + | basic_dayone | - Scenario: Entry cans start and end with tags - Given we use the config "simple.yaml" - When we run "jrnl today: @foo came over, we went to a @bar" - When we run "jrnl --tags" + Scenario Outline: Emails addresses should not be parsed as tags + Given we use the config ".yaml" + When we run "jrnl 2020-09-26: The email address test@example.com doesn't seem to work for me" + When we run "jrnl 2020-09-26: The email address test@example.org also doesn't work for me" + When we run "jrnl 2020-09-26: I tried test@example.org and test@example.edu too" + Then we flush the output + When we run "jrnl --tags -on 2020-09-26" + Then we should get no error + And the output should be "[No tags found in journal.]" + + Examples: configs + | config | + | basic_onefile | + | basic_folder | + | basic_dayone | + + Scenario Outline: Emails addresses should not be parsed as tags + Given we use the config ".yaml" + When we run "jrnl 2020-09-26: The email address test@example.com doesn't seem to work for me" + When we run "jrnl 2020-09-26: The email address test@example.org also doesn't work for me" + When we run "jrnl 2020-09-26: I tried test@example.org and test@example.edu too" + Then we flush the output + When we run "jrnl --tags -on 2020-09-26" + Then we should get no error + And the output should be "[No tags found in journal.]" + + Examples: configs + | config | + | basic_onefile | + | basic_folder | + | basic_dayone | + + Scenario Outline: Entry can start and end with tags + Given we use the config ".yaml" + When we run "jrnl 2020-09-26: @foo came over, we went to a @bar" + When we run "jrnl --tags -on 2020-09-26" Then the output should be """ @foo : 1 @bar : 1 """ - Scenario: Excluding a tag should filter it - Given we use the config "simple.yaml" - When we run "jrnl today: @foo came over, we went to a bar" - When we run "jrnl I have decided I did not enjoy that @bar" - When we run "jrnl --tags -not @bar" - Then the output should be - """ - @foo : 1 - """ - - Scenario: Excluding a tag should filter an entry, even if an unfiltered tag is in that entry - Given we use the config "simple.yaml" - When we run "jrnl today: I do @not think this will show up @thought" - When we run "jrnl today: I think this will show up @thought" - When we run "jrnl --tags -not @not" - Then the output should be - """ - @thought : 1 - """ - - Scenario: Excluding multiple tags should filter them - Given we use the config "simple.yaml" - When we run "jrnl today: I do @not think this will show up @thought" - And we run "jrnl today: I think this will show up @thought" - And we run "jrnl today: This should @never show up @thought" - And we run "jrnl today: What a nice day for filtering @thought" - And we run "jrnl --tags -not @not -not @never" - Then the output should be - """ - @thought : 2 - """ - - Scenario: Printing a journal that has multiline entries with tags - Given we use the config "multiline-tags.yaml" - When we run "jrnl -n 1" - Then we should get no error - And the output should be - """ - 2013-06-09 15:39 Multiple @line entry with @tags. - | Tag with @punctuation. afterwards - | @TagOnLineAloneWithOutPunctuation - | @TagOnLineAloneWithPunctuation. - | Text before @tag. And After. - | @hi. Hello - | hi Hello - """ - - Scenario: Searching a journal for tags should display entries with that tag. - Given we use the config "tags.yaml" - When we run "jrnl @dan" - Then the output should be - """ - 2013-06-10 15:40 I met with @dan. - | As alway's he shared his latest @idea on how to rule the world with me. - | inst - """ - - Scenario: Searching a journal for multiple tags with -and should display entries with those tags. - Given we use the config "tags.yaml" - When we run "jrnl -and @idea @journal" - Then the output should be - """ - 2013-04-09 15:39 I have an @idea: - | (1) write a command line @journal software - | (2) ??? - | (3) PROFIT! - """ - - Scenario: Loading tags from a DayOne Journal - Given we use the config "dayone.yaml" - When we run "jrnl --tags" - Then the output should be - """ - @work : 1 - @play : 1 - """ - - Scenario: Saving tags from a DayOne Journal - Given we use the config "dayone.yaml" - When we run "jrnl A hard day at @work" - And we run "jrnl --tags" - Then the output should be - """ - @work : 2 - @play : 1 - """ - - Scenario: Filtering by tags from a DayOne Journal - Given we use the config "dayone.yaml" - When we run "jrnl @work" - Then the output should be "2013-05-17 11:39 This entry has tags!" + Examples: configs + | config | + | basic_onefile | + | basic_folder | + | basic_dayone |