EvoBal/test/services/rules_evaluator_test.rb

90 lines
2.1 KiB
Ruby

require 'test_helper'
class RulesEvaluatorTest < ActiveSupport::TestCase
test "mark cron from subject" do
email = email_from_eml_with_rules("cron_subject.eml")
assert_predicate email, :cron?
end
test "mark cron from headers" do
email = email_from_eml_with_rules("cron_headers.eml")
assert_predicate email, :cron?
end
test "mark not cron" do
email = email_from_eml_with_rules("cron_not.eml")
assert_not_predicate email, :cron?
end
test "single ticket" do
email = email_from_eml_with_rules("tickets_single.eml")
expected = ["49123"]
actual = email.tickets
assert_equal expected, actual
end
test "multiple tickets" do
email = email_from_eml_with_rules("tickets_multiple.eml")
expected = ["49123", "12345"]
actual = email.tickets
assert_equal expected, actual
end
test "single client" do
email = email_from_eml_with_rules("clients_single.eml")
expected = ["quux"]
actual = email.clients
assert_equal expected, actual
end
test "multiple clients" do
email = email_from_eml_with_rules("clients_multiple.eml")
expected = ["quux", "foobar"]
actual = email.clients
assert_equal expected, actual
end
test "invalid subject type" do
rules_evaluator = RulesEvaluator.new
email = Email.new
exception = assert_raise ArgumentError do
rules_evaluator.evaluate(email, rule_sets(:invalid_subject))
end
assert_match(/^Unrecognized subject type/, exception.message)
end
test "invalid condition type" do
rules_evaluator = RulesEvaluator.new
email = Email.new
exception = assert_raise ArgumentError do
rules_evaluator.evaluate(email, rule_sets(:invalid_condition_type))
end
assert_match(/^Unrecognized condition type/, exception.message)
end
test "invalid operator" do
rules_evaluator = RulesEvaluator.new
email = Email.new
exception = assert_raise ArgumentError do
rules_evaluator.evaluate(email, rule_sets(:invalid_operator))
end
assert_match(/^Unrecognized operator/, exception.message)
end
end