def test_update_cache_version_wp_as_main_wp(self): waypoint1 = Waypoint(waypoint_type='summit') waypoint2 = Waypoint(waypoint_type='summit') waypoint3 = Waypoint(waypoint_type='summit') waypoint_unrelated = Waypoint(waypoint_type='summit') route = Route(main_waypoint=waypoint1, activities=['skitouring']) self.session.add_all( [waypoint1, waypoint2, waypoint3, waypoint_unrelated, route]) self.session.flush() self.session.add(Association.create(waypoint1, route)) self.session.add(Association.create(waypoint2, route)) self.session.add(Association.create(waypoint3, waypoint2)) self.session.flush() update_cache_version(waypoint1) cache_version_wp1 = self.session.query(CacheVersion).get( waypoint1.document_id) cache_version_wp2 = self.session.query(CacheVersion).get( waypoint2.document_id) cache_version_wp3 = self.session.query(CacheVersion).get( waypoint3.document_id) cache_version_route = self.session.query(CacheVersion).get( route.document_id) cache_version_untouched = self.session.query(CacheVersion).get( waypoint_unrelated.document_id) self.assertEqual(cache_version_wp1.version, 3) self.assertEqual(cache_version_wp2.version, 2) self.assertEqual(cache_version_wp3.version, 2) self.assertEqual(cache_version_route.version, 2) self.assertEqual(cache_version_untouched.version, 1)
def test_geometry_update_optimization_4326(self): lat = 46.0 geom1 = 'SRID=4326;POINT(' + str(lat) + ' 6.0)' waypoint_db = Waypoint( document_id=1, waypoint_type='summit', elevation=2203, geometry=DocumentGeometry( document_id=1, geom=geom1 ) ) waypoint_in = Waypoint( document_id=1, waypoint_type='summit', elevation=1234, geometry=DocumentGeometry( geom='SRID=4326;POINT(' + str(lat + 10**(-8)) + ' 6.0)') ) waypoint_db.update(waypoint_in) self.assertEqual(waypoint_db.geometry.geom, geom1) waypoint_in = Waypoint( document_id=1, waypoint_type='summit', elevation=1234, geometry=DocumentGeometry( geom='SRID=4326;POINT(' + str(lat + 10**(-7)) + ' 6.0)') ) waypoint_db.update(waypoint_in) self.assertNotEqual(waypoint_db.geometry.geom, geom1)
def test_update_cache_version_for_map(self): waypoint = Waypoint(waypoint_type='summit') waypoint_unrelated = Waypoint(waypoint_type='summit') topo_map = TopoMap() self.session.add_all([waypoint, waypoint_unrelated, topo_map]) self.session.flush() self.session.add( TopoMapAssociation(document_id=waypoint.document_id, topo_map_id=topo_map.document_id)) self.session.flush() update_cache_version_for_map(topo_map) cache_version_waypoint = self.session.query(CacheVersion).get( waypoint.document_id) cache_version_untouched = self.session.query(CacheVersion).get( waypoint_unrelated.document_id) cache_version_map = self.session.query(CacheVersion).get( topo_map.document_id) self.assertEqual(cache_version_waypoint.version, 2) self.assertEqual(cache_version_untouched.version, 1) # the cache key of the map is also not updated! self.assertEqual(cache_version_map.version, 1)
def test_update_cache_version_wp_with_associations(self): waypoint1 = Waypoint(waypoint_type='summit') waypoint2 = Waypoint(waypoint_type='summit') waypoint3 = Waypoint(waypoint_type='summit') waypoint_unrelated = Waypoint(waypoint_type='summit') self.session.add_all( [waypoint1, waypoint2, waypoint3, waypoint_unrelated]) self.session.flush() self.session.add(Association.create(waypoint1, waypoint2)) self.session.add(Association.create(waypoint3, waypoint1)) self.session.flush() update_cache_version(waypoint1) cache_version1 = self.session.query(CacheVersion).get( waypoint1.document_id) cache_version2 = self.session.query(CacheVersion).get( waypoint1.document_id) cache_version3 = self.session.query(CacheVersion).get( waypoint1.document_id) cache_version_untouched = self.session.query(CacheVersion).get( waypoint_unrelated.document_id) self.assertEqual(cache_version1.version, 2) self.assertEqual(cache_version2.version, 2) self.assertEqual(cache_version3.version, 2) self.assertEqual(cache_version_untouched.version, 1)
def test_update_cache_version_associations_removed_wp(self): waypoint1 = Waypoint(waypoint_type='summit') waypoint2 = Waypoint(waypoint_type='summit') waypoint3 = Waypoint(waypoint_type='summit') waypoint_unrelated = Waypoint(waypoint_type='summit') self.session.add_all( [waypoint1, waypoint2, waypoint3, waypoint_unrelated]) self.session.flush() update_cache_version_associations([], [{ 'parent_id': waypoint1.document_id, 'parent_type': WAYPOINT_TYPE, 'child_id': waypoint2.document_id, 'child_type': WAYPOINT_TYPE }, { 'parent_id': waypoint3.document_id, 'parent_type': WAYPOINT_TYPE, 'child_id': waypoint1.document_id, 'child_type': WAYPOINT_TYPE }]) cache_version1 = self.session.query(CacheVersion).get( waypoint1.document_id) cache_version2 = self.session.query(CacheVersion).get( waypoint2.document_id) cache_version3 = self.session.query(CacheVersion).get( waypoint3.document_id) cache_version_untouched = self.session.query(CacheVersion).get( waypoint_unrelated.document_id) self.assertEqual(cache_version1.version, 2) self.assertEqual(cache_version2.version, 2) self.assertEqual(cache_version3.version, 2) self.assertEqual(cache_version_untouched.version, 1)
def test_update_cache_version_for_area(self): waypoint = Waypoint(waypoint_type='summit') waypoint_unrelated = Waypoint(waypoint_type='summit') area = Area() self.session.add_all([waypoint, waypoint_unrelated, area]) self.session.flush() self.session.add( AreaAssociation(document_id=waypoint.document_id, area_id=area.document_id)) self.session.flush() update_cache_version_for_area(area) cache_version_waypoint = self.session.query(CacheVersion).get( waypoint.document_id) cache_version_untouched = self.session.query(CacheVersion).get( waypoint_unrelated.document_id) cache_version_area = self.session.query(CacheVersion).get( area.document_id) self.assertEqual(cache_version_waypoint.version, 2) self.assertEqual(cache_version_untouched.version, 1) # the cache key of the area is also not updated! self.assertEqual(cache_version_area.version, 1)
def setUp(self): # noqa super(TestSitemapXml, self).setUp() self._prefix = '/sitemaps.xml' self.ui_url = 'https://www.camptocamp.org' self.schema_url = '{http://www.sitemaps.org/schemas/sitemap/0.9}' self.waypoint1 = Waypoint( waypoint_type='summit', elevation=2000, locales=[WaypointLocale(lang='fr', title='Dent de Crolles')]) self.session.add(self.waypoint1) self.waypoint2 = Waypoint(waypoint_type='summit', elevation=4985, locales=[ WaypointLocale(lang='en', title='Mont Blanc'), WaypointLocale(lang='fr', title='Mont Blanc') ]) self.session.add(self.waypoint2) self.route = Route(activities=['skitouring'], elevation_max=1500, elevation_min=700, locales=[ RouteLocale(lang='fr', title='Mont Blanc du ciel', title_prefix='Mont Blanc') ]) self.session.add(self.route) self.session.flush()
def test_update_cache_version_route(self): route1 = Route(activities=['skitouring']) route2 = Route(activities=['skitouring']) waypoint1 = Waypoint(waypoint_type='summit') waypoint2 = Waypoint(waypoint_type='summit') waypoint_unrelated = Waypoint(waypoint_type='summit') self.session.add_all( [waypoint1, waypoint2, waypoint_unrelated, route1, route2]) self.session.flush() self.session.add(Association.create(waypoint1, route1)) self.session.add(Association.create(route2, route1)) self.session.add(Association.create(waypoint2, waypoint1)) self.session.flush() update_cache_version(route1) cache_version_route1 = self.session.query(CacheVersion).get( route1.document_id) cache_version_route2 = self.session.query(CacheVersion).get( route2.document_id) cache_version_wp1 = self.session.query(CacheVersion).get( waypoint1.document_id) cache_version_wp2 = self.session.query(CacheVersion).get( waypoint2.document_id) cache_version_untouched = self.session.query(CacheVersion).get( waypoint_unrelated.document_id) self.assertEqual(cache_version_route1.version, 2) self.assertEqual(cache_version_route2.version, 2) self.assertEqual(cache_version_wp1.version, 3) self.assertEqual(cache_version_wp2.version, 2) self.assertEqual(cache_version_untouched.version, 1)
def setUp(self): # noqa super(BaseProtectTest, self).setUp() self.waypoint = Waypoint(waypoint_type='summit', elevation=2203) self.locale = WaypointLocale(lang='en', title='Mont Granier', description='...') self.waypoint.locales.append(self.locale) self.waypoint.geometry = DocumentGeometry( geom='SRID=3857;POINT(635956 5723604)') self.session.add(self.waypoint) self.waypoint2 = Waypoint(protected=True, waypoint_type='summit', elevation=2203) self.locale2 = WaypointLocale(lang='en', title='Mont Granier2', description='...') self.waypoint2.locales.append(self.locale2) self.waypoint2.geometry = DocumentGeometry( geom='SRID=3857;POINT(635956 5723604)') self.session.add(self.waypoint2) self.session.flush()
def setUp(self): # noqa super(BaseProtectTest, self).setUp() contributor_id = self.global_userids['contributor'] self.waypoint = Waypoint(waypoint_type='summit', elevation=2203) self.locale = WaypointLocale(lang='en', title='Mont Granier', description='...') self.waypoint.locales.append(self.locale) self.waypoint.geometry = DocumentGeometry( geom='SRID=3857;POINT(635956 5723604)') self.session.add(self.waypoint) self.session.flush() DocumentRest.create_new_version(self.waypoint, contributor_id) self.waypoint2 = Waypoint(protected=True, waypoint_type='summit', elevation=2203) self.locale2 = WaypointLocale(lang='en', title='Mont Granier2', description='...') self.waypoint2.locales.append(self.locale2) self.waypoint2.geometry = DocumentGeometry( geom='SRID=3857;POINT(635956 5723604)') self.session.add(self.waypoint2) self.session.flush() DocumentRest.create_new_version(self.waypoint2, contributor_id) self.session.flush()
def setUp(self): # noqa super(TestSitemapRest, self).setUp() self._prefix = '/sitemaps' self.waypoint1 = Waypoint( waypoint_type='summit', elevation=2000, locales=[WaypointLocale(lang='fr', title='Dent de Crolles')]) self.session.add(self.waypoint1) self.waypoint2 = Waypoint(waypoint_type='summit', elevation=4985, locales=[ WaypointLocale(lang='en', title='Mont Blanc'), WaypointLocale(lang='fr', title='Mont Blanc') ]) self.session.add(self.waypoint2) self.route = Route(activities=['skitouring'], elevation_max=1500, elevation_min=700, locales=[ RouteLocale(lang='fr', title='Mont Blanc du ciel', title_prefix='Mont Blanc') ]) self.session.add(self.route) self.session.flush()
def _add_test_data(self): self.article1 = Article(categories=['site_info'], activities=['hiking'], article_type='collab') self.locale_en = DocumentLocale(lang='en', title='Lac d\'Annecy') self.locale_fr = DocumentLocale(lang='fr', title='Lac d\'Annecy') self.article1.locales.append(self.locale_en) self.article1.locales.append(self.locale_fr) self.session.add(self.article1) self.session.flush() user_id = self.global_userids['contributor'] DocumentRest.create_new_version(self.article1, user_id) self.article1_version = self.session.query(DocumentVersion). \ filter(DocumentVersion.document_id == self.article1.document_id). \ filter(DocumentVersion.lang == 'en').first() self.article2 = Article(categories=['site_info'], activities=['hiking'], article_type='collab') self.session.add(self.article2) self.article3 = Article(categories=['site_info'], activities=['hiking'], article_type='collab') self.session.add(self.article3) self.article4 = Article(categories=['site_info'], activities=['hiking'], article_type='personal') self.article4.locales.append( DocumentLocale(lang='en', title='Lac d\'Annecy')) self.article4.locales.append( DocumentLocale(lang='fr', title='Lac d\'Annecy')) self.session.add(self.article4) self.session.flush() DocumentRest.create_new_version(self.article4, user_id) self.article4_version = self.session.query(DocumentVersion). \ filter(DocumentVersion.document_id == self.article4.document_id). \ filter(DocumentVersion.lang == 'en').first() self.waypoint1 = Waypoint(waypoint_type='summit', elevation=2203) self.session.add(self.waypoint1) self.waypoint2 = Waypoint( waypoint_type='climbing_outdoor', elevation=2, rock_types=[], geometry=DocumentGeometry(geom='SRID=3857;POINT(635956 5723604)')) self.session.add(self.waypoint2) self.session.flush() self.session.add( Association.create(parent_document=self.article1, child_document=self.article4)) self.session.add( Association.create(parent_document=self.article3, child_document=self.article1)) self.session.flush()
def _add_test_data(self): self.waypoint = Waypoint(waypoint_type='summit', elevation=2203) self.locale_en = WaypointLocale(lang='en', title='Mont Granier', description='...', access='yep') self.waypoint.locales.append(self.locale_en) self.waypoint.geometry = DocumentGeometry( geom='SRID=3857;POINT(635956 5723604)') self.session.add(self.waypoint) self.waypoint_with_topic = Waypoint(waypoint_type='summit', elevation=2203) document_topic = DocumentTopic(topic_id=1) self.locale_en_with_topic = WaypointLocale( lang='en', title='Mont Granier', description='...', access='yep', document_topic=document_topic) self.waypoint_with_topic.locales.append(self.locale_en_with_topic) self.waypoint_with_topic.geometry = DocumentGeometry( geom='SRID=3857;POINT(635956 5723604)') self.session.add(self.waypoint_with_topic) self.image = Image(filename='image.jpg', activities=['paragliding'], height=1500, image_type='collaborative') self.image_locale_en = DocumentLocale(lang='en', title='', description='') self.image.locales.append(self.image_locale_en) self.image.geometry = DocumentGeometry( geom='SRID=3857;POINT(635956 5723604)') self.session.add(self.image) self.outing = Outing(activities=['skitouring'], date_start=datetime.date(2016, 1, 1), date_end=datetime.date(2016, 1, 1), locales=[ OutingLocale( lang='en', title='Mont Granier / skitouring') ]) self.session.add(self.outing) self.session.flush() for user_id in (self.global_userids['contributor'], self.global_userids['contributor2']): self.session.add( Association(parent_document_id=user_id, parent_document_type=USERPROFILE_TYPE, child_document_id=self.outing.document_id, child_document_type=OUTING_TYPE)) self.session.flush()
def _add_test_data(self): self.waypoint1 = Waypoint( waypoint_type='summit', elevation=2203) self.session.add(self.waypoint1) self.waypoint2 = Waypoint( waypoint_type='summit', elevation=200) self.session.add(self.waypoint2) self.route1 = Route(activities=['skitouring']) self.session.add(self.route1) self.session.flush()
def setUp(self): # noqa BaseTestCase.setUp(self) self.waypoint1 = Waypoint(waypoint_type='summit') self.waypoint2 = Waypoint(waypoint_type='summit') self.route1 = Route(activities=['hiking']) self.route2 = Route(activities=['hiking']) self.user_profile1 = UserProfile() self.user_profile2 = UserProfile() self.session.add_all([ self.waypoint1, self.waypoint2, self.route1, self.route2, self.user_profile1, self.user_profile2 ]) self.session.flush()
def setUp(self): # noqa BaseTestCase.setUp(self) self.area1 = Area( area_type='range', geometry=DocumentGeometry( geom_detail= 'SRID=3857;POLYGON((668518.249382151 5728802.39591739,668518.249382151 5745465.66808356,689156.247019149 5745465.66808356,689156.247019149 5728802.39591739,668518.249382151 5728802.39591739))' ) # noqa ) self.session.add(self.area1) self.session.flush() self.area2 = Area( area_type='range', redirects_to=self.area1.document_id, geometry=DocumentGeometry( geom_detail= 'SRID=3857;POLYGON((668518.249382151 5728802.39591739,668518.249382151 5745465.66808356,689156.247019149 5745465.66808356,689156.247019149 5728802.39591739,668518.249382151 5728802.39591739))' ) # noqa ) # wp inside the area self.waypoint1 = Waypoint( waypoint_type='summit', geometry=DocumentGeometry( geom='SRID=3857;POINT(677461.381691516 5740879.44638645)')) # wp outside the area self.waypoint2 = Waypoint( waypoint_type='summit', geometry=DocumentGeometry( geom='SRID=3857;POINT(693666.031687976 5741108.7574713)')) # wp without geometry self.waypoint3 = Waypoint(waypoint_type='summit') # wp with empty geometry self.waypoint4 = Waypoint(waypoint_type='summit', geometry=DocumentGeometry()) self.session.add_all([ self.area2, self.waypoint1, self.waypoint2, self.waypoint3, self.waypoint4 ]) self.session.flush() # wp inside the area, but with `redirects_to` (should be ignored) self.waypoint5 = Waypoint( waypoint_type='summit', redirects_to=self.waypoint1.document_id, geometry=DocumentGeometry( geom='SRID=3857;POINT(677461.381691516 5740879.44638645)')) self.session.add(self.waypoint5)
def test_geometry_update_skip_optimization(self): geom1 = 'SRID=3857;POINT(445278.0 334111.0)' waypoint_db = Waypoint( document_id=1, waypoint_type='summit', elevation=2203, geometry=DocumentGeometry( document_id=1, geom=geom1 ) ) waypoint_in = Waypoint( document_id=1, waypoint_type='summit', elevation=1234, geometry=None ) waypoint_db.update(waypoint_in) self.assertEqual(waypoint_db.geometry.geom, geom1)
def test_update_cache_version_user_document_version(self): """ Test that a document is invalidated if a user name of a user that edited one of the document versions is changed. """ waypoint = Waypoint(waypoint_type='summit', elevation=2203, locales=[ WaypointLocale(lang='en', title='...', description='...') ]) user_profile = UserProfile() user = User(name='test_user', username='******', email='*****@*****.**', forum_username='******', password='******', email_validated=True, profile=user_profile) self.session.add_all([waypoint, user_profile, user]) self.session.flush() DocumentRest.create_new_version(waypoint, user.id) update_cache_version(user_profile) cache_version_user_profile = self.session.query(CacheVersion).get( user_profile.document_id) cache_version_waypoint = self.session.query(CacheVersion).get( waypoint.document_id) self.assertEqual(cache_version_waypoint.version, 2) self.assertEqual(cache_version_user_profile.version, 2)
def test_process_task(self): """Tests that the syncer listens to messages and sends changes to ElasticSearch. """ waypoint = Waypoint( document_id=51251, waypoint_type='summit', elevation=2000, geometry=DocumentGeometry( geom='SRID=3857;POINT(635956 5723604)'), locales=[ WaypointLocale( lang='fr', title='Mont Granier', description='...', summary='Le Mont [b]Granier[/b]') ]) self.session.add(waypoint) self.session.flush() user_id = self.global_userids['contributor'] DocumentRest.create_new_version(waypoint, user_id) self.session.flush() t = transaction.begin() notify_es_syncer(self.queue_config) t.commit() syncer = SyncWorker( self.queue_config.connection, self.queue_config.queue, session=self.session) next(syncer.consume(limit=1)) index = elasticsearch_config['index'] doc = SearchWaypoint.get(id=51251, index=index) self.assertEqual(doc['title_fr'], 'Mont Granier') self.assertEqual(doc['summary_fr'], 'Le Mont Granier ') self.assertEqual(doc['doc_type'], 'w')
def test_version_concurrent_edit(self): """Test that a `StaleDataError` is thrown when trying to update a waypoint with an old version number. """ waypoint1 = Waypoint( waypoint_type='summit', elevation=2203, locales=[ WaypointLocale( lang='en', title='A', description='abc') ] ) # add the initial waypoint self.session.add(waypoint1) self.session.flush() self.session.expunge(waypoint1) version1 = waypoint1.version self.assertIsNotNone(version1) # change the waypoint waypoint2 = self.session.query(Waypoint).get(waypoint1.document_id) waypoint2.elevation = 1234 self.session.merge(waypoint2) self.session.flush() version2 = waypoint2.version self.assertNotEqual(version1, version2) self.assertNotEqual(waypoint1.version, waypoint2.version) self.assertNotEqual(waypoint1.elevation, waypoint2.elevation) # then try to update the waypoint again with the old version waypoint1.elevation = 2345 self.assertRaises(StaleDataError, self.session.merge, waypoint1)
def _add_test_data(self): self.map1 = TopoMap(editor='IGN', scale='25000', code='3431OT') self.locale_en = DocumentLocale(lang='en', title='Lac d\'Annecy') self.locale_fr = DocumentLocale(lang='fr', title='Lac d\'Annecy') self.map1.locales.append(self.locale_en) self.map1.locales.append(self.locale_fr) self.map1.geometry = DocumentGeometry( geom_detail='SRID=3857;POLYGON((611774 5706934,611774 5744215,' '642834 5744215,642834 5706934,611774 5706934))') self.session.add(self.map1) self.session.flush() user_id = self.global_userids['contributor'] DocumentRest.create_new_version(self.map1, user_id) self.map2 = TopoMap(editor='IGN', scale='25000', code='3432OT') self.session.add(self.map2) self.map3 = TopoMap(editor='IGN', scale='25000', code='3433OT') self.session.add(self.map3) self.map4 = TopoMap(editor='IGN', scale='25000', code='3434OT') self.map4.locales.append( DocumentLocale(lang='en', title='Lac d\'Annecy')) self.map4.locales.append( DocumentLocale(lang='fr', title='Lac d\'Annecy')) self.session.add(self.map4) self.session.flush() self.waypoint1 = Waypoint( waypoint_type='summit', geometry=DocumentGeometry( geom='SRID=3857;POINT(677461.381691516 5740879.44638645)')) self.waypoint2 = Waypoint( waypoint_type='summit', geometry=DocumentGeometry( geom='SRID=3857;POINT(693666.031687976 5741108.7574713)')) route_geom = 'SRID=3857;LINESTRING(668518 5728802, 668528 5728812)' self.route = Route(activities=['skitouring'], geometry=DocumentGeometry(geom_detail=route_geom)) self.session.add_all([self.waypoint1, self.waypoint2, self.route]) self.session.add( TopoMapAssociation(document=self.waypoint2, topo_map=self.map1)) self.session.flush()
def setUp(self): # noqa super(TestSearchRest, self).setUp() self._prefix = '/search' self.waypoint1 = Waypoint( document_id=534681, waypoint_type='summit', elevation=2000, geometry=DocumentGeometry(geom='SRID=3857;POINT(635956 5723604)'), locales=[ WaypointLocale(lang='fr', title='Dent de Crolles', description='...', summary='La Dent de Crolles'), WaypointLocale(lang='en', title='Dent de Crolles', description='...', summary='The Dent de Crolles') ]) self.session.add(self.waypoint1) self.session.add( Waypoint(document_id=534682, waypoint_type='summit', elevation=4985, geometry=DocumentGeometry( geom='SRID=3857;POINT(635956 5723604)'), locales=[ WaypointLocale(lang='en', title='Mont Blanc', description='...', summary='The heighest point in Europe') ])) self.session.add( Route(document_id=534683, activities=['skitouring'], elevation_max=1500, elevation_min=700, locales=[ RouteLocale(lang='fr', title='Mont Blanc du ciel', description='...', summary='Ski') ])) self.session.flush() fill_index(self.session) # make sure the search index is built force_search_index()
def test_update(self): waypoint_db = Waypoint(document_id=1, waypoint_type='summit', elevation=2203, version=123, locales=[ WaypointLocale(id=2, culture='en', title='A', description='abc', version=345), WaypointLocale(id=3, culture='fr', title='B', description='bcd', version=678), ], geometry=DocumentGeometry( id=4, geom='SRID=3857;POINT(1 2)')) waypoint_in = Waypoint( document_id=1, waypoint_type='summit', elevation=1234, version=123, locales=[ WaypointLocale(id=2, culture='en', title='C', description='abc', version=345), WaypointLocale(culture='es', title='D', description='efg'), ], geometry=DocumentGeometry(geom='SRID=3857;POINT(3 4)')) waypoint_db.update(waypoint_in) self.assertEqual(waypoint_db.elevation, waypoint_in.elevation) self.assertEqual(len(waypoint_db.locales), 3) locale_en = waypoint_db.get_locale('en') locale_fr = waypoint_db.get_locale('fr') locale_es = waypoint_db.get_locale('es') self.assertEqual(locale_en.title, 'C') self.assertEqual(locale_fr.title, 'B') self.assertEqual(locale_es.title, 'D') self.assertEqual(waypoint_db.geometry.geom, 'SRID=3857;POINT(3 4)')
def test_array_handling_non_empty(self): waypoint = Waypoint( waypoint_type='summit', elevation=2203, rock_types=['basalte']) self.session.add(waypoint) self.session.flush() self.session.refresh(waypoint) self.assertEqual(waypoint.rock_types, ['basalte'])
def test_array_handling_none(self): waypoint = Waypoint( waypoint_type='summit', elevation=2203, rock_types=None) self.session.add(waypoint) self.session.flush() self.session.refresh(waypoint) self.assertEqual(waypoint.rock_types, None)
def _add_test_data(self): self.area1 = Area(area_type='range') self.locale_en = DocumentLocale(lang='en', title='Chartreuse') self.locale_fr = DocumentLocale(lang='fr', title='Chartreuse') self.area1.locales.append(self.locale_en) self.area1.locales.append(self.locale_fr) self.area1.geometry = DocumentGeometry( geom_detail= 'SRID=3857;POLYGON((668518.249382151 5728802.39591739,668518.249382151 5745465.66808356,689156.247019149 5745465.66808356,689156.247019149 5728802.39591739,668518.249382151 5728802.39591739))' # noqa ) self.session.add(self.area1) self.session.flush() user_id = self.global_userids['contributor'] DocumentRest.create_new_version(self.area1, user_id) self.area2 = Area(area_type='range') self.session.add(self.area2) self.area3 = Area(area_type='range') self.session.add(self.area3) self.area4 = Area(area_type='admin_limits') self.area4.locales.append(DocumentLocale(lang='en', title='Isère')) self.area4.locales.append(DocumentLocale(lang='fr', title='Isère')) self.session.add(self.area4) self.waypoint1 = Waypoint( waypoint_type='summit', geometry=DocumentGeometry( geom='SRID=3857;POINT(677461.381691516 5740879.44638645)')) self.waypoint2 = Waypoint( waypoint_type='summit', geometry=DocumentGeometry( geom='SRID=3857;POINT(693666.031687976 5741108.7574713)')) route_geom = 'SRID=3857;LINESTRING(668518 5728802, 668528 5728812)' self.route = Route(activities=['skitouring'], geometry=DocumentGeometry(geom_detail=route_geom)) self.session.add_all([self.waypoint1, self.waypoint2, self.route]) self.session.add( AreaAssociation(document=self.waypoint2, area=self.area1)) self.session.flush()
def test_update_cache_version_associations_removed_route_outing(self): waypoint1 = Waypoint(waypoint_type='summit') waypoint2 = Waypoint(waypoint_type='summit') waypoint3 = Waypoint(waypoint_type='summit') waypoint_unrelated = Waypoint(waypoint_type='summit') route = Route(activities=['skitouring']) outing = Outing(activities=['skitouring'], date_start=datetime.date(2016, 2, 1), date_end=datetime.date(2016, 2, 1)) self.session.add_all([ waypoint1, waypoint2, waypoint3, waypoint_unrelated, route, outing ]) self.session.flush() self.session.add(Association.create(waypoint1, route)) self.session.add(Association.create(waypoint2, waypoint1)) self.session.add(Association.create(waypoint3, waypoint2)) self.session.flush() update_cache_version_associations([], [{ 'parent_id': route.document_id, 'parent_type': ROUTE_TYPE, 'child_id': outing.document_id, 'child_type': OUTING_TYPE }]) cache_version1 = self.session.query(CacheVersion).get( waypoint1.document_id) cache_version2 = self.session.query(CacheVersion).get( waypoint2.document_id) cache_version3 = self.session.query(CacheVersion).get( waypoint3.document_id) cache_version_route = self.session.query(CacheVersion).get( route.document_id) cache_version_outing = self.session.query(CacheVersion).get( outing.document_id) cache_version_untouched = self.session.query(CacheVersion).get( waypoint_unrelated.document_id) self.assertEqual(cache_version1.version, 2) self.assertEqual(cache_version2.version, 2) self.assertEqual(cache_version3.version, 2) self.assertEqual(cache_version_route.version, 2) self.assertEqual(cache_version_outing.version, 2) self.assertEqual(cache_version_untouched.version, 1)
def test_trigger_create_cache_version(self): waypoint = Waypoint(waypoint_type='summit') self.session.add(waypoint) self.session.flush() cache_version = self.session.query(CacheVersion).get( waypoint.document_id) self.assertIsNotNone(cache_version) self.assertIsNotNone(cache_version.version) self.assertIsNotNone(cache_version.last_updated)
def setUp(self): # noqa BaseTestCase.setUp(self) self.user1 = self.session.query(User).get( self.global_userids['contributor']) self.user2 = self.session.query(User).get( self.global_userids['contributor2']) self.waypoint = Waypoint(waypoint_type='summit') self.session.add(self.waypoint) self.area1 = Area(area_type='range') self.area2 = Area(area_type='range') self.session.add_all([self.waypoint, self.area1, self.area2]) self.session.flush()
def test_update_cache_version_single_wp(self): waypoint = Waypoint(waypoint_type='summit') waypoint_unrelated = Waypoint(waypoint_type='summit') self.session.add_all([waypoint, waypoint_unrelated]) self.session.flush() cache_version = self.session.query(CacheVersion).get( waypoint.document_id) cache_version.last_updated = datetime.datetime(2016, 1, 1, 12, 1, 0) self.session.flush() current_version = cache_version.version current_last_updated = cache_version.last_updated update_cache_version(waypoint) self.session.refresh(cache_version) self.assertEqual(cache_version.version, current_version + 1) self.assertNotEqual(cache_version.last_updated, current_last_updated) cache_version_untouched = self.session.query(CacheVersion).get( waypoint_unrelated.document_id) self.assertEqual(cache_version_untouched.version, 1)