def trigger_request(self, date, text, expected): """Triggers a fake HTTP request and verifies the AccountStatsDay instances. """ request = MockRequestTask('update-stats', [date], date) out = views.task_update_stats(request) self.assertEqual(200, out.status_code) actual = list(out) self.assertEqual(1, len(actual)) stats = models.AccountStatsDay.query().fetch() self.assertTrue(isinstance(expected, list)) # Make a copy so |expected| is not modified. expected = [i.copy() for i in expected] for i in expected: i['user'] = str(i['user'].email) i.setdefault('issues', [4]) i.setdefault('latencies', [-1]) i.setdefault('lgtms', [0]) i.setdefault('name', date) i.setdefault('score', models.AccountStatsBase.NULL_SCORE) self.assertEqual(expected, [views.stats_to_dict(s) for s in stats]) # Check the HTTP request reply at the end, because it's more cosmetic than # the actual entities. self.assertTrue( re.match('^' + re.escape(date + '\n' + text) + 'In \\d+\\.\\ds\n$', actual[0]), actual[0])
def trigger_request(self, date, item, text, expected): """Triggers a fake HTTP request and verifies the AccountStatsMulti instances. """ request = MockRequestTask('update-stats', [item], str(self.today.date())) out = views.task_update_stats(request) actual = list(out) self.assertEqual(1, len(actual)) self.assertEqual(200, out.status_code, actual[0]) stats = models.AccountStatsMulti.query().fetch() self.assertTrue(isinstance(expected, list)) # Make a copy so |expected| is not modified. expected = [i.copy() for i in expected] for i in expected: i['user'] = str(i['user'].email) self.assertEqual(expected, [views.stats_to_dict(s) for s in stats]) # Check the HTTP request reply at the end, because it's more cosmetic than # the actual entities. text = str(date.date()) + '\n' + text regexp = '^' + re.escape(text) + 'In \\d+\\.\\ds\n$' self.assertTrue(re.match(regexp, actual[0]), (text, actual[0]))