class PolygonApi(unittest.TestCase, GoogleAuthMixin): def setUp(self): app.config['TESTING'] = True self.app = app.test_client() self.login('*****@*****.**', 'testuser') for x in Area.all(): x.delete() for x in Cell.all(): x.delete() r = Report(start=date.today(), finished=False) r.put() self.r = r self.cell = Cell(x=0, y=0, z=2, report=self.r, ndfi_high=1.0, ndfi_low=0.0) self.cell.put() self.area = Area(geo='[]', added_by=users.get_current_user(), type=1, cell=self.cell) self.area.put() def test_list(self): rv = self.app.get('/api/v0/report/' + str(self.r.key()) + '/cell/2_0_0/polygon') js = json.loads(rv.data) self.assertEquals(1, len(js)) def test_create_non_existing_cell(self): rv = self.app.post('/api/v0/report/' + str(self.r.key()) + '/cell/2_1_0/polygon', data='{"paths": "test", "type": 1}' ) self.assertEquals(2, Area.all().count()) self.assertEquals(4, Cell.all().count()) # check parents exists cell = Cell.all().filter('report =', self.r).filter('x =', 1).filter('y =', 0).filter('z =', 2).fetch(1)[0] self.assertEquals('test', cell.get_parent().last_change_by.nickname()) self.assertEquals('test', cell.get_parent().get_parent().last_change_by.nickname()) self.assertNotEquals(0, cell.get_parent().last_change_on) def test_create(self): rv = self.app.post('/api/v0/report/' + str(self.r.key()) + '/cell/2_0_0/polygon', data='{"paths": "[]", "type": 1}' ) self.assertEquals(2, Area.all().count()) rv = self.app.get('/api/v0/report/' + str(self.r.key()) + '/cell/2_0_0/polygon') js = json.loads(rv.data) self.assertEquals(2, len(js)) def test_update(self): rv = self.app.put('/api/v0/report/' + str(self.r.key()) + '/cell/2_0_0/polygon/' + str(self.area.key()), data='{"paths": "[[1, 2, 3]]", "type": 100}' ) self.assertEquals(1, Area.all().count()) a = Area.get(self.area.key()) self.assertEquals(100, a.type) self.assertEquals("\"[[1, 2, 3]]\"", a.geo) js = json.loads(rv.data) self.assertEquals(100, js['type']) self.assertEquals("[[1, 2, 3]]", js['paths']) def test_delete(self): rv = self.app.delete('/api/v0/report/' + str(self.r.key()) + '/cell/2_0_0/polygon/' + str(self.area.key())) self.assertEquals(0, Area.all().count())
class FTTest(unittest.TestCase): def setUp(self): app.config['TESTING'] = True self.app = app.test_client() r = Report(start=date.today(), finished=False) r.put() self.r = r self.cell = Cell(x=0, y=0, z=2, report=self.r, ndfi_high=1.0, ndfi_low=0.0) self.cell.put() self.area = Area( geo='[[[-61.5,-12],[-61.5,-11],[-60.5,-11],[-60.5,-12]]]', added_by=users.get_current_user(), type=1, cell=self.cell) #self.area.put() def test_save_on_ft(self): self.area.put() self.area.create_fusion_tables() self.assertNotEquals(None, self.area.fusion_tables_id) self.area.type = 2 self.area.save() self.area.update_fusion_tables() self.area.delete() self.area.delete_fusion_tables()
class NotesApiTest(unittest.TestCase, GoogleAuthMixin): def setUp(self): app.config['TESTING'] = True self.app = app.test_client() self.login('*****@*****.**', 'testuser') r = Report(start=date.today(), finished=False) r.put() self.r = r self.cell = Cell(x=0, y=0, z=2, report=self.r, ndfi_high=1.0, ndfi_low=0.0) self.cell.put() for x in Note.all(): x.delete() self.when = datetime.now() self.note = Note(msg='test msg', added_by=users.get_current_user(), cell=self.cell, added_on=self.when) self.note.put() def test_note_list(self): rv = self.app.get('/api/v0/report/' + str(self.r.key()) + '/cell/2_0_0/note') self.assertEquals(200, rv.status_code) js = json.loads(rv.data) self.assertEquals(1, len(js)) n = js[0] self.assertEquals('test msg', n['msg']) self.assertEquals('test', n['author']) self.assertEquals(timestamp(self.when), n['date']) self.assertEquals(1, Note.all().count()) def test_notes_create(self): rv = self.app.post('/api/v0/report/' + str(self.r.key()) + '/cell/2_0_0/note', data='{"msg": "test"}') self.assertEquals(200, rv.status_code) self.assertEquals(2, Note.all().count()) self.assertEquals(2, self.cell.note_set.count())
class CellTest(unittest.TestCase): def setUp(self): r = Report(start=date.today(), finished=False) r.put() self.r = r self.cell = Cell(x=11, y=11, z=2, report=self.r, ndfi_high=1.0, ndfi_low=0.0) self.cell.put() def test_parent_id(self): self.assertEquals('1_1_1', self.cell.parent_id)
class CellTest(unittest.TestCase): def setUp(self): r = Report(start=date.today(), finished=False) r.put() self.r = r self.cell = Cell(x=11, y=11, z=2, report=self.r, ndfi_high=1.0, ndfi_low=0.0) self.cell.put() def test_parent_id(self): self.assertEquals('1_2_2', self.cell.parent_id)
def create_tables_cell(): """ creates a report for specified month """ z = request.args.get('z','') x = request.args.get('x','') y = request.args.get('y','') parent_id = request.args.get('parent_id','') assetid = request.args.get('assetid','') report = Report.find_by_assetid(assetid) if not z or not x or not y: abort(400) r = Cell(z=z, x=x, y=y, parent_id=parent_id, assetid=assetid, report=report) r.put() return r.as_json()
class FTTest(unittest.TestCase): def setUp(self): app.config['TESTING'] = True self.app = app.test_client() r = Report(start=date.today(), finished=False) r.put() self.r = r self.cell = Cell(x=0, y=0, z=2, report=self.r, ndfi_high=1.0, ndfi_low=0.0) self.cell.put() self.area = Area(geo='[[[-61.5,-12],[-61.5,-11],[-60.5,-11],[-60.5,-12]]]', added_by=users.get_current_user(), type=1, cell=self.cell) #self.area.put() def test_save_on_ft(self): self.area.put() self.area.create_fusion_tables() self.assertNotEquals(None, self.area.fusion_tables_id) self.area.type = 2 self.area.save() self.area.update_fusion_tables() self.area.delete() self.area.delete_fusion_tables()
class StatsTest(unittest.TestCase): """ test for reporting api """ def setUp(self): # create resources self.polygon = [[[-63.154907226557498, -4.8118385341739005], [-64.143676757807498, -4.8118385341739005], [-64.132690429682498, -6.2879986723276584], [-62.814331054682498, -6.3535159310087908]]] self.inv_polygon = [[[y, x] for x, y in self.polygon[0]]] self.r = Report(start=date(year=2011, month=2, day=1), end=date(year=2011, month=3, day=1), finished=True) self.r.put() self.cell = Cell(x=0, y=0, z=2, report=self.r, ndfi_high=1.0, ndfi_low=0.0) self.cell.put() self.area = Area(geo=json.dumps(self.inv_polygon), added_by=None, type=1, cell=self.cell) self.area.put() self.area.create_fusion_tables() self.ndfi = NDFI(self.r.comparation_range(), self.r.range()) self.stats = Stats() def test_stats(self): """ """ # freeze map with on area report_id = self.r.key().id() data = self.ndfi.freeze_map(self.r.base_map(), int(settings.FT_TABLE_ID), self.r.key().id()) self.assertTrue('data' in data) self.assertTrue('id' in data['data']) self.assertTrue(len(data['data']['id']) > 0) asset_id = data['data']['id'] print "report id: ", asset_id # get stats for this area st = self.stats.get_stats_for_polygon(report_id, asset_id, self.polygon) self.assertTrue(st is not None) polygon_stats = st[0] print polygon_stats self.assertTrue(float(polygon_stats['def']) > 0.0) self.assertAlmostEquals(0.0, float(polygon_stats['deg'])) def_area = float(polygon_stats['def']) print "deforested area: ", def_area # get stats for this area # move the polygon a little bit p = [[[x, y + 1.0] for x, y in self.polygon[0]]] st = self.stats.get_stats_for_polygon(report_id, asset_id, p) self.assertTrue(st is not None) print st[0] polygon_stats = st['data']['properties']['classHistogram']['values'][ 'null']['values'] self.assertTrue(float(polygon_stats['def']) > 0.0) self.assertTrue(float(polygon_stats['def']) < def_area) print "new deforested area: ", float(polygon_stats['def']) # search in area whiout deforesation p = [[[x + 4.0, y] for x, y in self.polygon[0]]] st = self.stats.get_stats_for_polygon(report_id, asset_id, p) self.assertTrue(st is not None) polygon_stats = st[0] self.assertAlmostEquals(0.0, float(polygon_stats['def'])) self.assertAlmostEquals(0.0, float(polygon_stats['deg']))
class StatsTest(unittest.TestCase): """ test for reporting api """ def setUp(self): # create resources self.polygon = [[[-63.154907226557498, -4.8118385341739005], [-64.143676757807498, -4.8118385341739005], [-64.132690429682498, -6.2879986723276584], [-62.814331054682498, -6.3535159310087908]]] self.inv_polygon = [[[y, x] for x, y in self.polygon[0]]] self.r = Report(start=date(year=2011, month=2, day=1), end=date(year=2011, month=3, day=1), finished=True) self.r.put() self.cell = Cell(x=0, y=0, z=2, report=self.r, ndfi_high=1.0, ndfi_low=0.0) self.cell.put() self.area = Area(geo=json.dumps(self.inv_polygon), added_by=None, type=1, cell=self.cell) self.area.put() self.area.create_fusion_tables() self.ndfi = NDFI(self.r.comparation_range(), self.r.range()) self.stats = Stats() def test_stats(self): """ """ # freeze map with on area report_id = self.r.key().id() data = self.ndfi.freeze_map(self.r.base_map(), int(settings.FT_TABLE_ID), self.r.key().id()) self.assertTrue('data' in data) self.assertTrue('id' in data['data']) self.assertTrue(len(data['data']['id']) > 0) asset_id = data['data']['id'] print "report id: ", asset_id # get stats for this area st = self.stats.get_stats_for_polygon(report_id, asset_id, self.polygon) self.assertTrue(st is not None) polygon_stats = st[0] print polygon_stats self.assertTrue(float(polygon_stats['def']) > 0.0) self.assertAlmostEquals(0.0, float(polygon_stats['deg'])) def_area = float(polygon_stats['def']) print "deforested area: ", def_area # get stats for this area # move the polygon a little bit p = [[[x, y + 1.0] for x, y in self.polygon[0]]] st = self.stats.get_stats_for_polygon(report_id, asset_id, p) self.assertTrue(st is not None) print st[0] polygon_stats = st['data']['properties']['classHistogram']['values']['null']['values'] self.assertTrue(float(polygon_stats['def']) > 0.0) self.assertTrue(float(polygon_stats['def']) < def_area) print "new deforested area: ", float(polygon_stats['def']) # search in area whiout deforesation p = [[[x+4.0, y] for x, y in self.polygon[0]]] st = self.stats.get_stats_for_polygon(report_id, asset_id, p) self.assertTrue(st is not None) polygon_stats = st[0] self.assertAlmostEquals(0.0, float(polygon_stats['def'])) self.assertAlmostEquals(0.0, float(polygon_stats['deg']))
class PolygonApi(unittest.TestCase, GoogleAuthMixin): def setUp(self): app.config['TESTING'] = True self.app = app.test_client() self.login('*****@*****.**', 'testuser') for x in Area.all(): x.delete() for x in Cell.all(): x.delete() r = Report(start=date.today(), finished=False) r.put() self.r = r self.cell = Cell(x=0, y=0, z=2, report=self.r, ndfi_high=1.0, ndfi_low=0.0) self.cell.put() self.area = Area(geo='[]', added_by=users.get_current_user(), type=1, cell=self.cell) self.area.put() def test_list(self): rv = self.app.get('/api/v0/report/' + str(self.r.key()) + '/cell/2_0_0/polygon') js = json.loads(rv.data) self.assertEquals(1, len(js)) def test_create_non_existing_cell(self): rv = self.app.post('/api/v0/report/' + str(self.r.key()) + '/cell/2_1_0/polygon', data='{"paths": "test", "type": 1}') self.assertEquals(2, Area.all().count()) self.assertEquals(4, Cell.all().count()) # check parents exists cell = Cell.all().filter('report =', self.r).filter('x =', 1).filter( 'y =', 0).filter('z =', 2).fetch(1)[0] self.assertEquals('test', cell.get_parent().last_change_by.nickname()) self.assertEquals( 'test', cell.get_parent().get_parent().last_change_by.nickname()) self.assertNotEquals(0, cell.get_parent().last_change_on) def test_create(self): rv = self.app.post('/api/v0/report/' + str(self.r.key()) + '/cell/2_0_0/polygon', data='{"paths": "[]", "type": 1}') self.assertEquals(2, Area.all().count()) rv = self.app.get('/api/v0/report/' + str(self.r.key()) + '/cell/2_0_0/polygon') js = json.loads(rv.data) self.assertEquals(2, len(js)) def test_update(self): rv = self.app.put('/api/v0/report/' + str(self.r.key()) + '/cell/2_0_0/polygon/' + str(self.area.key()), data='{"paths": "[[1, 2, 3]]", "type": 100}') self.assertEquals(1, Area.all().count()) a = Area.get(self.area.key()) self.assertEquals(100, a.type) self.assertEquals("\"[[1, 2, 3]]\"", a.geo) js = json.loads(rv.data) self.assertEquals(100, js['type']) self.assertEquals("[[1, 2, 3]]", js['paths']) def test_delete(self): rv = self.app.delete('/api/v0/report/' + str(self.r.key()) + '/cell/2_0_0/polygon/' + str(self.area.key())) self.assertEquals(0, Area.all().count())