def testAnalysisAPIs(self): self.analysis = Analysis.Get(self.e, "ROLLUP", get_or_insert=True) self.analysis.put() # Test update params = self.__commonParams() params.update({ 'akn': 'ROLLUP', 'cols': 'TOTAL,MINIMUM', 'TOTAL': 10, 'MINIMUM': 2.5 }) result = self.post_json("/api/analysis", params) self.assertTrue(result['success']) # Test batch update data = { 'ROLLUP1': { 'TOTAL': 4, 'MINIMUM': 0 }, 'ROLLUP2': { 'TOTAL': -4, 'MINIMUM': 10 } } params = self.__commonParams() params.update({'data': json.dumps(data)}) result = self.post_json("/api/analysis/multi", params) self.assertTrue(result['success']) # Test batch update (to confirm other values not overwritten) data = {'ROLLUP1': {'NEW': 'hello'}} params = self.__commonParams() params.update({'data': json.dumps(data)}) result = self.post_json("/api/analysis/multi", params) self.assertTrue(result['success']) # Confirm update occurred preserving other values rollup1 = Analysis.get_by_key_name('ROLLUP1', parent=self.e) self.assertEqual(rollup1.columnValue('NEW'), 'hello') self.assertEqual(rollup1.columnValue('TOTAL'), 4) rollup1 = Analysis.get_by_key_name('ROLLUP1', parent=self.e) rollup2 = Analysis.get_by_key_name('ROLLUP2', parent=self.e) self.assertEqual(rollup1.columnValue('TOTAL'), 4) self.assertEqual(rollup2.columnValue('TOTAL'), -4) # Create second record params.update({ 'akn': 'TODAY', 'cols': 'TOTAL,MINIMUM', 'TOTAL': 1, 'MINIMUM': 0 }) result = self.post_json("/api/analysis", params) self.assertTrue(result['success']) # Test detail params = self.__commonParams() params['with_props'] = 1 result = self.get_json("/api/analysis/ROLLUP", params) self.assertTrue(result['success']) self.assertEqual(result['data']['analysis']['columns']['TOTAL'], '10') self.assertEqual(result['data']['analysis']['columns']['MINIMUM'], '2.5') # Test detail multi params = self.__commonParams() params['with_props'] = 1 result = self.get_json("/api/analysis/multi/ROLLUP,TODAY", params) self.assertTrue(result['success']) self.assertEqual(type(result['data']['analyses']['ROLLUP']), dict) self.assertEqual(type(result['data']['analyses']['TODAY']), dict)