def test_global_environment_defaults(self):
        config = Config({
            Config.CONFIG_KEY: {
                'global-environment-defaults' : {
                    'env1': {
                        'test1': 'env1',
                        'test2': 'test2'
                    },
                    'env2': {
                        'test1': 'env2',
                        'test3': 'test3'
                    }
                }
            }
        })

        self.assertEqual(config.global_defaults, {})
        self.assertEqual(
            ConfigValue.convert_leaves_to_values(config.global_environment_defaults),
            {
                'env1': {
                    'environment-name' : 'env1',
                    'test1' : 'env1',
                    'test2' : 'test2'
                },
                'env2': {
                    'environment-name' : 'env2',
                    'test1' : 'env2',
                    'test3' : 'test3'
                }
            }
        )
        self.assertEqual(
            ConfigValue.convert_leaves_to_values(
                config.get_global_environment_defaults_for_environment('env1')
            ),
            {
                'environment-name' : 'env1',
                'test1' : 'env1',
                'test2' : 'test2'
            }
        )
        self.assertEqual(
            ConfigValue.convert_leaves_to_values(
                config.get_global_environment_defaults_for_environment('env2')
            ), {
                'environment-name' : 'env2',
                'test1' : 'env2',
                'test3' : 'test3'
            }
        )
        self.assertEqual(config.get_global_environment_defaults_for_environment('does-not-exist'), {})
        self.assertEqual(config.get_global_environment_defaults_for_environment(None), {})
    def test_merge_valid_global_environment_defaults_same_env_diff_keys(self):
        with TempDirectory() as temp_dir:
            config_dir = "test"

            config_files = [
                {
                    'name': os.path.join(config_dir,'foo.yml'),
                    'contents' : {
                        Config.CONFIG_KEY: {
                            'global-environment-defaults' : {
                                'env1' : {
                                    'foo-key': 'foo'
                                }
                            }
                        }
                    }
                },
                {
                    'name': os.path.join(config_dir,'bar.yml'),
                    'contents' : {
                        Config.CONFIG_KEY: {
                            'global-environment-defaults' : {
                                'env1' : {
                                    'bar-key': 'bar'
                                }
                            }
                        }
                    }
                },
            ]

            for config_file in config_files:
                config_file_name = config_file['name']
                config_file_contents = config_file['contents']
                temp_dir.write(
                    config_file_name,
                    bytes(f"{config_file_contents}", 'utf-8')
                )

            config = Config()
            config.add_config(os.path.join(temp_dir.path, config_dir))
            self.assertEqual(
                ConfigValue.convert_leaves_to_values(
                    config.get_global_environment_defaults_for_environment('env1')
                ),
                {
                    'environment-name': 'env1',
                    'foo-key': 'foo',
                    'bar-key': 'bar'
                }
            )