package org.expressolivre.cte.email; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.apache.commons.lang.StringUtils; import org.expressolivre.cte.common.BaseTestCase; import org.expressolivre.cte.common.Config; import org.expressolivre.cte.pages.email.MailAdminPreferencesPage; import org.testng.annotations.Test; /** * @author L.F.Estivalet (Serpro) * * Created on Mai 11, 2011 at 2:07:45 PM * */ public class MailAdminPreferencesTestCase extends BaseTestCase { /** * Teste deve ser executando somente por usuario administrador. * * @throws IllegalArgumentException * @throws IllegalAccessException * @throws InvocationTargetException */ @Test public void test() throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { openPreferencesPage(); MailAdminPreferencesPage prefs = openEmailAdminPreferencesPage(); setPreferences(prefs, "user"); prefs = openEmailAdminDefaultPreferencesPage(); setPreferences(prefs, "default"); prefs = openEmailAdminForcedPreferencesPage(); setPreferences(prefs, "forced"); } private void setPreferences(MailAdminPreferencesPage prefs, String pref) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { // Percorre todos os metodos "setters" da classe // ExpressoMailAdminPreferencesPage para mudar o valor de cada // preferencia. Method[] methods = MailAdminPreferencesPage.class.getMethods(); for (Method method : methods) { // Nao pegar os metodos setComboValue e setSavePreferences que nao // tem correspondentes no arquivo de configuracao. if (method.getName().startsWith("set") && !method.getName().equals("setComboValue") && !method.getName().equals("setSavePreferences")) { String name = StringUtils.uncapitalize(method.getName() .substring(3)); if (name.startsWith(pref)) { // Apenas chama o metodo se a preferencia correspondente ao // metodo get estiver definida no arquivo de configuracao. String val = Config.getInstance().getEmailAdminPreference( name); if (val != null) { method.invoke(prefs, val); } } } } prefs.savePreferences(); } }