def test_check_for_dup_text_elements(self): cmf = CrashMoveFolder( os.path.join(self.parent_dir, 'example', 'cmf_description_relative_paths_test.json')) cmf.layer_properties = os.path.join( self.parent_dir, 'tests', 'testfiles', 'cookbooks', 'fixture_layer_properties_for_atlas.json') # 1) Pass with "good" text elements in just one map_frame cmf.map_definitions = os.path.join( self.parent_dir, 'tests', 'testfiles', 'cookbooks', 'fixture_cookbook_good_with_atlas.json') test_lp = LayerProperties(cmf, ".lyr", verify_on_creation=False) MapCookbook(cmf, test_lp, verify_on_creation=True) self.assertTrue(True) # 2) Fail with duplicate text elements in multiple map_frames cmf.map_definitions = os.path.join( self.parent_dir, 'tests', 'testfiles', 'cookbooks', 'fixture_cookbook_with_dup_text_elements.json') test_lp = LayerProperties(cmf, ".lyr", verify_on_creation=False) with self.assertRaises(ValueError) as ve: MapCookbook(cmf, test_lp, verify_on_creation=True) fail_msg = 'More than one "map_frame" is linked to the Scale text element "scale"' if six.PY2: self.assertRegexpMatches(str(ve.exception), fail_msg) else: self.assertRegex(str(ve.exception), fail_msg)
def test_recipe_atlas_constructor(self): cmf = CrashMoveFolder( os.path.join(self.parent_dir, 'example', 'cmf_description_relative_paths_test.json')) cmf.layer_properties = os.path.join( self.parent_dir, 'tests', 'testfiles', 'cookbooks', 'fixture_layer_properties_for_atlas.json') # 1) atlas matches other sections 'fixture_cookbook_good_with_atlas.json' cmf.map_definitions = os.path.join( self.parent_dir, 'tests', 'testfiles', 'cookbooks', 'fixture_cookbook_good_with_atlas.json') test_lp = LayerProperties(cmf, ".lyr", verify_on_creation=False) MapCookbook(cmf, test_lp, verify_on_creation=True) self.assertTrue(True) # 2) mismatch map_frame name 'fixture_cookbook_atlas_mismatch_map_frame.json' # 3) mismatch layer name (but present in other map frame) 'fixture_cookbook_atlas_mismatch_layer1.json' # 4) mismatch layer name, not present elsewhere in the recipe. 'fixture_cookbook_atlas_mismatch_layer2.json' # 5) mismatch column_names test_cb_names = ('fixture_cookbook_atlas_mismatch_map_frame.json', 'fixture_cookbook_atlas_mismatch_layer1.json', 'fixture_cookbook_atlas_mismatch_layer2.json', 'fixture_cookbook_atlas_mismatch_column_name.json') for test_cb in test_cb_names: cmf.map_definitions = os.path.join(self.parent_dir, 'tests', 'testfiles', 'cookbooks', test_cb) test_lp = LayerProperties(cmf, ".lyr", verify_on_creation=False) with self.assertRaises(ValueError): MapCookbook(cmf, test_lp, verify_on_creation=True)
def test_check_for_dup_layers_and_mapframs(self): cmf = CrashMoveFolder( os.path.join(self.parent_dir, 'example', 'cmf_description_relative_paths_test.json')) cmf.layer_properties = os.path.join( self.parent_dir, 'tests', 'testfiles', 'cookbooks', 'fixture_layer_properties_for_atlas.json') # Fail with multiple layer with the same name in the same mapframe. test_cookbooks = (('fixture_cookbook_with_dup_layers.json', 'mainmap_tran_por_pt_s0_allmaps'), ('fixture_cookbook_with_dup_mapframes.json', 'Main map')) for cb_filename, fail_msg in test_cookbooks: cmf.map_definitions = os.path.join(self.parent_dir, 'tests', 'testfiles', 'cookbooks', cb_filename) test_lp = LayerProperties(cmf, ".lyr", verify_on_creation=False) with self.assertRaises(ValueError) as ve: MapCookbook(cmf, test_lp, verify_on_creation=True) if six.PY2: self.assertRegexpMatches(str(ve.exception), fail_msg) else: self.assertRegex(str(ve.exception), fail_msg)
def test_layer_props_and_cookbook_mismatch(self): cmf = CrashMoveFolder(self.path_to_valid_cmf_des) cmf.layer_properties = os.path.join( self.parent_dir, 'tests', 'testfiles', 'fixture_layer_properties_four_layers.json') cmf.map_definitions = os.path.join( self.parent_dir, 'tests', 'testfiles', 'fixture_cookbook_1map_4layers.json') test_lp = LayerProperties(cmf, "test", verify_on_creation=False) # 1) map_cb and lp match test_mcb = MapCookbook(cmf, test_lp, verify_on_creation=True) self.assertIsInstance(test_mcb, MapCookbook) # 2) layer in map_cb but not in lp # 3) layer in lp but not in map_cb # 4) unmatched layers in both lp and map_cb testcases = ( ('fixture_cookbook_1map_5layers.json', ("mainmap-tran-rds-ln-s0-allmaps")), ('fixture_cookbook_1map_3layers.json', ("locationmap_stle_stl_pt_s0_locationmaps")), ('fixture_cookbook_1map_mismatch_layers.json', ("mainmap-tran-rds-ln-s0-allmaps", "locationmap_stle_stl_pt_s0_locationmaps")), ) for cb_file, strings_in_ex_msg in testcases: cmf.map_definitions = os.path.join(self.parent_dir, 'tests', 'testfiles', cb_file) with self.assertRaises(ValueError) as ve: MapCookbook(cmf, test_lp, verify_on_creation=True) if six.PY2: self.assertRegexpMatches( str(ve.exception), "One or more layer names occur in only one of these files") for s in strings_in_ex_msg: self.assertRegexpMatches(str(ve.exception), s) else: self.assertRegex( str(ve.exception), "One or more layer names occur in only one of these files") for s in strings_in_ex_msg: self.assertRegex(str(ve.exception), s)