@Test
public void shouldMergeWhenSameEnvironmentExistsInManyPartials(){
BasicCruiseConfig cruiseConfig = GoConfigMother.configWithPipelines("p1", "p2");
ConfigRepoConfig repoConfig1 = new ConfigRepoConfig(MaterialConfigsMother.gitMaterialConfig("url1"), "plugin");
ConfigRepoConfig repoConfig2 = new ConfigRepoConfig(MaterialConfigsMother.gitMaterialConfig("url2"), "plugin");
cruiseConfig.setConfigRepos(new ConfigReposConfig(repoConfig1, repoConfig2));
PartialConfig partialConfigInRepo1 = PartialConfigMother.withEnvironment("environment", new RepoConfigOrigin(repoConfig1, "repo1_r1"));
RepoConfigOrigin configOrigin = new RepoConfigOrigin(repoConfig2, "repo2_r1");
PartialConfig partialConfigInRepo2 = PartialConfigMother.withEnvironment("environment", configOrigin);
BasicEnvironmentConfig environment2InRepo2 = EnvironmentConfigMother.environment("environment2_in_repo2");
environment2InRepo2.setOrigins(configOrigin);
partialConfigInRepo2.getEnvironments().add(environment2InRepo2);
cruiseConfig.merge(new ArrayList<>(Arrays.asList(partialConfigInRepo2, partialConfigInRepo1)), false);
assertThat(cruiseConfig.getEnvironments().hasEnvironmentNamed(new CaseInsensitiveString("environment")),is(true));
assertThat(cruiseConfig.getEnvironments().hasEnvironmentNamed(new CaseInsensitiveString("environment2_in_repo2")),is(true));
}