| Index: appengine/monorail/tracker/test/tracker_bizobj_test.py
|
| diff --git a/appengine/monorail/tracker/test/tracker_bizobj_test.py b/appengine/monorail/tracker/test/tracker_bizobj_test.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..437ff01285bea910ace80a635847606a64241a5d
|
| --- /dev/null
|
| +++ b/appengine/monorail/tracker/test/tracker_bizobj_test.py
|
| @@ -0,0 +1,562 @@
|
| +# Copyright 2016 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is govered by a BSD-style
|
| +# license that can be found in the LICENSE file or at
|
| +# https://developers.google.com/open-source/licenses/bsd
|
| +
|
| +"""Tests for issue tracker bizobj functions."""
|
| +
|
| +import unittest
|
| +
|
| +from framework import framework_constants
|
| +from framework import framework_views
|
| +from proto import tracker_pb2
|
| +from tracker import tracker_bizobj
|
| +
|
| +
|
| +class BizobjTest(unittest.TestCase):
|
| +
|
| + def testGetOwnerId(self):
|
| + issue = tracker_pb2.Issue()
|
| + self.assertEquals(
|
| + tracker_bizobj.GetOwnerId(issue), framework_constants.NO_USER_SPECIFIED)
|
| +
|
| + issue.derived_owner_id = 123
|
| + self.assertEquals(tracker_bizobj.GetOwnerId(issue), 123)
|
| +
|
| + issue.owner_id = 456
|
| + self.assertEquals(tracker_bizobj.GetOwnerId(issue), 456)
|
| +
|
| + def testGetStatus(self):
|
| + issue = tracker_pb2.Issue()
|
| + self.assertEquals(tracker_bizobj.GetStatus(issue), '')
|
| +
|
| + issue.derived_status = 'InReview'
|
| + self.assertEquals(tracker_bizobj.GetStatus(issue), 'InReview')
|
| +
|
| + issue.status = 'Forgotten'
|
| + self.assertEquals(tracker_bizobj.GetStatus(issue), 'Forgotten')
|
| +
|
| + def testGetCcIds(self):
|
| + issue = tracker_pb2.Issue()
|
| + self.assertEquals(tracker_bizobj.GetCcIds(issue), [])
|
| +
|
| + issue.derived_cc_ids.extend([1, 2, 3])
|
| + self.assertEquals(tracker_bizobj.GetCcIds(issue), [1, 2, 3])
|
| +
|
| + issue.cc_ids.extend([4, 5, 6])
|
| + self.assertEquals(tracker_bizobj.GetCcIds(issue), [4, 5, 6, 1, 2, 3])
|
| +
|
| + def testGetLabels(self):
|
| + issue = tracker_pb2.Issue()
|
| + self.assertEquals(tracker_bizobj.GetLabels(issue), [])
|
| +
|
| + issue.derived_labels.extend(['a', 'b', 'c'])
|
| + self.assertEquals(tracker_bizobj.GetLabels(issue), ['a', 'b', 'c'])
|
| +
|
| + issue.labels.extend(['d', 'e', 'f'])
|
| + self.assertEquals(tracker_bizobj.GetLabels(issue),
|
| + ['d', 'e', 'f', 'a', 'b', 'c'])
|
| +
|
| + def CheckDefaultConfig(self, config):
|
| + self.assertTrue(len(config.well_known_statuses) > 0)
|
| + self.assertTrue(config.statuses_offer_merge > 0)
|
| + self.assertTrue(len(config.well_known_labels) > 0)
|
| + self.assertTrue(len(config.templates) > 0)
|
| + self.assertTrue(len(config.exclusive_label_prefixes) > 0)
|
| + # TODO(jrobbins): test actual values from default config
|
| +
|
| + def testMakeDefaultProjectIssueConfig(self):
|
| + config = tracker_bizobj.MakeDefaultProjectIssueConfig(789)
|
| + config.default_template_for_developers = 1
|
| + config.default_template_for_users = 2
|
| + self.CheckDefaultConfig(config)
|
| +
|
| + def testConvertDictToTemplate(self):
|
| + template = tracker_bizobj.ConvertDictToTemplate(
|
| + dict(name='name', content='content', summary='summary',
|
| + status='status', owner_id=111L))
|
| + self.assertEqual('name', template.name)
|
| + self.assertEqual('content', template.content)
|
| + self.assertEqual('summary', template.summary)
|
| + self.assertEqual('status', template.status)
|
| + self.assertEqual(111L, template.owner_id)
|
| + self.assertFalse(template.summary_must_be_edited)
|
| + self.assertTrue(template.owner_defaults_to_member)
|
| + self.assertFalse(template.component_required)
|
| +
|
| + template = tracker_bizobj.ConvertDictToTemplate(
|
| + dict(name='name', content='content', labels=['a', 'b', 'c']))
|
| + self.assertListEqual(
|
| + ['a', 'b', 'c'], list(template.labels))
|
| +
|
| + template = tracker_bizobj.ConvertDictToTemplate(
|
| + dict(name='name', content='content', summary_must_be_edited=True,
|
| + owner_defaults_to_member=True, component_required=True))
|
| + self.assertTrue(template.summary_must_be_edited)
|
| + self.assertTrue(template.owner_defaults_to_member)
|
| + self.assertTrue(template.component_required)
|
| +
|
| + template = tracker_bizobj.ConvertDictToTemplate(
|
| + dict(name='name', content='content', summary_must_be_edited=False,
|
| + owner_defaults_to_member=False, component_required=False))
|
| + self.assertFalse(template.summary_must_be_edited)
|
| + self.assertFalse(template.owner_defaults_to_member)
|
| + self.assertFalse(template.component_required)
|
| +
|
| + def testHarmonizeConfigs_Empty(self):
|
| + harmonized = tracker_bizobj.HarmonizeConfigs([])
|
| + self.CheckDefaultConfig(harmonized)
|
| +
|
| + def testHarmonizeConfigs(self):
|
| + c1 = tracker_bizobj.MakeDefaultProjectIssueConfig(789)
|
| + harmonized = tracker_bizobj.HarmonizeConfigs([c1])
|
| + self.assertListEqual(
|
| + [stat.status for stat in c1.well_known_statuses],
|
| + [stat.status for stat in harmonized.well_known_statuses])
|
| + self.assertListEqual(
|
| + [lab.label for lab in c1.well_known_labels],
|
| + [lab.label for lab in harmonized.well_known_labels])
|
| + self.assertEqual('', harmonized.default_sort_spec)
|
| +
|
| + c2 = tracker_bizobj.MakeDefaultProjectIssueConfig(678)
|
| + tracker_bizobj.SetConfigStatuses(c2, [
|
| + ('Unconfirmed', '', True, False),
|
| + ('New', '', True, True),
|
| + ('Accepted', '', True, False),
|
| + ('Begun', '', True, False),
|
| + ('Fixed', '', False, False),
|
| + ('Obsolete', '', False, False)])
|
| + tracker_bizobj.SetConfigLabels(c2, [
|
| + ('Pri-0', '', False),
|
| + ('Priority-High', '', True),
|
| + ('Pri-1', '', False),
|
| + ('Priority-Medium', '', True),
|
| + ('Pri-2', '', False),
|
| + ('Priority-Low', '', True),
|
| + ('Pri-3', '', False),
|
| + ('Pri-4', '', False)])
|
| + c2.default_sort_spec = 'Pri -status'
|
| +
|
| + harmonized = tracker_bizobj.HarmonizeConfigs([c1, c2])
|
| + result_statuses = [stat.status
|
| + for stat in harmonized.well_known_statuses]
|
| + result_labels = [lab.label
|
| + for lab in harmonized.well_known_labels]
|
| + self.assertListEqual(
|
| + ['Unconfirmed', 'New', 'Accepted', 'Begun', 'Started', 'Fixed',
|
| + 'Obsolete', 'Verified', 'Invalid', 'Duplicate', 'WontFix', 'Done'],
|
| + result_statuses)
|
| + self.assertListEqual(
|
| + ['Pri-0', 'Type-Defect', 'Type-Enhancement', 'Type-Task',
|
| + 'Type-Other', 'Priority-Critical', 'Priority-High',
|
| + 'Pri-1', 'Priority-Medium', 'Pri-2', 'Priority-Low', 'Pri-3',
|
| + 'Pri-4'],
|
| + result_labels[:result_labels.index('OpSys-All')])
|
| + self.assertEqual('Pri -status', harmonized.default_sort_spec.strip())
|
| +
|
| + def testCombineOrderedLists_Empty(self):
|
| + self.assertEqual([], tracker_bizobj._CombineOrderedLists([]))
|
| +
|
| + def testCombineOrderedLists_Normal(self):
|
| + a = ['Mon', 'Wed', 'Fri']
|
| + b = ['Mon', 'Tue']
|
| + c = ['Wed', 'Thu']
|
| + self.assertEqual(['Mon', 'Tue', 'Wed', 'Thu', 'Fri'],
|
| + tracker_bizobj._CombineOrderedLists([a, b, c]))
|
| +
|
| + d = ['Mon', 'StartOfWeek', 'Wed', 'MidWeek', 'Fri', 'EndOfWeek']
|
| + self.assertEqual(['Mon', 'StartOfWeek', 'Tue', 'Wed', 'MidWeek', 'Thu',
|
| + 'Fri', 'EndOfWeek'],
|
| + tracker_bizobj._CombineOrderedLists([a, b, c, d]))
|
| +
|
| + def testUsersInvolvedInComment(self):
|
| + comment = tracker_pb2.IssueComment()
|
| + self.assertEqual({0}, tracker_bizobj.UsersInvolvedInComment(comment))
|
| +
|
| + comment.user_id = 111L
|
| + self.assertEqual(
|
| + {111L}, tracker_bizobj.UsersInvolvedInComment(comment))
|
| +
|
| + amendment = tracker_pb2.Amendment(newvalue='foo')
|
| + comment.amendments.append(amendment)
|
| + self.assertEqual(
|
| + {111L}, tracker_bizobj.UsersInvolvedInComment(comment))
|
| +
|
| + amendment.added_user_ids.append(222L)
|
| + amendment.removed_user_ids.append(333L)
|
| + self.assertEqual({111L, 222L, 333L},
|
| + tracker_bizobj.UsersInvolvedInComment(comment))
|
| +
|
| + def testUsersInvolvedInCommentList(self):
|
| + self.assertEqual(set(), tracker_bizobj.UsersInvolvedInCommentList([]))
|
| +
|
| + c1 = tracker_pb2.IssueComment()
|
| + c1.user_id = 111L
|
| + c1.amendments.append(tracker_pb2.Amendment(newvalue='foo'))
|
| +
|
| + c2 = tracker_pb2.IssueComment()
|
| + c2.user_id = 111L
|
| + c2.amendments.append(tracker_pb2.Amendment(
|
| + added_user_ids=[222L], removed_user_ids=[333L]))
|
| +
|
| + self.assertEqual({111L},
|
| + tracker_bizobj.UsersInvolvedInCommentList([c1]))
|
| +
|
| + self.assertEqual({111L, 222L, 333L},
|
| + tracker_bizobj.UsersInvolvedInCommentList([c2]))
|
| +
|
| + self.assertEqual({111L, 222L, 333L},
|
| + tracker_bizobj.UsersInvolvedInCommentList([c1, c2]))
|
| +
|
| + def testMakeAmendment(self):
|
| + amendment = tracker_bizobj.MakeAmendment(
|
| + tracker_pb2.FieldID.STATUS, 'new', [111L], [222L])
|
| + self.assertEqual(tracker_pb2.FieldID.STATUS, amendment.field)
|
| + self.assertEqual('new', amendment.newvalue)
|
| + self.assertEqual([111L], amendment.added_user_ids)
|
| + self.assertEqual([222L], amendment.removed_user_ids)
|
| +
|
| + def testPlusMinusString(self):
|
| + self.assertEqual('', tracker_bizobj._PlusMinusString([], []))
|
| + self.assertEqual('-a -b c d',
|
| + tracker_bizobj._PlusMinusString(['c', 'd'], ['a', 'b']))
|
| +
|
| + def testPlusMinusAmendment(self):
|
| + amendment = tracker_bizobj._PlusMinusAmendment(
|
| + tracker_pb2.FieldID.STATUS, ['add1', 'add2'], ['remove1'])
|
| + self.assertEqual(tracker_pb2.FieldID.STATUS, amendment.field)
|
| + self.assertEqual('-remove1 add1 add2', amendment.newvalue)
|
| +
|
| + def testPlusMinusRefsAmendment(self):
|
| + ref1 = (None, 1)
|
| + ref2 = ('other-proj', 2)
|
| + amendment = tracker_bizobj._PlusMinusRefsAmendment(
|
| + tracker_pb2.FieldID.STATUS, [ref1], [ref2])
|
| + self.assertEqual(tracker_pb2.FieldID.STATUS, amendment.field)
|
| + self.assertEqual('-other-proj:2 1', amendment.newvalue)
|
| +
|
| + def testMakeSummaryAmendment(self):
|
| + amendment = tracker_bizobj.MakeSummaryAmendment('', None)
|
| + self.assertEqual(tracker_pb2.FieldID.SUMMARY, amendment.field)
|
| + self.assertEqual('', amendment.newvalue)
|
| + self.assertEqual(None, amendment.oldvalue)
|
| +
|
| + amendment = tracker_bizobj.MakeSummaryAmendment('new summary', '')
|
| + self.assertEqual(tracker_pb2.FieldID.SUMMARY, amendment.field)
|
| + self.assertEqual('new summary', amendment.newvalue)
|
| + self.assertEqual('', amendment.oldvalue)
|
| +
|
| + def testMakeStatusAmendment(self):
|
| + amendment = tracker_bizobj.MakeStatusAmendment('', None)
|
| + self.assertEqual(tracker_pb2.FieldID.STATUS, amendment.field)
|
| + self.assertEqual('', amendment.newvalue)
|
| + self.assertEqual(None, amendment.oldvalue)
|
| +
|
| + amendment = tracker_bizobj.MakeStatusAmendment('New', '')
|
| + self.assertEqual(tracker_pb2.FieldID.STATUS, amendment.field)
|
| + self.assertEqual('New', amendment.newvalue)
|
| + self.assertEqual('', amendment.oldvalue)
|
| +
|
| + def testMakeOwnerAmendment(self):
|
| + amendment = tracker_bizobj.MakeOwnerAmendment(111L, 0)
|
| + self.assertEqual(tracker_pb2.FieldID.OWNER, amendment.field)
|
| + self.assertEqual('', amendment.newvalue)
|
| + self.assertEqual([111L], amendment.added_user_ids)
|
| + self.assertEqual([0], amendment.removed_user_ids)
|
| +
|
| + def testMakeCcAmendment(self):
|
| + amendment = tracker_bizobj.MakeCcAmendment([111L], [222L])
|
| + self.assertEqual(tracker_pb2.FieldID.CC, amendment.field)
|
| + self.assertEqual('', amendment.newvalue)
|
| + self.assertEqual([111L], amendment.added_user_ids)
|
| + self.assertEqual([222L], amendment.removed_user_ids)
|
| +
|
| + def testMakeLabelsAmendment(self):
|
| + amendment = tracker_bizobj.MakeLabelsAmendment(['added1'], ['removed1'])
|
| + self.assertEqual(tracker_pb2.FieldID.LABELS, amendment.field)
|
| + self.assertEqual('-removed1 added1', amendment.newvalue)
|
| +
|
| + def testMakeBlockedOnAmendment(self):
|
| + ref1 = (None, 1)
|
| + ref2 = ('other-proj', 2)
|
| + amendment = tracker_bizobj.MakeBlockedOnAmendment([ref1], [ref2])
|
| + self.assertEqual(tracker_pb2.FieldID.BLOCKEDON, amendment.field)
|
| + self.assertEqual('-other-proj:2 1', amendment.newvalue)
|
| +
|
| + def testMakeBlockingAmendment(self):
|
| + ref1 = (None, 1)
|
| + ref2 = ('other-proj', 2)
|
| + amendment = tracker_bizobj.MakeBlockingAmendment([ref1], [ref2])
|
| + self.assertEqual(tracker_pb2.FieldID.BLOCKING, amendment.field)
|
| + self.assertEqual('-other-proj:2 1', amendment.newvalue)
|
| +
|
| + def testMakeMergedIntoAmendment(self):
|
| + ref1 = (None, 1)
|
| + ref2 = ('other-proj', 2)
|
| + amendment = tracker_bizobj.MakeMergedIntoAmendment(ref1, ref2)
|
| + self.assertEqual(tracker_pb2.FieldID.MERGEDINTO, amendment.field)
|
| + self.assertEqual('-other-proj:2 1', amendment.newvalue)
|
| +
|
| + def testAmendmentString(self):
|
| + users_by_id = {
|
| + 111L: framework_views.UserView(111L, 'username@gmail.com', True)
|
| + }
|
| + summary_amendment = tracker_bizobj.MakeSummaryAmendment('new summary', None)
|
| + self.assertEqual(
|
| + 'new summary',
|
| + tracker_bizobj.AmendmentString(summary_amendment, users_by_id))
|
| +
|
| + status_amendment = tracker_bizobj.MakeStatusAmendment('', None)
|
| + self.assertEqual(
|
| + '', tracker_bizobj.AmendmentString(status_amendment, users_by_id))
|
| + status_amendment = tracker_bizobj.MakeStatusAmendment('Assigned', 'New')
|
| + self.assertEqual(
|
| + 'Assigned',
|
| + tracker_bizobj.AmendmentString(status_amendment, users_by_id))
|
| +
|
| + owner_amendment = tracker_bizobj.MakeOwnerAmendment(0, 0)
|
| + self.assertEqual(
|
| + '----', tracker_bizobj.AmendmentString(owner_amendment, users_by_id))
|
| + owner_amendment = tracker_bizobj.MakeOwnerAmendment(111L, 0)
|
| + self.assertEqual(
|
| + 'usern...@gmail.com',
|
| + tracker_bizobj.AmendmentString(owner_amendment, users_by_id))
|
| +
|
| + def testAmendmentLinks(self):
|
| + users_by_id = {
|
| + 111L: framework_views.UserView(111L, 'foo@gmail.com', False),
|
| + 222L: framework_views.UserView(222L, 'bar@gmail.com', False),
|
| + 333L: framework_views.UserView(333L, 'baz@gmail.com', False)
|
| + }
|
| + # SUMMARY
|
| + summary_amendment = tracker_bizobj.MakeSummaryAmendment('new summary', None)
|
| + self.assertEqual(
|
| + [{'value': 'new summary', 'url': None}],
|
| + tracker_bizobj.AmendmentLinks(summary_amendment, users_by_id, 'proj'))
|
| +
|
| + # OWNER
|
| + owner_amendment = tracker_bizobj.MakeOwnerAmendment(0, 0)
|
| + self.assertEqual(
|
| + [{'value': '----', 'url': None}],
|
| + tracker_bizobj.AmendmentLinks(owner_amendment, users_by_id, 'proj'))
|
| + owner_amendment = tracker_bizobj.MakeOwnerAmendment(111L, 0)
|
| + self.assertEqual(
|
| + [{'value': 'foo@gmail.com', 'url': None}],
|
| + tracker_bizobj.AmendmentLinks(owner_amendment, users_by_id, 'proj'))
|
| +
|
| + # BLOCKEDON, BLOCKING, MERGEDINTO
|
| + blocking_amendment = tracker_bizobj.MakeBlockingAmendment(
|
| + [(None, 123), ('blah', 234)], [(None, 345), ('blah', 456)])
|
| + self.assertEqual([
|
| + {'value': '-345', 'url': '/p/proj/issues/detail?id=345'},
|
| + {'value': '-blah:456', 'url': '/p/blah/issues/detail?id=456'},
|
| + {'value': '123', 'url': '/p/proj/issues/detail?id=123'},
|
| + {'value': 'blah:234', 'url': '/p/blah/issues/detail?id=234'}],
|
| + tracker_bizobj.AmendmentLinks(blocking_amendment, users_by_id, 'proj'))
|
| +
|
| + # newvalue catchall
|
| + label_amendment = tracker_bizobj.MakeLabelsAmendment(
|
| + ['My-Label', 'Your-Label'], ['Their-Label'])
|
| + self.assertEqual([
|
| + {'value': '-Their-Label', 'url': None},
|
| + {'value': 'My-Label', 'url': None},
|
| + {'value': 'Your-Label', 'url': None}],
|
| + tracker_bizobj.AmendmentLinks(label_amendment, users_by_id, 'proj'))
|
| +
|
| + # CC, or CUSTOM with user type
|
| + cc_amendment = tracker_bizobj.MakeCcAmendment([222L, 333L], [111L])
|
| + self.assertEqual([
|
| + {'value': '-foo@gmail.com', 'url': None},
|
| + {'value': 'bar@gmail.com', 'url': None},
|
| + {'value': 'baz@gmail.com', 'url': None}],
|
| + tracker_bizobj.AmendmentLinks(cc_amendment, users_by_id, 'proj'))
|
| + user_amendment = tracker_bizobj.MakeAmendment(
|
| + tracker_pb2.FieldID.CUSTOM, None, [222L, 333L], [111L], 'ultracc')
|
| + self.assertEqual([
|
| + {'value': '-foo@gmail.com', 'url': None},
|
| + {'value': 'bar@gmail.com', 'url': None},
|
| + {'value': 'baz@gmail.com', 'url': None}],
|
| + tracker_bizobj.AmendmentLinks(user_amendment, users_by_id, 'proj'))
|
| +
|
| +
|
| + def testDiffValueLists(self):
|
| + added, removed = tracker_bizobj.DiffValueLists([], [])
|
| + self.assertItemsEqual([], added)
|
| + self.assertItemsEqual([], removed)
|
| +
|
| + added, removed = tracker_bizobj.DiffValueLists([], None)
|
| + self.assertItemsEqual([], added)
|
| + self.assertItemsEqual([], removed)
|
| +
|
| + added, removed = tracker_bizobj.DiffValueLists([1, 2], [])
|
| + self.assertItemsEqual([1, 2], added)
|
| + self.assertItemsEqual([], removed)
|
| +
|
| + added, removed = tracker_bizobj.DiffValueLists([], [8, 9])
|
| + self.assertItemsEqual([], added)
|
| + self.assertItemsEqual([8, 9], removed)
|
| +
|
| + added, removed = tracker_bizobj.DiffValueLists([1, 2], [8, 9])
|
| + self.assertItemsEqual([1, 2], added)
|
| + self.assertItemsEqual([8, 9], removed)
|
| +
|
| + added, removed = tracker_bizobj.DiffValueLists([1, 2, 5, 6], [5, 6, 8, 9])
|
| + self.assertItemsEqual([1, 2], added)
|
| + self.assertItemsEqual([8, 9], removed)
|
| +
|
| + added, removed = tracker_bizobj.DiffValueLists([5, 6], [5, 6, 8, 9])
|
| + self.assertItemsEqual([], added)
|
| + self.assertItemsEqual([8, 9], removed)
|
| +
|
| + added, removed = tracker_bizobj.DiffValueLists([1, 2, 5, 6], [5, 6])
|
| + self.assertItemsEqual([1, 2], added)
|
| + self.assertItemsEqual([], removed)
|
| +
|
| + added, removed = tracker_bizobj.DiffValueLists(
|
| + [1, 2, 2, 5, 6], [5, 6, 8, 9])
|
| + self.assertItemsEqual([1, 2, 2], added)
|
| + self.assertItemsEqual([8, 9], removed)
|
| +
|
| + added, removed = tracker_bizobj.DiffValueLists(
|
| + [1, 2, 5, 6], [5, 6, 8, 8, 9])
|
| + self.assertItemsEqual([1, 2], added)
|
| + self.assertItemsEqual([8, 8, 9], removed)
|
| +
|
| + def testFormatIssueRef(self):
|
| + self.assertEqual('', tracker_bizobj.FormatIssueRef(None))
|
| +
|
| + self.assertEqual(
|
| + 'p:1', tracker_bizobj.FormatIssueRef(('p', 1)))
|
| +
|
| + self.assertEqual(
|
| + '1', tracker_bizobj.FormatIssueRef((None, 1)))
|
| +
|
| + def testParseIssueRef(self):
|
| + self.assertEqual(None, tracker_bizobj.ParseIssueRef(''))
|
| + self.assertEqual(None, tracker_bizobj.ParseIssueRef(' \t '))
|
| +
|
| + ref_pn, ref_id = tracker_bizobj.ParseIssueRef('1')
|
| + self.assertEqual(None, ref_pn)
|
| + self.assertEqual(1, ref_id)
|
| +
|
| + ref_pn, ref_id = tracker_bizobj.ParseIssueRef('-1')
|
| + self.assertEqual(None, ref_pn)
|
| + self.assertEqual(1, ref_id)
|
| +
|
| + ref_pn, ref_id = tracker_bizobj.ParseIssueRef('p:2')
|
| + self.assertEqual('p', ref_pn)
|
| + self.assertEqual(2, ref_id)
|
| +
|
| + ref_pn, ref_id = tracker_bizobj.ParseIssueRef('-p:2')
|
| + self.assertEqual('p', ref_pn)
|
| + self.assertEqual(2, ref_id)
|
| +
|
| + def testSafeParseIssueRef(self):
|
| + self.assertEqual(None, tracker_bizobj._SafeParseIssueRef('-'))
|
| + self.assertEqual(None, tracker_bizobj._SafeParseIssueRef('test:'))
|
| + ref_pn, ref_id = tracker_bizobj.ParseIssueRef('p:2')
|
| + self.assertEqual('p', ref_pn)
|
| + self.assertEqual(2, ref_id)
|
| +
|
| + def testGetFieldValueWithRawValue(self):
|
| + class MockUser(object):
|
| + def __init__(self):
|
| + self.email = 'test@example.com'
|
| + users_by_id = {111: MockUser()}
|
| +
|
| + class MockFieldValue(object):
|
| + def __init__(self, int_value=None, str_value=None, user_id=None):
|
| + self.int_value = int_value
|
| + self.str_value = str_value
|
| + self.user_id = user_id
|
| +
|
| + # Test user types.
|
| + # Use user_id from the field_value and get user from users_by_id.
|
| + val = tracker_bizobj.GetFieldValueWithRawValue(
|
| + field_type=tracker_pb2.FieldTypes.USER_TYPE,
|
| + users_by_id=users_by_id,
|
| + field_value=MockFieldValue(user_id=111),
|
| + raw_value=113,
|
| + )
|
| + self.assertEqual('test@example.com', val)
|
| + # Specify user_id that does not exist in users_by_id.
|
| + val = tracker_bizobj.GetFieldValueWithRawValue(
|
| + field_type=tracker_pb2.FieldTypes.USER_TYPE,
|
| + users_by_id=users_by_id,
|
| + field_value=MockFieldValue(user_id=112),
|
| + raw_value=113,
|
| + )
|
| + self.assertEqual(112, val)
|
| + # Pass in empty users_by_id.
|
| + val = tracker_bizobj.GetFieldValueWithRawValue(
|
| + field_type=tracker_pb2.FieldTypes.USER_TYPE,
|
| + users_by_id={},
|
| + field_value=MockFieldValue(user_id=111),
|
| + raw_value=113,
|
| + )
|
| + self.assertEqual(111, val)
|
| + # Test different raw_values.
|
| + raw_value_tests = (
|
| + (111, 'test@example.com'),
|
| + (112, 112),
|
| + (framework_constants.NO_USER_NAME, framework_constants.NO_USER_NAME))
|
| + for (raw_value, expected_output) in raw_value_tests:
|
| + val = tracker_bizobj.GetFieldValueWithRawValue(
|
| + field_type=tracker_pb2.FieldTypes.USER_TYPE,
|
| + users_by_id=users_by_id,
|
| + field_value=None,
|
| + raw_value=raw_value,
|
| + )
|
| + self.assertEqual(expected_output, val)
|
| +
|
| + # Test enum types.
|
| + # The returned value should be the raw_value regardless of field_value being
|
| + # specified.
|
| + for field_value in (MockFieldValue(), None):
|
| + val = tracker_bizobj.GetFieldValueWithRawValue(
|
| + field_type=tracker_pb2.FieldTypes.ENUM_TYPE,
|
| + users_by_id=users_by_id,
|
| + field_value=field_value,
|
| + raw_value='abc',
|
| + )
|
| + self.assertEqual('abc', val)
|
| +
|
| + # Test int type.
|
| + # Use int_type from the field_value.
|
| + val = tracker_bizobj.GetFieldValueWithRawValue(
|
| + field_type=tracker_pb2.FieldTypes.INT_TYPE,
|
| + users_by_id=users_by_id,
|
| + field_value=MockFieldValue(int_value=100),
|
| + raw_value=101,
|
| + )
|
| + self.assertEqual(100, val)
|
| + # Use the raw_value when field_value is not specified.
|
| + val = tracker_bizobj.GetFieldValueWithRawValue(
|
| + field_type=tracker_pb2.FieldTypes.INT_TYPE,
|
| + users_by_id=users_by_id,
|
| + field_value=None,
|
| + raw_value=101,
|
| + )
|
| + self.assertEqual(101, val)
|
| +
|
| + # Test str type.
|
| + # Use str_type from the field_value.
|
| + val = tracker_bizobj.GetFieldValueWithRawValue(
|
| + field_type=tracker_pb2.FieldTypes.STR_TYPE,
|
| + users_by_id=users_by_id,
|
| + field_value=MockFieldValue(str_value='testing'),
|
| + raw_value='test',
|
| + )
|
| + self.assertEqual('testing', val)
|
| + # Use the raw_value when field_value is not specified.
|
| + val = tracker_bizobj.GetFieldValueWithRawValue(
|
| + field_type=tracker_pb2.FieldTypes.STR_TYPE,
|
| + users_by_id=users_by_id,
|
| + field_value=None,
|
| + raw_value='test',
|
| + )
|
| + self.assertEqual('test', val)
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + unittest.main()
|
|
|