blob: df9a1e9d1c8918e8a5c423614235b103033818b7 [file] [log] [blame]
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Unit tests for sheriff module."""
import unittest
from dashboard import testing_common
from dashboard import utils
from dashboard.models import graph_data
from dashboard.models import sheriff
from dashboard.models import stoppage_alert
class StoppageAlertTest(testing_common.TestCase):
def _AddSampleData(self):
"""Puts a Test and Row in the datastore and returns the entities."""
testing_common.AddDataToMockDataStore(['M'], ['b'], {'suite': {'foo': {}}})
sheriff.Sheriff(id='Foo', patterns=['*/*/*/*']).put()
test_path = 'M/b/suite/foo'
test_key = utils.TestKey(test_path)
test = test_key.get()
testing_common.AddRows(test_path, [{'id': 100, 'value': 100}])
row = graph_data.Row.query().get()
return test, row
def testCreateStoppageAlert_Basic(self):
test, row = self._AddSampleData()
alert = stoppage_alert.CreateStoppageAlert(test, row)
alert.put()
self.assertFalse(alert.internal_only)
self.assertEqual(test.sheriff, alert.sheriff)
self.assertEqual(test.key, alert.test)
self.assertEqual(row.revision, alert.revision)
self.assertEqual(row.revision, alert.start_revision)
self.assertEqual(row.revision, alert.end_revision)
self.assertFalse(alert.mail_sent)
self.assertIsNone(alert.bug_id)
self.assertIsNotNone(alert.timestamp)
def testCreateStoppageAlert_InternalOnly(self):
test, row = self._AddSampleData()
test.internal_only = True
test.put()
alert = stoppage_alert.CreateStoppageAlert(test, row)
self.assertTrue(alert.internal_only)
def testPutMultipleTimes_OnlyOneEntityPut(self):
test, row = self._AddSampleData()
stoppage_alert.CreateStoppageAlert(test, row).put()
stoppage_alert.CreateStoppageAlert(test, row).put()
self.assertEqual(1, len(stoppage_alert.StoppageAlert.query().fetch()))
def testGetStoppageAlert_NoEntity_ReturnsNone(self):
self.assertIsNone(stoppage_alert.GetStoppageAlert('M/b/suite/bar', 123))
def testGetStoppageAlert_EntityExists_ReturnsEntity(self):
test, row = self._AddSampleData()
stoppage_alert.CreateStoppageAlert(test, row).put()
self.assertIsNotNone(
stoppage_alert.GetStoppageAlert(test.test_path, row.revision))
if __name__ == '__main__':
unittest.main()