| Index: appengine/chromium_cq_status/tests/stats_test.py
|
| diff --git a/appengine/chromium_cq_status/tests/stats_test.py b/appengine/chromium_cq_status/tests/stats_test.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..998436defe50364214f373a4c2fcc25cb62bc345
|
| --- /dev/null
|
| +++ b/appengine/chromium_cq_status/tests/stats_test.py
|
| @@ -0,0 +1,65 @@
|
| +# Copyright 2014 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 json
|
| +import os
|
| +
|
| +from appengine.utils import testing
|
| +
|
| +from appengine.path_mangler_hack import PathMangler
|
| +with PathMangler(os.path.dirname(os.path.dirname(__file__))):
|
| + from appengine.chromium_cq_status import main
|
| + from appengine.chromium_cq_status.model.record import Record
|
| +
|
| +class StatsTest(testing.AppengineTestCase): # pragma: no cover
|
| + '''Utility class for stats tests that want to load/clear test Record data'''
|
| + app_module = main.app
|
| +
|
| + def load_records(self, json_filename):
|
| + json_path = os.path.join(os.path.dirname(__file__), 'resources',
|
| + json_filename)
|
| + with open(json_path) as json_file:
|
| + for record in json.load(json_file):
|
| + self.mock_now(datetime.utcfromtimestamp(record['timestamp']))
|
| + Record(
|
| + id=record['key'],
|
| + tags=record['tags'],
|
| + fields=record['fields'],
|
| + ).put()
|
| +
|
| + @staticmethod
|
| + def clear_records():
|
| + for record in Record.query():
|
| + record.key.delete()
|
| + assert Record.query().count() == 0
|
| +
|
| + def test_load_records(self):
|
| + self.clear_records()
|
| + self.load_records('test_load_records.json')
|
| + self.assertEquals([{
|
| + 'key': None,
|
| + 'timestamp': 100,
|
| + 'tags': ['tag_a', 'tag_b', 'tag_c'],
|
| + 'fields': {}
|
| + }, {
|
| + 'key': 'keyed_record',
|
| + 'timestamp': 200,
|
| + 'tags': [],
|
| + 'fields': {
|
| + 'field_a': 'value_a',
|
| + 'field_b': 'value_b',
|
| + 'field_c': 'value_c',
|
| + }
|
| + }],
|
| + [record.to_dict() for record in Record.query().order(Record.timestamp)])
|
| +
|
| + def test_clear_records(self):
|
| + self.clear_records()
|
| + self.assertEquals(0, Record.query().count())
|
| + for _ in range(10):
|
| + Record().put()
|
| + self.assertEquals(10, Record.query().count())
|
| + self.clear_records()
|
| + self.assertEquals(0, Record.query().count())
|
|
|