blob: 25d068b67a3c7eceacaffee85cfaae95c5362764 [file] [log] [blame]
# Copyright 2016 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Unittest for issue tracker views."""
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
import unittest
from features import filterrules_views
from mrproto import tracker_pb2
from testing import testing_helpers
class RuleViewTest(unittest.TestCase):
def setUp(self):
self.rule = tracker_pb2.FilterRule()
self.rule.predicate = 'label:a label:b'
def testNone(self):
view = filterrules_views.RuleView(None, {})
self.assertEqual('', view.action_type)
self.assertEqual('', view.action_value)
def testEmpty(self):
view = filterrules_views.RuleView(self.rule, {})
self.rule.predicate = ''
self.assertEqual('', view.predicate)
self.assertEqual('', view.action_type)
self.assertEqual('', view.action_value)
def testDefaultStatus(self):
self.rule.default_status = 'Unknown'
view = filterrules_views.RuleView(self.rule, {})
self.assertEqual('label:a label:b', view.predicate)
self.assertEqual('default_status', view.action_type)
self.assertEqual('Unknown', view.action_value)
def testDefaultOwner(self):
self.rule.default_owner_id = 111
view = filterrules_views.RuleView(
self.rule, {
111: testing_helpers.Blank(email='jrobbins@chromium.org')})
self.assertEqual('label:a label:b', view.predicate)
self.assertEqual('default_owner', view.action_type)
self.assertEqual('jrobbins@chromium.org', view.action_value)
def testAddCCs(self):
self.rule.add_cc_ids.extend([111, 222])
view = filterrules_views.RuleView(
self.rule, {
111: testing_helpers.Blank(email='jrobbins@chromium.org'),
222: testing_helpers.Blank(email='jrobbins@gmail.com')})
self.assertEqual('label:a label:b', view.predicate)
self.assertEqual('add_ccs', view.action_type)
self.assertEqual(
'jrobbins@chromium.org, jrobbins@gmail.com', view.action_value)
def testAddLabels(self):
self.rule.add_labels.extend(['Hot', 'Cool'])
view = filterrules_views.RuleView(self.rule, {})
self.assertEqual('label:a label:b', view.predicate)
self.assertEqual('add_labels', view.action_type)
self.assertEqual('Hot, Cool', view.action_value)
def testAlsoNotify(self):
self.rule.add_notify_addrs.extend(['a@dom.com', 'b@dom.com'])
view = filterrules_views.RuleView(self.rule, {})
self.assertEqual('label:a label:b', view.predicate)
self.assertEqual('also_notify', view.action_type)
self.assertEqual('a@dom.com, b@dom.com', view.action_value)