mirror of
https://github.com/TracksApp/tracks.git
synced 2026-02-04 23:11:47 +01:00
Extend RichMessage format to include other data
Uses new Regex to detect: @ context ~ project > tickler-date < due-date # tag (repeatable) * (starred)
This commit is contained in:
parent
1441d53808
commit
2f043911c6
7 changed files with 180 additions and 25 deletions
|
|
@ -1,3 +1,4 @@
|
|||
require 'date'
|
||||
require 'test/unit'
|
||||
require 'active_support/core_ext/object/blank'
|
||||
require_relative '../../app/services/rich_message_extractor.rb'
|
||||
|
|
@ -5,11 +6,15 @@ require_relative '../../app/services/rich_message_extractor.rb'
|
|||
class RichMessageExtractorTest < Test::Unit::TestCase
|
||||
|
||||
def test_message_with_all_options
|
||||
message = "ohai@some-context>in-this-project"
|
||||
message = "ohai@some-context~this-project>131012<131014#tag1#tag2*"
|
||||
extractor = RichMessageExtractor.new(message)
|
||||
assert_equal "ohai", extractor.description
|
||||
assert_equal "some-context", extractor.context
|
||||
assert_equal "in-this-project", extractor.project
|
||||
assert_equal "this-project", extractor.project
|
||||
assert_equal "2013-10-12", extractor.show_from.to_s
|
||||
assert_equal "2013-10-14", extractor.due.to_s
|
||||
assert_equal ["tag1","tag2"], extractor.tags
|
||||
assert extractor.starred?
|
||||
end
|
||||
|
||||
def test_message_without_project
|
||||
|
|
@ -20,12 +25,12 @@ class RichMessageExtractorTest < Test::Unit::TestCase
|
|||
assert_equal nil, extractor.project
|
||||
end
|
||||
|
||||
def test_message_without_project
|
||||
message = " ohai @ some-context"
|
||||
def test_message_without_context
|
||||
message = " ohai ~ some-project"
|
||||
extractor = RichMessageExtractor.new(message)
|
||||
assert_equal "ohai", extractor.description
|
||||
assert_equal "some-context", extractor.context
|
||||
assert_equal nil, extractor.project
|
||||
assert_equal "", extractor.context
|
||||
assert_equal "some-project", extractor.project
|
||||
end
|
||||
|
||||
def test_message_without_project_or_context
|
||||
|
|
@ -52,4 +57,52 @@ class RichMessageExtractorTest < Test::Unit::TestCase
|
|||
assert_equal nil, extractor.project
|
||||
end
|
||||
|
||||
def test_message_with_tags
|
||||
message = "some tags#tag 1#tag2"
|
||||
extractor = RichMessageExtractor.new(message)
|
||||
assert_equal ["tag 1","tag2"], extractor.tags
|
||||
end
|
||||
|
||||
def test_message_with_no_tags
|
||||
message = "no tags"
|
||||
extractor = RichMessageExtractor.new(message)
|
||||
assert_equal nil, extractor.tags
|
||||
end
|
||||
|
||||
def test_message_with_due_date
|
||||
message = "datetest<141013"
|
||||
extractor = RichMessageExtractor.new(message)
|
||||
assert_equal "2014-10-13", extractor.due.to_s
|
||||
end
|
||||
|
||||
def test_message_with_no_due_date
|
||||
message = "no date"
|
||||
extractor = RichMessageExtractor.new(message)
|
||||
assert_equal nil, extractor.due
|
||||
end
|
||||
|
||||
def test_message_with_show_from
|
||||
message = "datetest>161013"
|
||||
extractor = RichMessageExtractor.new(message)
|
||||
assert_equal "2016-10-13", extractor.show_from.to_s
|
||||
end
|
||||
|
||||
def test_message_with_no_show_from
|
||||
message = "no tickler"
|
||||
extractor = RichMessageExtractor.new(message)
|
||||
assert_equal nil, extractor.show_from
|
||||
end
|
||||
|
||||
def test_message_with_star
|
||||
message = "star test*"
|
||||
extractor = RichMessageExtractor.new(message)
|
||||
assert extractor.starred?
|
||||
end
|
||||
|
||||
def test_message_with_no_star
|
||||
message = "no star test"
|
||||
extractor = RichMessageExtractor.new(message)
|
||||
refute extractor.starred?
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -18,4 +18,23 @@ class TodoFromRichMessageTest < ActiveSupport::TestCase
|
|||
assert_equal default_context_id, new_todo.context_id
|
||||
end
|
||||
|
||||
def test_from_rich_message_adds_all_fields
|
||||
user = @completed.user
|
||||
context = Context.create(:name => 'context')
|
||||
project = Project.create(:name => 'project')
|
||||
message = "description@context~project>131014<131017#tag1#tag2*"
|
||||
builder = TodoFromRichMessage.new(user, context.id, message, "notes")
|
||||
new_todo = builder.construct
|
||||
|
||||
assert_not_nil new_todo
|
||||
assert_equal "description", new_todo.description
|
||||
assert_equal "notes", new_todo.notes
|
||||
assert_equal context.id, new_todo.context_id
|
||||
assert_equal project.id, new_todo.project_id
|
||||
assert_equal "2013-10-14 00:00:00 +0100", new_todo.show_from.to_s
|
||||
assert_equal "2013-10-17 00:00:00 +0100", new_todo.due.to_s
|
||||
assert_equal "starred, tag1, tag2", new_todo.tags.to_s
|
||||
assert new_todo.starred?
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue