1 # SPDX-License-Identifier: GPL-3.0-or-later
 
   3 # This file is part of Nominatim. (https://nominatim.org)
 
   5 # Copyright (C) 2025 by the Nominatim developer community.
 
   6 # For a full list of authors see the git log.
 
   8 Tests for freeze functions (removing unused database parts).
 
  10 from nominatim_db.tools import freeze
 
  12 NOMINATIM_RUNTIME_TABLES = [
 
  13     'country_name', 'country_osm_grid',
 
  14     'location_postcode', 'location_property_osmline', 'location_property_tiger',
 
  15     'placex', 'place_adressline',
 
  20 NOMINATIM_DROP_TABLES = [
 
  22     'location_area', 'location_area_country', 'location_area_large_100',
 
  24     'place', 'planet_osm_nodes', 'planet_osm_rels', 'planet_osm_ways',
 
  26     'wikipedia_article', 'wikipedia_redirect'
 
  30 def test_drop_tables(temp_db_conn, temp_db_cursor, table_factory):
 
  31     for table in NOMINATIM_RUNTIME_TABLES + NOMINATIM_DROP_TABLES:
 
  34     assert not freeze.is_frozen(temp_db_conn)
 
  36     freeze.drop_update_tables(temp_db_conn)
 
  38     for table in NOMINATIM_RUNTIME_TABLES:
 
  39         assert temp_db_cursor.table_exists(table)
 
  41     for table in NOMINATIM_DROP_TABLES:
 
  42         assert not temp_db_cursor.table_exists(table)
 
  44     assert freeze.is_frozen(temp_db_conn)
 
  47 def test_drop_flatnode_file_no_file():
 
  48     freeze.drop_flatnode_file(None)
 
  51 def test_drop_flatnode_file_file_already_gone(tmp_path):
 
  52     freeze.drop_flatnode_file(tmp_path / 'something.store')
 
  55 def test_drop_flatnode_file_delete(tmp_path):
 
  56     flatfile = tmp_path / 'flatnode.store'
 
  57     flatfile.write_text('Some content')
 
  59     freeze.drop_flatnode_file(flatfile)
 
  61     assert not flatfile.exists()