| Index: appengine/findit/model/test/base_analysis_test.py
|
| diff --git a/appengine/findit/model/test/base_analysis_test.py b/appengine/findit/model/test/base_analysis_test.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..56d985a08ff4556587243475ae49c84bde49ca46
|
| --- /dev/null
|
| +++ b/appengine/findit/model/test/base_analysis_test.py
|
| @@ -0,0 +1,83 @@
|
| +# Copyright 2016 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.
|
| +from datetime import datetime
|
| +import unittest
|
| +
|
| +from model import analysis_status
|
| +from model.base_analysis import BaseAnalysis
|
| +
|
| +from google.appengine.ext import ndb
|
| +
|
| +
|
| +class _DummyModel(BaseAnalysis):
|
| +
|
| + @staticmethod
|
| + def Create(key_string):
|
| + key = ndb.Key('_DummyModel', key_string)
|
| + return _DummyModel(key=key)
|
| +
|
| +# Complains when we modify properties of DummyModel
|
| +# pylint: disable=attribute-defined-outside-init
|
| +class BaseModelTest(unittest.TestCase):
|
| +
|
| + def setUp(self):
|
| + self.dummy_model = _DummyModel.Create('dummy_key')
|
| +
|
| + def testBaseAnalysisStatusIsCompleted(self):
|
| + for status in (analysis_status.COMPLETED, analysis_status.ERROR):
|
| + self.dummy_model.status = status
|
| + self.assertTrue(self.dummy_model.completed)
|
| +
|
| + def testBaseAnalysisStatusIsNotCompleted(self):
|
| + for status in (analysis_status.PENDING, analysis_status.RUNNING):
|
| + self.dummy_model.status = status
|
| + self.assertFalse(self.dummy_model.completed)
|
| +
|
| + def testBaseAnalysisDurationWhenNotCompleted(self):
|
| + self.dummy_model.status = analysis_status.RUNNING
|
| + self.assertIsNone(self.dummy_model.duration)
|
| +
|
| + def testBaseAnalysisDurationWhenStartTimeNotSet(self):
|
| + self.dummy_model.status = analysis_status.COMPLETED
|
| + self.dummy_model.end_time = datetime(2015, 07, 30, 21, 15, 30, 40)
|
| + self.assertIsNone(self.dummy_model.duration)
|
| +
|
| + def testBaseAnalysisDurationWhenEndTimeNotSet(self):
|
| + self.dummy_model.status = analysis_status.COMPLETED
|
| + self.dummy_model.start_time = datetime(2015, 07, 30, 21, 15, 30, 40)
|
| + self.assertIsNone(self.dummy_model.duration)
|
| +
|
| + def testBaseAnalysisDurationWhenCompleted(self):
|
| +
|
| + self.dummy_model.status = analysis_status.COMPLETED
|
| + self.dummy_model.start_time = datetime(2015, 07, 30, 21, 15, 30, 40)
|
| + self.dummy_model.end_time = datetime(2015, 07, 30, 21, 16, 15, 50)
|
| + self.assertEqual(45, self.dummy_model.duration)
|
| +
|
| + def testBaseAnalysisStatusIsFailed(self):
|
| + self.dummy_model.status = analysis_status.ERROR
|
| + self.assertTrue(self.dummy_model.failed)
|
| +
|
| + def testBaseAnalysisStatusIsNotFailed(self):
|
| + for status in (analysis_status.PENDING, analysis_status.RUNNING,
|
| + analysis_status.COMPLETED):
|
| +
|
| + self.dummy_model.status = status
|
| + self.assertFalse(self.dummy_model.failed)
|
| +
|
| + def testBaseAnalysisStatusDescriptionPending(self):
|
| + self.dummy_model.status = analysis_status.PENDING
|
| + self.assertEqual('Pending', self.dummy_model.status_description)
|
| +
|
| + def testBaseAnalysisStatusDescriptionRunning(self):
|
| + self.dummy_model.status = analysis_status.RUNNING
|
| + self.assertEqual('Running', self.dummy_model.status_description)
|
| +
|
| + def testBaseAnalysisStatusDescriptionCompleted(self):
|
| + self.dummy_model.status = analysis_status.COMPLETED
|
| + self.assertEqual('Completed', self.dummy_model.status_description)
|
| +
|
| + def testBaseAnalysisStatusDescriptionError(self):
|
| + self.dummy_model.status = analysis_status.ERROR
|
| + self.assertEqual('Error', self.dummy_model.status_description)
|
|
|