package com.englishtown.bitbucket.hook; import com.atlassian.bitbucket.setting.Settings; import com.google.common.collect.ImmutableMap; import org.junit.Test; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.HashMap; import java.util.Map; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; /** * Unit tests for {@link DefaultSettingsReflectionHelper} */ public class DefaultSettingsReflectionHelperTest { @Test public void testSet() throws Exception { DefaultSettingsReflectionHelper helper = new DefaultSettingsReflectionHelper(); Map<String, Object> original = new HashMap<>(); original.put("old", "old"); TestSettings settings = new TestSettings(original); Map<String, Object> values = new HashMap<>(); values.put("new", "new"); helper.set(values, settings); assertNull(settings.getString("old")); assertEquals("new", settings.getString("new")); } private static class TestSettings implements Settings { private final Map<String, Object> values; public TestSettings(Map<String, Object> values) { this.values = ImmutableMap.copyOf(values); } @Nullable @Override public String getString(@Nonnull String key) { return (String) values.get(key); } @Nonnull @Override public String getString(@Nonnull String key, @Nonnull String defaultValue) { return null; } @Nullable @Override public Boolean getBoolean(@Nonnull String key) { return null; } @Override public boolean getBoolean(@Nonnull String key, boolean defaultValue) { return false; } @Nullable @Override public Integer getInt(@Nonnull String key) { return null; } @Override public int getInt(@Nonnull String key, int defaultValue) { return 0; } @Nullable @Override public Long getLong(@Nonnull String key) { return null; } @Override public long getLong(@Nonnull String key, long defaultValue) { return 0; } @Nullable @Override public Double getDouble(@Nonnull String key) { return null; } @Override public double getDouble(@Nonnull String key, double defaultValue) { return 0; } @Override public Map<String, Object> asMap() { return values; } } }