2021-01-23 18:09:55 +01:00
|
|
|
require 'test_helper'
|
|
|
|
|
2021-02-01 14:02:54 +01:00
|
|
|
class FilterProcessorTest < ActiveSupport::TestCase
|
2021-01-23 18:09:55 +01:00
|
|
|
|
|
|
|
test "mark cron from subject" do
|
2021-02-01 14:02:54 +01:00
|
|
|
email = email_from_eml_with_filters("cron_subject.eml")
|
2021-01-23 18:09:55 +01:00
|
|
|
|
|
|
|
assert_predicate email, :cron?
|
|
|
|
end
|
|
|
|
|
|
|
|
test "mark cron from headers" do
|
2021-02-01 14:02:54 +01:00
|
|
|
email = email_from_eml_with_filters("cron_headers.eml")
|
2021-01-23 18:09:55 +01:00
|
|
|
|
|
|
|
assert_predicate email, :cron?
|
|
|
|
end
|
|
|
|
|
|
|
|
test "mark not cron" do
|
2021-02-01 14:02:54 +01:00
|
|
|
email = email_from_eml_with_filters("cron_not.eml")
|
2021-01-23 18:09:55 +01:00
|
|
|
|
|
|
|
assert_not_predicate email, :cron?
|
|
|
|
end
|
|
|
|
|
2021-01-25 22:26:01 +01:00
|
|
|
test "single issue" do
|
2021-02-01 14:02:54 +01:00
|
|
|
email = email_from_eml_with_filters("issues_single.eml")
|
2021-01-23 18:09:55 +01:00
|
|
|
|
|
|
|
expected = ["49123"]
|
2021-01-25 22:26:01 +01:00
|
|
|
actual = email.issues
|
2021-01-23 18:09:55 +01:00
|
|
|
|
|
|
|
assert_equal expected, actual
|
|
|
|
end
|
|
|
|
|
2021-01-25 22:26:01 +01:00
|
|
|
test "multiple issues" do
|
2021-02-01 14:02:54 +01:00
|
|
|
email = email_from_eml_with_filters("issues_multiple.eml")
|
2021-01-23 18:09:55 +01:00
|
|
|
|
|
|
|
expected = ["49123", "12345"]
|
2021-01-25 22:26:01 +01:00
|
|
|
actual = email.issues
|
2021-01-23 18:09:55 +01:00
|
|
|
|
|
|
|
assert_equal expected, actual
|
|
|
|
end
|
|
|
|
|
2021-01-25 22:26:01 +01:00
|
|
|
test "single organisation" do
|
2021-02-01 14:02:54 +01:00
|
|
|
email = email_from_eml_with_filters("organisations_single.eml")
|
2021-01-23 18:09:55 +01:00
|
|
|
|
|
|
|
expected = ["quux"]
|
2021-01-25 22:26:01 +01:00
|
|
|
actual = email.organisations
|
2021-01-23 18:09:55 +01:00
|
|
|
|
|
|
|
assert_equal expected, actual
|
|
|
|
end
|
|
|
|
|
2021-01-25 22:26:01 +01:00
|
|
|
test "multiple organisations" do
|
2021-02-01 14:02:54 +01:00
|
|
|
email = email_from_eml_with_filters("organisations_multiple.eml")
|
2021-01-23 18:09:55 +01:00
|
|
|
|
|
|
|
expected = ["quux", "foobar"]
|
2021-01-25 22:26:01 +01:00
|
|
|
actual = email.organisations
|
2021-01-23 18:09:55 +01:00
|
|
|
|
|
|
|
assert_equal expected, actual
|
|
|
|
end
|
|
|
|
|
2021-02-01 14:02:54 +01:00
|
|
|
test "invalid Test" do
|
2021-01-24 17:49:35 +01:00
|
|
|
email = Email.new
|
2021-02-01 14:02:54 +01:00
|
|
|
processor = FilterProcessor.new
|
|
|
|
email = processor.process(filters(:invalid_subject), email)
|
2021-01-24 17:49:35 +01:00
|
|
|
|
2021-01-25 14:32:26 +01:00
|
|
|
assert_not_predicate email, :changed?
|
2021-01-24 17:49:35 +01:00
|
|
|
end
|
|
|
|
|
2021-02-01 14:02:54 +01:00
|
|
|
test "invalid Property type" do
|
2021-01-24 17:49:35 +01:00
|
|
|
email = Email.new
|
2021-02-01 14:02:54 +01:00
|
|
|
processor = FilterProcessor.new
|
|
|
|
email = processor.process(filters(:invalid_condition_type), email)
|
2021-01-24 17:49:35 +01:00
|
|
|
|
2021-01-25 14:32:26 +01:00
|
|
|
assert_not_predicate email, :changed?
|
2021-01-24 17:49:35 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
test "invalid operator" do
|
|
|
|
email = Email.new
|
2021-02-01 14:02:54 +01:00
|
|
|
processor = FilterProcessor.new
|
|
|
|
email = processor.process(filters(:invalid_operator), email)
|
2021-01-24 17:49:35 +01:00
|
|
|
|
2021-01-25 14:32:26 +01:00
|
|
|
assert_not_predicate email, :changed?
|
2021-01-24 17:49:35 +01:00
|
|
|
end
|
|
|
|
|
2021-01-26 16:00:49 +01:00
|
|
|
test "postponed to valid future date" do
|
|
|
|
email = Email.new(subject: "Postponable")
|
2021-02-01 14:02:54 +01:00
|
|
|
processor = FilterProcessor.new
|
|
|
|
email = processor.process(filters(:postpone_future_valid), email)
|
2021-01-26 16:00:49 +01:00
|
|
|
|
|
|
|
assert_not_nil email.postponed_until
|
|
|
|
assert_predicate email, :postponed?
|
|
|
|
end
|
|
|
|
|
|
|
|
test "postponed to valid past date" do
|
|
|
|
email = Email.new(subject: "Postponable")
|
2021-02-01 14:02:54 +01:00
|
|
|
processor = FilterProcessor.new
|
|
|
|
email = processor.process(filters(:postpone_past_valid), email)
|
2021-01-26 16:00:49 +01:00
|
|
|
|
|
|
|
assert_not_nil email.postponed_until
|
|
|
|
assert_not_predicate email, :postponed?
|
|
|
|
end
|
|
|
|
|
|
|
|
test "postponed to invalid date" do
|
|
|
|
email = Email.new(subject: "Postponable")
|
2021-02-01 14:02:54 +01:00
|
|
|
processor = FilterProcessor.new
|
|
|
|
email = processor.process(filters(:postpone_invalid), email)
|
2021-01-26 16:00:49 +01:00
|
|
|
|
|
|
|
assert_nil email.postponed_until
|
|
|
|
assert_not_predicate email, :postponed?
|
|
|
|
end
|
2021-01-26 16:01:09 +01:00
|
|
|
|
|
|
|
test "junk mail" do
|
|
|
|
email = Email.new(subject: "Junk")
|
2021-02-01 14:02:54 +01:00
|
|
|
processor = FilterProcessor.new
|
|
|
|
email = processor.process(filters(:junk), email)
|
2021-01-26 16:01:09 +01:00
|
|
|
|
|
|
|
assert_predicate email, :junk?
|
|
|
|
end
|
|
|
|
|
2021-01-23 18:09:55 +01:00
|
|
|
end
|