blob: 40a7f83977bf180244a7496bcc856d9d8070bf34 [file] [log] [blame]
xixuan82753172017-08-07 09:22:50 -07001# Copyright 2017 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""Module for datastore unittests."""
Xixuan Wu5d6063e2017-09-05 16:15:07 -07006# pylint: disable=g-tzinfo-replace,g-bad-import-order
xixuan82753172017-08-07 09:22:50 -07007
8import datetime
Xixuan Wu5d6063e2017-09-05 16:15:07 -07009import pytz
xixuan82753172017-08-07 09:22:50 -070010import unittest
11
12import datastore_client
13
xixuan82753172017-08-07 09:22:50 -070014from google.appengine.ext import ndb
15from google.appengine.ext import testbed
xixuan82753172017-08-07 09:22:50 -070016
17
18class DatastoreTestCase(unittest.TestCase):
19
Xixuan Wu5d6063e2017-09-05 16:15:07 -070020 def setUp(self):
21 self.testbed = testbed.Testbed()
22 self.testbed.activate()
23 self.addCleanup(self.testbed.deactivate)
24 self.testbed.init_datastore_v3_stub()
25 self.testbed.init_memcache_stub()
26 ndb.get_context().clear_cache()
xixuan82753172017-08-07 09:22:50 -070027
Xixuan Wu5d6063e2017-09-05 16:15:07 -070028 def testSetLastExec(self):
29 last_exec_store = datastore_client.LastExecutionRecordStore()
30 exec_time = datetime.datetime(2017, 8, 1, 0)
31 last_exec_store.set_last_execute_time('nightly', exec_time)
32 self.assertEqual(last_exec_store.get_last_execute_time('nightly'),
33 exec_time.replace(tzinfo=pytz.utc))
xixuan82753172017-08-07 09:22:50 -070034
Xixuan Wu5d6063e2017-09-05 16:15:07 -070035 def testDeleteLastExec(self):
36 last_exec_store = datastore_client.LastExecutionRecordStore()
37 exec_time = datetime.datetime(2017, 8, 1, 0)
38 last_exec_store.set_last_execute_time('nightly', exec_time)
39 last_exec_store.del_last_execute_time('nightly')
40 self.assertEqual(last_exec_store.get_last_execute_time('nightly'),
41 None)
xixuan82753172017-08-07 09:22:50 -070042
Xixuan Wu5d6063e2017-09-05 16:15:07 -070043 def testDeleteLastExecWithNonExistentKey(self):
44 last_exec_store = datastore_client.LastExecutionRecordStore()
45 last_exec_store.del_last_execute_time('nightly')
xixuan82753172017-08-07 09:22:50 -070046
Xixuan Wu5d6063e2017-09-05 16:15:07 -070047 def testGetAllLastExec(self):
48 last_exec_store = datastore_client.LastExecutionRecordStore()
49 exec_time = datetime.datetime(2017, 8, 1, 0)
50 event_types = ['nightly', 'weekly']
51 exec_time_records = [datastore_client.LastExecutionRecord(
52 key=ndb.Key(datastore_client.LastExecutionRecord, e),
53 event_type=e,
54 exec_time=exec_time.replace(tzinfo=pytz.utc)) for e in event_types]
xixuan82753172017-08-07 09:22:50 -070055
Xixuan Wu5d6063e2017-09-05 16:15:07 -070056 for e in event_types:
57 last_exec_store.set_last_execute_time(e, exec_time)
xixuan82753172017-08-07 09:22:50 -070058
Xixuan Wu5d6063e2017-09-05 16:15:07 -070059 last_exec_times = last_exec_store.get_all()
60 self.assertEqual(last_exec_times, exec_time_records)
xixuan82753172017-08-07 09:22:50 -070061
Xixuan Wu5d6063e2017-09-05 16:15:07 -070062 def testDeleteAllLastExec(self):
63 last_exec_store = datastore_client.LastExecutionRecordStore()
64 exec_time = datetime.datetime(2017, 8, 1, 0)
65 event_types = ['nightly', 'weekly']
xixuan82753172017-08-07 09:22:50 -070066
Xixuan Wu5d6063e2017-09-05 16:15:07 -070067 for e in event_types:
68 last_exec_store.set_last_execute_time(e, exec_time)
xixuan82753172017-08-07 09:22:50 -070069
Xixuan Wu5d6063e2017-09-05 16:15:07 -070070 last_exec_store.delete_all()
71 for e in event_types:
72 self.assertEqual(last_exec_store.get_last_execute_time(e), None)
xixuan82753172017-08-07 09:22:50 -070073
74if __name__ == '__main__':
Xixuan Wu5d6063e2017-09-05 16:15:07 -070075 unittest.main()