| # 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() |