Use one reflection util to assert all preferences
Reflection code to assert diff preferences existed twice and to assert general preferences relection should be used as well. Change-Id: I761909f929569f53ea0714d7c5403198a6c88ca5 Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
		@@ -0,0 +1,47 @@
 | 
				
			|||||||
 | 
					// Copyright (C) 2016 The Android Open Source Project
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					// you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					// You may obtain a copy of the License at
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					// distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					// See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					// limitations under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package com.google.gerrit.acceptance;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static com.google.common.truth.Truth.assertWithMessage;
 | 
				
			||||||
 | 
					import static com.google.gerrit.server.config.ConfigUtil.skipField;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.lang.reflect.Field;
 | 
				
			||||||
 | 
					import java.util.Arrays;
 | 
				
			||||||
 | 
					import java.util.HashSet;
 | 
				
			||||||
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class AssertUtil {
 | 
				
			||||||
 | 
					  public static <T> void assertPrefs(T actual, T expected,
 | 
				
			||||||
 | 
					      String... fieldsToExclude)
 | 
				
			||||||
 | 
					          throws IllegalArgumentException, IllegalAccessException {
 | 
				
			||||||
 | 
					    Set<String> exludedFields = new HashSet<>(Arrays.asList(fieldsToExclude));
 | 
				
			||||||
 | 
					    for (Field field : actual.getClass().getDeclaredFields()) {
 | 
				
			||||||
 | 
					      if (exludedFields.contains(field.getName()) || skipField(field)) {
 | 
				
			||||||
 | 
					        continue;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      Object actualVal = field.get(actual);
 | 
				
			||||||
 | 
					      Object expectedVal = field.get(expected);
 | 
				
			||||||
 | 
					      if (field.getType().isAssignableFrom(Boolean.class)) {
 | 
				
			||||||
 | 
					        if (actualVal == null) {
 | 
				
			||||||
 | 
					          actualVal = false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (expectedVal == null) {
 | 
				
			||||||
 | 
					          expectedVal = false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      assertWithMessage(field.getName()).that(actualVal).isEqualTo(expectedVal);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -15,9 +15,8 @@
 | 
				
			|||||||
package com.google.gerrit.acceptance.api.accounts;
 | 
					package com.google.gerrit.acceptance.api.accounts;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static com.google.common.truth.Truth.assertThat;
 | 
					import static com.google.common.truth.Truth.assertThat;
 | 
				
			||||||
import static com.google.common.truth.Truth.assertWithMessage;
 | 
					import static com.google.gerrit.acceptance.AssertUtil.assertPrefs;
 | 
				
			||||||
import static com.google.gerrit.acceptance.GitUtil.fetch;
 | 
					import static com.google.gerrit.acceptance.GitUtil.fetch;
 | 
				
			||||||
import static com.google.gerrit.server.config.ConfigUtil.skipField;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.google.gerrit.acceptance.AbstractDaemonTest;
 | 
					import com.google.gerrit.acceptance.AbstractDaemonTest;
 | 
				
			||||||
import com.google.gerrit.acceptance.NoHttpd;
 | 
					import com.google.gerrit.acceptance.NoHttpd;
 | 
				
			||||||
@@ -36,10 +35,6 @@ import org.eclipse.jgit.junit.TestRepository;
 | 
				
			|||||||
import org.junit.After;
 | 
					import org.junit.After;
 | 
				
			||||||
import org.junit.Test;
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.lang.reflect.Field;
 | 
					 | 
				
			||||||
import java.util.Arrays;
 | 
					 | 
				
			||||||
import java.util.List;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@NoHttpd
 | 
					@NoHttpd
 | 
				
			||||||
public class DiffPreferencesIT extends AbstractDaemonTest {
 | 
					public class DiffPreferencesIT extends AbstractDaemonTest {
 | 
				
			||||||
  @Inject
 | 
					  @Inject
 | 
				
			||||||
@@ -141,27 +136,4 @@ public class DiffPreferencesIT extends AbstractDaemonTest {
 | 
				
			|||||||
    // assert hard-coded defaults
 | 
					    // assert hard-coded defaults
 | 
				
			||||||
    assertPrefs(o, d, "lineLength", "tabSize");
 | 
					    assertPrefs(o, d, "lineLength", "tabSize");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					 | 
				
			||||||
  private static void assertPrefs(DiffPreferencesInfo actual,
 | 
					 | 
				
			||||||
      DiffPreferencesInfo expected, String... fieldsToExclude)
 | 
					 | 
				
			||||||
          throws IllegalArgumentException, IllegalAccessException {
 | 
					 | 
				
			||||||
    List<String> exludedFields = Arrays.asList(fieldsToExclude);
 | 
					 | 
				
			||||||
    for (Field field : actual.getClass().getDeclaredFields()) {
 | 
					 | 
				
			||||||
      if (exludedFields.contains(field.getName()) || skipField(field)) {
 | 
					 | 
				
			||||||
        continue;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      Object actualVal = field.get(actual);
 | 
					 | 
				
			||||||
      Object expectedVal = field.get(expected);
 | 
					 | 
				
			||||||
      if (field.getType().isAssignableFrom(Boolean.class)) {
 | 
					 | 
				
			||||||
        if (actualVal == null) {
 | 
					 | 
				
			||||||
          actualVal = false;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (expectedVal == null) {
 | 
					 | 
				
			||||||
          expectedVal = false;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      assertWithMessage("field " + field.getName()).that(actualVal)
 | 
					 | 
				
			||||||
          .isEqualTo(expectedVal);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,6 +15,7 @@
 | 
				
			|||||||
package com.google.gerrit.acceptance.api.accounts;
 | 
					package com.google.gerrit.acceptance.api.accounts;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static com.google.common.truth.Truth.assertThat;
 | 
					import static com.google.common.truth.Truth.assertThat;
 | 
				
			||||||
 | 
					import static com.google.gerrit.acceptance.AssertUtil.assertPrefs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.google.gerrit.acceptance.AbstractDaemonTest;
 | 
					import com.google.gerrit.acceptance.AbstractDaemonTest;
 | 
				
			||||||
import com.google.gerrit.acceptance.NoHttpd;
 | 
					import com.google.gerrit.acceptance.NoHttpd;
 | 
				
			||||||
@@ -49,28 +50,8 @@ public class GeneralPreferencesIT extends AbstractDaemonTest {
 | 
				
			|||||||
    GeneralPreferencesInfo o = gApi.accounts()
 | 
					    GeneralPreferencesInfo o = gApi.accounts()
 | 
				
			||||||
        .id(user42.id.toString())
 | 
					        .id(user42.id.toString())
 | 
				
			||||||
        .getPreferences();
 | 
					        .getPreferences();
 | 
				
			||||||
    GeneralPreferencesInfo d = GeneralPreferencesInfo.defaults();
 | 
					    assertPrefs(o, GeneralPreferencesInfo.defaults(), "my");
 | 
				
			||||||
 | 
					 | 
				
			||||||
    assertThat(o.changesPerPage).isEqualTo(d.changesPerPage);
 | 
					 | 
				
			||||||
    assertThat(o.showSiteHeader).isEqualTo(d.showSiteHeader);
 | 
					 | 
				
			||||||
    assertThat(o.useFlashClipboard).isEqualTo(d.useFlashClipboard);
 | 
					 | 
				
			||||||
    assertThat(o.downloadScheme).isNull();
 | 
					 | 
				
			||||||
    assertThat(o.downloadCommand).isEqualTo(d.downloadCommand);
 | 
					 | 
				
			||||||
    assertThat(o.dateFormat).isEqualTo(d.getDateFormat());
 | 
					 | 
				
			||||||
    assertThat(o.timeFormat).isEqualTo(d.getTimeFormat());
 | 
					 | 
				
			||||||
    assertThat(o.emailStrategy).isEqualTo(d.getEmailStrategy());
 | 
					 | 
				
			||||||
    assertThat(o.relativeDateInChangeTable).isNull();
 | 
					 | 
				
			||||||
    assertThat(o.sizeBarInChangeTable).isEqualTo(d.sizeBarInChangeTable);
 | 
					 | 
				
			||||||
    assertThat(o.legacycidInChangeTable).isNull();
 | 
					 | 
				
			||||||
    assertThat(o.muteCommonPathPrefixes).isEqualTo(
 | 
					 | 
				
			||||||
        d.muteCommonPathPrefixes);
 | 
					 | 
				
			||||||
    assertThat(o.signedOffBy).isNull();
 | 
					 | 
				
			||||||
    assertThat(o.reviewCategoryStrategy).isEqualTo(
 | 
					 | 
				
			||||||
        d.getReviewCategoryStrategy());
 | 
					 | 
				
			||||||
    assertThat(o.diffView).isEqualTo(d.getDiffView());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    assertThat(o.my).hasSize(7);
 | 
					    assertThat(o.my).hasSize(7);
 | 
				
			||||||
    assertThat(o.urlAliases).isNull();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    GeneralPreferencesInfo i = GeneralPreferencesInfo.defaults();
 | 
					    GeneralPreferencesInfo i = GeneralPreferencesInfo.defaults();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -97,25 +78,7 @@ public class GeneralPreferencesIT extends AbstractDaemonTest {
 | 
				
			|||||||
    o = gApi.accounts()
 | 
					    o = gApi.accounts()
 | 
				
			||||||
        .id(user42.getId().toString())
 | 
					        .id(user42.getId().toString())
 | 
				
			||||||
        .setPreferences(i);
 | 
					        .setPreferences(i);
 | 
				
			||||||
 | 
					    assertPrefs(o, i, "my");
 | 
				
			||||||
    assertThat(o.changesPerPage).isEqualTo(i.changesPerPage);
 | 
					 | 
				
			||||||
    assertThat(o.showSiteHeader).isNull();
 | 
					 | 
				
			||||||
    assertThat(o.useFlashClipboard).isNull();
 | 
					 | 
				
			||||||
    assertThat(o.downloadScheme).isNull();
 | 
					 | 
				
			||||||
    assertThat(o.downloadCommand).isEqualTo(i.downloadCommand);
 | 
					 | 
				
			||||||
    assertThat(o.dateFormat).isEqualTo(i.getDateFormat());
 | 
					 | 
				
			||||||
    assertThat(o.timeFormat).isEqualTo(i.getTimeFormat());
 | 
					 | 
				
			||||||
    assertThat(o.emailStrategy).isEqualTo(i.emailStrategy);
 | 
					 | 
				
			||||||
    assertThat(o.relativeDateInChangeTable).isEqualTo(
 | 
					 | 
				
			||||||
        i.relativeDateInChangeTable);
 | 
					 | 
				
			||||||
    assertThat(o.sizeBarInChangeTable).isNull();
 | 
					 | 
				
			||||||
    assertThat(o.legacycidInChangeTable).isEqualTo(i.legacycidInChangeTable);
 | 
					 | 
				
			||||||
    assertThat(o.muteCommonPathPrefixes).isNull();
 | 
					 | 
				
			||||||
    assertThat(o.signedOffBy).isEqualTo(i.signedOffBy);
 | 
					 | 
				
			||||||
    assertThat(o.reviewCategoryStrategy).isEqualTo(
 | 
					 | 
				
			||||||
        i.getReviewCategoryStrategy());
 | 
					 | 
				
			||||||
    assertThat(o.diffView).isEqualTo(i.getDiffView());
 | 
					 | 
				
			||||||
    assertThat(o.my).hasSize(1);
 | 
					    assertThat(o.my).hasSize(1);
 | 
				
			||||||
    assertThat(o.urlAliases).hasSize(1);
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,7 +15,7 @@
 | 
				
			|||||||
package com.google.gerrit.acceptance.rest.config;
 | 
					package com.google.gerrit.acceptance.rest.config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static com.google.common.truth.Truth.assertThat;
 | 
					import static com.google.common.truth.Truth.assertThat;
 | 
				
			||||||
import static com.google.gerrit.server.config.ConfigUtil.skipField;
 | 
					import static com.google.gerrit.acceptance.AssertUtil.assertPrefs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.google.gerrit.acceptance.AbstractDaemonTest;
 | 
					import com.google.gerrit.acceptance.AbstractDaemonTest;
 | 
				
			||||||
import com.google.gerrit.acceptance.NoHttpd;
 | 
					import com.google.gerrit.acceptance.NoHttpd;
 | 
				
			||||||
@@ -23,8 +23,6 @@ import com.google.gerrit.extensions.client.DiffPreferencesInfo;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import org.junit.Test;
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.lang.reflect.Field;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@NoHttpd
 | 
					@NoHttpd
 | 
				
			||||||
public class DiffPreferencesIT extends AbstractDaemonTest {
 | 
					public class DiffPreferencesIT extends AbstractDaemonTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -32,7 +30,7 @@ public class DiffPreferencesIT extends AbstractDaemonTest {
 | 
				
			|||||||
  public void getDiffPreferences() throws Exception {
 | 
					  public void getDiffPreferences() throws Exception {
 | 
				
			||||||
    DiffPreferencesInfo result =
 | 
					    DiffPreferencesInfo result =
 | 
				
			||||||
        gApi.config().server().getDefaultDiffPreferences();
 | 
					        gApi.config().server().getDefaultDiffPreferences();
 | 
				
			||||||
    assertPrefsEqual(result, DiffPreferencesInfo.defaults());
 | 
					    assertPrefs(result, DiffPreferencesInfo.defaults());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @Test
 | 
					  @Test
 | 
				
			||||||
@@ -47,23 +45,6 @@ public class DiffPreferencesIT extends AbstractDaemonTest {
 | 
				
			|||||||
    result = gApi.config().server().getDefaultDiffPreferences();
 | 
					    result = gApi.config().server().getDefaultDiffPreferences();
 | 
				
			||||||
    DiffPreferencesInfo expected = DiffPreferencesInfo.defaults();
 | 
					    DiffPreferencesInfo expected = DiffPreferencesInfo.defaults();
 | 
				
			||||||
    expected.lineLength = newLineLength;
 | 
					    expected.lineLength = newLineLength;
 | 
				
			||||||
    assertPrefsEqual(result, expected);
 | 
					    assertPrefs(result, expected);
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  private void assertPrefsEqual(DiffPreferencesInfo actual,
 | 
					 | 
				
			||||||
      DiffPreferencesInfo expected) throws Exception {
 | 
					 | 
				
			||||||
    for (Field field : actual.getClass().getDeclaredFields()) {
 | 
					 | 
				
			||||||
      if (skipField(field)) {
 | 
					 | 
				
			||||||
        continue;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      Object actualField = field.get(actual);
 | 
					 | 
				
			||||||
      Object expectedField = field.get(expected);
 | 
					 | 
				
			||||||
      Class<?> type = field.getType();
 | 
					 | 
				
			||||||
      if ((type == boolean.class || type == Boolean.class)
 | 
					 | 
				
			||||||
          && actualField == null) {
 | 
					 | 
				
			||||||
        continue;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      assertThat(actualField).named(field.getName()).isEqualTo(expectedField);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user