diff options
author | Quentin André <quentin.andre@imt-atlantique.net> | 2021-07-15 18:05:13 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-07-08 09:58:48 +0200 |
commit | 4da8517599a8941fd622bb8b152db590ec0e543a (patch) | |
tree | e6bb7a04180a078c530a01db55bdc7facb322205 /archaeological_finds/tests.py | |
parent | b646952ea8523f79e82b6b618a87dee80d9b6bf1 (diff) | |
download | Ishtar-4da8517599a8941fd622bb8b152db590ec0e543a.tar.bz2 Ishtar-4da8517599a8941fd622bb8b152db590ec0e543a.zip |
better tests and beginning operations
Diffstat (limited to 'archaeological_finds/tests.py')
-rw-r--r-- | archaeological_finds/tests.py | 339 |
1 files changed, 168 insertions, 171 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py index f6d436ebe..b04fa085a 100644 --- a/archaeological_finds/tests.py +++ b/archaeological_finds/tests.py @@ -2526,13 +2526,13 @@ class GeomaticTest(FindInit, TestCase): profile.save() find = self.finds[0] - base_find = find.base_finds.all()[0] + base_find_pt = find.base_finds.all()[0] srs, __ = SpatialReferenceSystem.objects.get_or_create( txt_idx="wgs84", defaults={"srid": 4326, "label": "WGS84", "auth_name": "EPSG"}, ) - base_find_pt = models.BaseFind.objects.get(pk=base_find.pk) + base_find_pt = models.BaseFind.objects.get(pk=base_find_pt.pk) # with point geom = GEOSGeometry("POINT({} {} {})".format(2, 43, 1), srid=4326) @@ -2540,46 +2540,46 @@ class GeomaticTest(FindInit, TestCase): base_find_pt.multi_polygon = None base_find_pt.save() base_find_pt = models.BaseFind.objects.get(pk=base_find_pt.pk) - dic = { + dic_pt_t = { "type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": []}, } res = base_find_pt.get_geo_items(get_polygons=True) - self.assertEqual(dic, res) - dic["geometry"] = {"type": "Point", "coordinates": [2.0, 43.0]} + self.assertEqual(dic_pt_t, res) + dic_pt_f = copy.deepcopy(dic_pt_t) + dic_pt_f["geometry"] = {"type": "Point", "coordinates": [2.0, 43.0]} res = base_find_pt.get_geo_items(get_polygons=False) - self.assertEqual(dic, res) + self.assertEqual(dic_pt_f, res) # test API with point - find = models.BaseFind.objects.all()[0] response = self.client.get(reverse("api-get-geo-point", kwargs={"pk": 0})) self.assertEqual(response.status_code, 404) - response = self.client.get(reverse("api-get-geo-point", kwargs={"pk": find.pk})) + response = self.client.get(reverse("api-get-geo-point", kwargs={"pk": base_find_pt.pk})) self.assertEqual(response.status_code, 200) - self.assertIn(json.dumps(dic).encode("utf-8"), response.content) - - # test context record with point for base find - cr = ContextRecord.objects.get(pk=base_find_pt.context_record.pk) - pk = cr.pk - cr.point = geom - cr.multi_polygon = None - cr.multi_polygon_source = None - cr.multi_polygon_source_item = None - cr.save() - cr = ContextRecord.objects.get(pk=pk) - - dic_copy = copy.deepcopy(dic) - dic["properties"] = {"associated base finds": {"Find 1": dic_copy}} - self.assertEqual(dic, cr.get_geo_items(False)) - - dic2_copy = copy.deepcopy(dic_copy) - dic2_copy["geometry"] = {"type": "MultiPolygon", "coordinates": []} - dic2 = { + self.assertIn(json.dumps(dic_pt_f).encode("utf-8"), response.content) + + # test context record with point as base find + cr_pt_pt = ContextRecord.objects.get(pk=base_find_pt.context_record.pk) + pk = cr_pt_pt.pk + cr_pt_pt.point = geom + cr_pt_pt.multi_polygon = None + cr_pt_pt.multi_polygon_source = None + cr_pt_pt.multi_polygon_source_item = None + cr_pt_pt.save() + cr_pt_pt = ContextRecord.objects.get(pk=pk) + + dic_pt_f_copy = copy.deepcopy(dic_pt_f) + dic_pt_pt_f = copy.deepcopy(dic_pt_f) + dic_pt_pt_f["properties"] = {"associated base finds": {"Find 1": dic_pt_f_copy}} + self.assertEqual(dic_pt_pt_f, cr_pt_pt.get_geo_items(False)) + + dic_pt_t_copy = copy.deepcopy(dic_pt_t) + dic_pt_pt_t = { "type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": []}, - "properties": {"associated base finds": {"Find 1": dic2_copy}}, + "properties": {"associated base finds": {"Find 1": dic_pt_t_copy}}, } - self.assertEqual(dic2, cr.get_geo_items(True)) + self.assertEqual(dic_pt_pt_t, cr_pt_pt.get_geo_items(True)) # test of API for point context record with point as base find response = self.client.get( @@ -2588,11 +2588,11 @@ class GeomaticTest(FindInit, TestCase): self.assertEqual(response.status_code, 404) response = self.client.get( reverse( - "api-get-geo-points-from-context", kwargs={"context_record_pk": cr.pk} + "api-get-geo-points-from-context", kwargs={"context_record_pk": cr_pt_pt.pk} ) ) self.assertEqual(response.status_code, 200) - self.assertIn(json.dumps(dic).encode("utf-8"), response.content) + self.assertIn(json.dumps(dic_pt_pt_f).encode("utf-8"), response.content) response = self.client.get( reverse( @@ -2602,18 +2602,18 @@ class GeomaticTest(FindInit, TestCase): self.assertEqual(response.status_code, 404) response = self.client.get( reverse( - "api-get-geo-polygons-from-context", kwargs={"context_record_pk": cr.pk} + "api-get-geo-polygons-from-context", kwargs={"context_record_pk": cr_pt_pt.pk} ) ) self.assertEqual(response.status_code, 200) - self.assertIn(json.dumps(dic2).encode("utf-8"), response.content) + self.assertIn(json.dumps(dic_pt_pt_t).encode("utf-8"), response.content) # the context record is a multi-polygon limit = ( "MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2))," "((6 3,9 2,9 4,6 3)))" ) - dict_poly = { + dic_poly_t = { "type": "Feature", "geometry": { "type": "MultiPolygon", @@ -2627,27 +2627,28 @@ class GeomaticTest(FindInit, TestCase): }, } - cr = ContextRecord.objects.get(pk=base_find.context_record.pk) - pk = cr.pk - cr.multi_polygon = "SRID=4326;" + limit - cr.multi_polygon_source = "P" - cr.multi_polygon_source_item = str(ContextRecord._meta.verbose_name) - cr.save() - cr = ContextRecord.objects.get(pk=pk) + cr_poly_pt = ContextRecord.objects.get(pk=base_find_pt.context_record.pk) + pk = cr_poly_pt.pk + cr_poly_pt.multi_polygon = "SRID=4326;" + limit + cr_poly_pt.multi_polygon_source = "P" + cr_poly_pt.multi_polygon_source_item = str(ContextRecord._meta.verbose_name) + cr_poly_pt.save() + cr_poly_pt = ContextRecord.objects.get(pk=pk) - dic_poly_based = copy.deepcopy(dict_poly) - dic_poly_based["properties"] = {"associated base finds": {"Find 1": dic2_copy}} - self.assertEqual(dic_poly_based, cr.get_geo_items(True)) + dic_poly_pt_t = copy.deepcopy(dic_poly_t) + dic_poly_pt_t["properties"] = {"associated base finds": {"Find 1": dic_pt_t}} + self.assertEqual(dic_poly_pt_t, cr_poly_pt.get_geo_items(True)) - dict_centroid = { + dic_poly_f = { "type": "Feature", "geometry": {"type": "Point", "coordinates": [3.86111, 3.02778]}, } - dic_poly_centroid_based = copy.deepcopy(dict_centroid) - dic_poly_centroid_based["properties"] = { - "associated base finds": {"Find 1": dic_copy} + dic_pt_f_copy = copy.deepcopy(dic_pt_f) + dic_poly_pt_f = copy.deepcopy(dic_poly_f) + dic_poly_pt_f["properties"] = { + "associated base finds": {"Find 1": dic_pt_f_copy} } - self.assertEqual(dic_poly_centroid_based, cr.get_geo_items(False)) + self.assertEqual(dic_poly_pt_f, cr_poly_pt.get_geo_items(False)) # test of API for point context record with multipolygon as base find response = self.client.get( @@ -2656,12 +2657,12 @@ class GeomaticTest(FindInit, TestCase): self.assertEqual(response.status_code, 404) response = self.client.get( reverse( - "api-get-geo-points-from-context", kwargs={"context_record_pk": cr.pk} + "api-get-geo-points-from-context", kwargs={"context_record_pk": cr_poly_pt.pk} ) ) self.assertEqual(response.status_code, 200) self.assertIn( - json.dumps(dic_poly_centroid_based).encode("utf-8"), response.content + json.dumps(dic_poly_pt_f).encode("utf-8"), response.content ) response = self.client.get( @@ -2672,26 +2673,30 @@ class GeomaticTest(FindInit, TestCase): self.assertEqual(response.status_code, 404) response = self.client.get( reverse( - "api-get-geo-polygons-from-context", kwargs={"context_record_pk": cr.pk} + "api-get-geo-polygons-from-context", kwargs={"context_record_pk": cr_poly_pt.pk} ) ) self.assertEqual(response.status_code, 200) - self.assertIn(json.dumps(dic_poly_based).encode("utf-8"), response.content) + self.assertIn(json.dumps(dic_poly_pt_t).encode("utf-8"), response.content) - # with multi-polygon for base find - base_find = models.BaseFind.objects.get(pk=base_find.pk) - base_find.multi_polygon = "SRID=4326;" + limit - base_find.point_source = None - base_find.point_2d = None - base_find.point = None - base_find.save() - - base_find = models.BaseFind.objects.get(pk=base_find.pk) - - res_poly = base_find.get_geo_items(get_polygons=True) - self.assertEqual(dict_poly, res_poly) - res_centroid = base_find.get_geo_items(get_polygons=False) - self.assertEqual(dict_centroid, res_centroid) + # we add a base find which is a multi-polygon + default = { + "label": "Find 2", + "history_modifier": base_find_pt.history_modifier, + "context_record": base_find_pt.context_record, + } + base_find_poly = models.BaseFind.objects.create(**default) + base_find_poly.multi_polygon = "SRID=4326;" + limit + base_find_poly.point_source = None + base_find_poly.point_2d = None + base_find_poly.point = None + base_find_poly.save() + base_find_poly = models.BaseFind.objects.get(pk=base_find_poly.pk) + + res_poly = base_find_poly.get_geo_items(get_polygons=True) + self.assertEqual(dic_poly_t, res_poly) + res_centroid = base_find_poly.get_geo_items(get_polygons=False) + self.assertEqual(dic_poly_f, res_centroid) # test API with polygon response = self.client.get(reverse("api-get-geo-polygons", kwargs={"pk": 0})) @@ -2699,94 +2704,76 @@ class GeomaticTest(FindInit, TestCase): response = self.client.get( reverse( "api-get-geo-polygons", - kwargs={"pk": base_find.pk}, + kwargs={"pk": base_find_poly.pk}, ) ) self.assertEqual(response.status_code, 200) - self.assertIn(json.dumps(dict_poly).encode("utf-8"), response.content) + self.assertIn(json.dumps(dic_poly_t).encode("utf-8"), response.content) response = self.client.get( reverse( "api-get-geo-point", - kwargs={"pk": base_find.pk}, + kwargs={"pk": base_find_poly.pk}, ) ) self.assertEqual(response.status_code, 200) - self.assertIn(json.dumps(dict_centroid).encode("utf-8"), response.content) - - # context record is a polygon (and base find also) - cr = ContextRecord.objects.get(pk=base_find.context_record.pk) - pk = cr.pk - cr.multi_polygon = "SRID=4326;" + limit - cr.multi_polygon_source = "P" - cr.multi_polygon_source_item = str(ContextRecord._meta.verbose_name) - cr.save() - cr = ContextRecord.objects.get(pk=pk) - - dict_poly_copy = copy.deepcopy(dict_poly) - dict_poly["properties"] = {"associated base finds": {"Find 1": dict_poly_copy}} - self.assertEqual(dict_poly, cr.get_geo_items(True)) - - dict_centroid_copy = copy.deepcopy(dict_centroid) - dict_centroid["properties"] = { - "associated base finds": {"Find 1": dict_centroid_copy} + self.assertIn(json.dumps(dic_poly_f).encode("utf-8"), response.content) + + # context record is a polygon + # (and one base find is a point and the other is a polygon) + self.assertEqual(base_find_pt.context_record.pk, base_find_poly.context_record.pk) + cr_poly_poly_and_pt = ContextRecord.objects.get(pk=base_find_pt.context_record.pk) + pk = cr_poly_poly_and_pt.pk + cr_poly_poly_and_pt.multi_polygon = "SRID=4326;" + limit + cr_poly_poly_and_pt.multi_polygon_source = "P" + cr_poly_poly_and_pt.multi_polygon_source_item = str(ContextRecord._meta.verbose_name) + cr_poly_poly_and_pt.save() + cr_poly_poly_and_pt = ContextRecord.objects.get(pk=pk) + + dic_poly_t_copy = copy.deepcopy(dic_poly_t) + dic_poly_poly_and_pt_t = copy.deepcopy(dic_poly_t) + dic_poly_poly_and_pt_t["properties"] = { + "associated base finds": { + "Find 1": dic_pt_t_copy, + "Find 2": dic_poly_t_copy, + } } - self.assertEqual(dict_centroid, cr.get_geo_items(False)) - - # test of API for multipolygon context record with multipolygon as base find - response = self.client.get( - reverse("api-get-geo-points-from-context", kwargs={"context_record_pk": 0}) - ) - self.assertEqual(response.status_code, 404) - response = self.client.get( - reverse( - "api-get-geo-points-from-context", kwargs={"context_record_pk": cr.pk} - ) - ) - self.assertEqual(response.status_code, 200) - self.assertIn(json.dumps(dict_centroid).encode("utf-8"), response.content) - - response = self.client.get( - reverse( - "api-get-geo-polygons-from-context", kwargs={"context_record_pk": 0} - ) - ) - self.assertEqual(response.status_code, 404) - response = self.client.get( - reverse( - "api-get-geo-polygons-from-context", kwargs={"context_record_pk": cr.pk} - ) - ) - self.assertEqual(response.status_code, 200) - self.assertIn(json.dumps(dict_poly).encode("utf-8"), response.content) - - # context record is a point (and base find a polygon) - cr = ContextRecord.objects.get(pk=base_find_pt.context_record.pk) - pk = cr.pk - cr.point = geom - cr.multi_polygon = None - cr.multi_polygon_source = None - cr.multi_polygon_source_item = None - cr.save() - cr = ContextRecord.objects.get(pk=pk) - - dic2["properties"] = {"associated base finds": {"Find 1": dict_poly_copy}} - self.assertEqual(dic2, cr.get_geo_items(True)) + dic_poly_poly_and_pt_t_2 = copy.deepcopy(dic_poly_poly_and_pt_t) + dic_poly_poly_and_pt_t_2['properties']['associated base finds'] = { + "Find 2": dic_poly_t_copy, + "Find 1": dic_pt_t_copy, + } + self.assertEqual(dic_poly_poly_and_pt_t, cr_poly_poly_and_pt.get_geo_items(True)) - dic["properties"] = {"associated base finds": {"Find 1": dict_centroid_copy}} - self.assertEqual(dic, cr.get_geo_items(False)) + dic_poly_f_copy = copy.deepcopy(dic_poly_f) + dic_poly_poly_and_pt_f = copy.deepcopy(dic_poly_f) + dic_poly_poly_and_pt_f["properties"] = { + "associated base finds": { + "Find 1": dic_pt_f_copy, + "Find 2": dic_poly_f_copy, + } + } + dic_poly_poly_and_pt_f_2 = copy.deepcopy(dic_poly_poly_and_pt_f) + dic_poly_poly_and_pt_f_2['properties']['associated base finds'] = { + "Find 2": dic_poly_f_copy, + "Find 1": dic_pt_f_copy, + } + self.assertEqual(dic_poly_poly_and_pt_f, cr_poly_poly_and_pt.get_geo_items(False)) - # test of API for point context record with multipolygon as base find + # test of API for multipolygon context record with a multipolygon and a point as base find response = self.client.get( reverse("api-get-geo-points-from-context", kwargs={"context_record_pk": 0}) ) self.assertEqual(response.status_code, 404) response = self.client.get( reverse( - "api-get-geo-points-from-context", kwargs={"context_record_pk": cr.pk} + "api-get-geo-points-from-context", kwargs={"context_record_pk": cr_poly_poly_and_pt.pk} ) ) self.assertEqual(response.status_code, 200) - self.assertIn(json.dumps(dic).encode("utf-8"), response.content) + try: + self.assertIn(json.dumps(dic_poly_poly_and_pt_f).encode("utf-8"), response.content) + except: + self.assertIn(json.dumps(dic_poly_poly_and_pt_f_2).encode("utf-8"), response.content) response = self.client.get( reverse( @@ -2796,61 +2783,68 @@ class GeomaticTest(FindInit, TestCase): self.assertEqual(response.status_code, 404) response = self.client.get( reverse( - "api-get-geo-polygons-from-context", kwargs={"context_record_pk": cr.pk} + "api-get-geo-polygons-from-context", kwargs={"context_record_pk": cr_poly_poly_and_pt.pk} ) ) self.assertEqual(response.status_code, 200) - self.assertIn(json.dumps(dic2).encode("utf-8"), response.content) - - # context record is a polygon, one base find is a polygon and the other a point - cr = ContextRecord.objects.get(pk=base_find.context_record.pk) - pk = cr.pk - cr.multi_polygon = "SRID=4326;" + limit - cr.multi_polygon_source = "P" - cr.multi_polygon_source_item = str(ContextRecord._meta.verbose_name) - cr.save() - cr = ContextRecord.objects.get(pk=pk) - - default = { - "label": "Find 2", - "history_modifier": base_find.history_modifier, - "context_record": base_find.context_record, - } - base_find_pt = models.BaseFind.objects.create(**default) - base_find_pt.point = geom - base_find_pt.multi_polygon = None - base_find_pt.save() - base_find_pt = models.BaseFind.objects.get(pk=base_find_pt.pk) - self.base_finds.append(base_find_pt) - - dict_poly["properties"] = { + try: + self.assertIn(json.dumps(dic_poly_poly_and_pt_t).encode("utf-8"), response.content) + except: + self.assertIn(json.dumps(dic_poly_poly_and_pt_t_2).encode("utf-8"), response.content) + + # context record is a point, base find 1 a point and base find 2 a polygon + cr_pt_poly_and_pt = ContextRecord.objects.get(pk=base_find_poly.context_record.pk) + pk = cr_pt_poly_and_pt.pk + cr_pt_poly_and_pt.point = geom + cr_pt_poly_and_pt.multi_polygon = None + cr_pt_poly_and_pt.multi_polygon_source = None + cr_pt_poly_and_pt.multi_polygon_source_item = None + cr_pt_poly_and_pt.save() + cr_pt_poly_and_pt = ContextRecord.objects.get(pk=pk) + + dic_pt_poly_and_pt_t = copy.deepcopy(dic_pt_pt_t) + dic_pt_poly_and_pt_t["properties"] = { "associated base finds": { - "Find 2": dic2_copy, - "Find 1": dict_poly_copy, + "Find 2": dic_poly_t_copy, + "Find 1": dic_pt_t_copy, } } - self.assertEqual(dict_poly, cr.get_geo_items(True)) + dic_pt_poly_and_pt_t_2 = copy.deepcopy(dic_pt_poly_and_pt_t) + dic_pt_poly_and_pt_t["properties"]["associated base finds"] = { + "Find 1": dic_pt_t_copy, + "Find 2": dic_poly_t_copy, + } + self.assertEqual(dic_pt_poly_and_pt_t, cr_pt_poly_and_pt.get_geo_items(True)) - dict_centroid["properties"] = { + dic_pt_poly_and_pt_f = copy.deepcopy(dic_pt_pt_f) + dic_pt_poly_and_pt_f["properties"] = { "associated base finds": { - "Find 2": dic_copy, - "Find 1": dict_centroid_copy, + "Find 1": dic_pt_f_copy, + "Find 2": dic_poly_f_copy, } } - self.assertEqual(dict_centroid, cr.get_geo_items(False)) + dic_pt_poly_and_pt_f_2 = copy.deepcopy(dic_pt_poly_and_pt_f) + dic_pt_poly_and_pt_f["properties"]["associated base finds"] = { + "Find 2": dic_poly_f_copy, + "Find 1": dic_pt_f_copy, + } + self.assertEqual(dic_pt_poly_and_pt_f, cr_pt_poly_and_pt.get_geo_items(False)) - # test of API for multipolygon context record with a multipolygon and a point as base find + # test of API for point context record with multipolygon as base find response = self.client.get( reverse("api-get-geo-points-from-context", kwargs={"context_record_pk": 0}) ) self.assertEqual(response.status_code, 404) response = self.client.get( reverse( - "api-get-geo-points-from-context", kwargs={"context_record_pk": cr.pk} + "api-get-geo-points-from-context", kwargs={"context_record_pk": cr_pt_poly_and_pt.pk} ) ) self.assertEqual(response.status_code, 200) - self.assertIn(json.dumps(dict_centroid).encode("utf-8"), response.content) + try: + self.assertIn(json.dumps(dic_pt_poly_and_pt_f).encode("utf-8"), response.content) + except: + self.assertIn(json.dumps(dic_pt_poly_and_pt_f_2).encode("utf-8"), response.content) response = self.client.get( reverse( @@ -2860,11 +2854,14 @@ class GeomaticTest(FindInit, TestCase): self.assertEqual(response.status_code, 404) response = self.client.get( reverse( - "api-get-geo-polygons-from-context", kwargs={"context_record_pk": cr.pk} + "api-get-geo-polygons-from-context", kwargs={"context_record_pk": cr_pt_poly_and_pt.pk} ) ) self.assertEqual(response.status_code, 200) - self.assertIn(json.dumps(dict_poly).encode("utf-8"), response.content) + try: + self.assertIn(json.dumps(dic_pt_poly_and_pt_t).encode("utf-8"), response.content) + except: + self.assertIn(json.dumps(dic_pt_poly_and_pt_t_2).encode("utf-8"), response.content) |