/* * Copyright (c) 2005-2011 Grameen Foundation USA * All rights reserved. * * 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. * * See also http://www.apache.org/licenses/LICENSE-2.0.html for an * explanation of the license and how it is applied. */ package org.mifos.test.acceptance.penalties; import static org.mifos.test.acceptance.framework.admin.PenaltyFormParameters.FREQUENCY_NONE; import static org.mifos.test.acceptance.framework.admin.PenaltyFormParameters.PERIOD_NONE; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.mifos.test.acceptance.framework.MifosPage; import org.mifos.test.acceptance.framework.UiTestCaseBase; import org.mifos.test.acceptance.framework.admin.EditPenaltyPreviewPage; import org.mifos.test.acceptance.framework.admin.NewPenaltyPreviewPage; import org.mifos.test.acceptance.framework.admin.PenaltyFormPage; import org.mifos.test.acceptance.framework.admin.PenaltyFormParameters; import org.mifos.test.acceptance.framework.admin.ViewPenaltiesPage; import org.mifos.test.acceptance.framework.admin.ViewPenaltyPage; import org.mifos.test.acceptance.framework.testhelpers.NavigationHelper; import org.mifos.test.acceptance.framework.testhelpers.PenaltyHelper; import org.mifos.test.acceptance.util.StringUtil; import org.springframework.test.context.ContextConfiguration; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @ContextConfiguration(locations = { "classpath:ui-test-context.xml" }) @Test(singleThreaded = true, groups = {"penalties", "acceptance", "ui", "no_db_unit"}) @SuppressWarnings("PMD") public class MainPenaltyTest extends UiTestCaseBase { private static final String EDIT_CATEGORY_SAVINGS = "Savings"; private final static boolean CREATE_PAGE = true; private final static boolean EDIT_PAGE = false; private final static String AMOUNT_PENALTY_NAME = "Amount Saving Penalty"; private final static String RATE_PENALTY_NAME = "Rate Loan Penalty"; private Map<String, String> errors; private String category; private NavigationHelper navigationHelper; @Override @BeforeMethod public void setUp() throws Exception { super.setUp(); navigationHelper = new NavigationHelper(selenium); errors = new HashMap<String, String>(); errors.put("applies", "Please select Loans/Savings to which penalties apply."); errors.put("name", "Please specify Penalty Name."); errors.put("duration", "Please specify Grace Period Duration."); errors.put("glcode", "Please specify GL Code."); errors.put("min", "Please specify Cumulative Penalty Limit (Minimum)."); errors.put("max", "Please specify Cumulative Penalty Limit (Maximum)."); errors.put("amount", "Please specify Amount."); errors.put("frequency", "Please specify Penalty Application Frequency."); errors.put("rateOrAmount", "Please specify either rate or amount."); errors.put("formula", "Please specify rate along with formula."); errors.put("invalidDuration", "The Grace Period Duration is invalid because only positive numbers are allowed."); errors.put("invalidMin", "The Cumulative Penalty Limit (Minimum) is invalid because only positive numbers and decimal separator are allowed."); errors.put("invalidMax", "The Cumulative Penalty Limit (Maximum) is invalid because only positive numbers and decimal separator are allowed."); errors.put("invalidAmount", "The Amount is invalid because only positive numbers and decimal separator are allowed."); errors.put("invalidRate", "The Rate is invalid because only positive numbers and decimal separator are allowed."); errors.put("minGreaterMax", "Cumulative Penalty Limit (Minimum) can't be greater than Cumulative Penalty Limit (Maximum)."); errors.put("beforeDecimalDuration", "The Grace Period Duration is invalid because the number of digits before the decimal separator exceeds the allowed number 14."); errors.put("beforeDecimalMin", "The Cumulative Penalty Limit (Minimum) is invalid because the number of digits before the decimal separator exceeds the allowed number 14."); errors.put("beforeDecimalMax", "The Cumulative Penalty Limit (Maximum) is invalid because the number of digits before the decimal separator exceeds the allowed number 14."); errors.put("beforeDecimalAmount", "The Amount is invalid because the number of digits before the decimal separator exceeds the allowed number 14."); errors.put("beforeDecimalRate", "The Rate is invalid because the number of digits before the decimal separator exceeds the allowed number 14."); errors.put("afterDecimalMin", "The Cumulative Penalty Limit (Minimum) is invalid because Only 1 digit(s) after decimal separator is allowed."); errors.put("afterDecimalMax", "The Cumulative Penalty Limit (Maximum) is invalid because Only 1 digit(s) after decimal separator is allowed."); errors.put("afterDecimalAmount", "The Amount is invalid because Only 1 digit(s) after decimal separator is allowed."); errors.put("afterDecimalRate", "The Rate is invalid because Only 1 digit(s) after decimal separator is allowed."); } @AfterMethod public void logOut() { (new MifosPage(selenium)).logout(); } @Test(enabled = true) public void verifyCreateAndEditPenalty() throws Exception { final PenaltyFormParameters param = new PenaltyFormParameters(); ViewPenaltiesPage penaltiesPage = navigationHelper.navigateToAdminPage().navigateToViewPenaltiesPage(); int startLoanPenaltyCount = penaltiesPage.getLoanPenaltiesCount(); int startSavingsPenaltyCount = penaltiesPage.getSavingPenaltiesCount(); for (int i = 0; i < 2; ++i) { category = ""; penaltiesPage.verifyLoanPenaltiesCount(startLoanPenaltyCount); penaltiesPage.verifySavingPenaltiesCount(startSavingsPenaltyCount + i); PenaltyFormPage newPenaltyPage = penaltiesPage.navigateToDefineNewPenaltyPage(); for (int j = 0; j < 2; ++j) { verifyErrorsWithEmptyForm(newPenaltyPage, param, CREATE_PAGE); verifyErrorsWithoutSelectFrequency(newPenaltyPage, param, CREATE_PAGE); verifyErrorsWithIncorrectValue(newPenaltyPage, param, CREATE_PAGE); verifyErrorsWithMinGreaterThanMax(newPenaltyPage, param, CREATE_PAGE); verifyErrorsForLoanPenaltyWithoutAmount(newPenaltyPage, param, CREATE_PAGE); verifyErrorsForLoanPenaltyWithIncorrectRate(newPenaltyPage, param); verifyErrorsForLoanPenaltyWithoutFormula(newPenaltyPage, param); final NewPenaltyPreviewPage newPreviewPage = (NewPenaltyPreviewPage) fillFormAndGotoPreviewPage(newPenaltyPage, param, i, CREATE_PAGE); if (j == 0) { newPenaltyPage = newPreviewPage.navigateToEditPenaltyInformationPage(); } else if (j == 1) { penaltiesPage = newPreviewPage.submit().navigateToViewPenaltiesPage(); } } ViewPenaltyPage penaltyPage = null; if (i == 0) { penaltiesPage.verifyLoanPenaltiesCount(startLoanPenaltyCount); penaltiesPage.verifySavingPenaltiesCount(startSavingsPenaltyCount + 1); penaltyPage = penaltiesPage.navigateToViewPenaltyPage(AMOUNT_PENALTY_NAME); } else if (i == 1) { penaltiesPage.verifyLoanPenaltiesCount(startLoanPenaltyCount + 1); penaltiesPage.verifySavingPenaltiesCount(startSavingsPenaltyCount + 1); penaltyPage = penaltiesPage.navigateToViewPenaltyPage(RATE_PENALTY_NAME); } penaltyPage.verifyData(createData(param, i)); final PenaltyFormPage editPenaltyPage = penaltyPage.navigateToEditPenaltyPage(); category = param.getApplies(); for (int j = 0; j < 2; ++j) { verifyErrorsWithEmptyForm(editPenaltyPage, param, EDIT_PAGE); verifyErrorsWithoutSelectFrequency(editPenaltyPage, param, EDIT_PAGE); verifyErrorsWithIncorrectValue(editPenaltyPage, param, EDIT_PAGE); verifyErrorsWithMinGreaterThanMax(editPenaltyPage, param, EDIT_PAGE); if (i == 0) { verifyErrorsForLoanPenaltyWithoutAmount(newPenaltyPage, param, EDIT_PAGE); } else { verifyErrorsForLoanPenaltyWithIncorrectRate(editPenaltyPage, param); verifyErrorsForLoanPenaltyWithoutFormula(editPenaltyPage, param); } final EditPenaltyPreviewPage editPreviewPage = (EditPenaltyPreviewPage) fillFormAndGotoPreviewPage(editPenaltyPage, param, i, EDIT_PAGE); if (j == 0) { newPenaltyPage = editPreviewPage.navigateToEditPenaltyInformationPage(); } else if (j == 1) { penaltyPage = editPreviewPage.submit(); } } penaltyPage.verifyData(createData(param, i)); penaltiesPage = navigationHelper.navigateToAdminPage().navigateToViewPenaltiesPage(); } penaltiesPage = navigationHelper.navigateToAdminPage().navigateToViewPenaltiesPage(); penaltiesPage.verifyLoanPenaltiesCount(startLoanPenaltyCount + 1); penaltiesPage.verifySavingPenaltiesCount(startSavingsPenaltyCount + 1); penaltiesPage.verifyInActivePenaltyLabel(2); penaltiesPage.verifyInActivePenaltyLabel(4); } @Test(enabled = true, dependsOnMethods={"verifyCreateAndEditPenalty"}) public void checkPermissionsForPenalties() throws Exception { String penaltyName = "Penalty Permission"; String accessDenied = "Access Denied"; String youAreNotAllowedToAccessThisPage = "You are not allowed to access this page."; navigationHelper.navigateToAdminPage().navigateToViewRolesPage() .navigateToManageRolePage("Admin").disablePermission("0_6").submitAndGotoViewRolesPage(); navigationHelper.navigateToAdminPage().navigateToDefineNewPenaltyPage(); Assert.assertTrue(selenium.isTextPresent(accessDenied)); Assert.assertTrue(selenium.isTextPresent(youAreNotAllowedToAccessThisPage)); navigationHelper.navigateToAdminPage().navigateToViewPenaltiesPage().navigateToDefineNewPenaltyPage(); Assert.assertTrue(selenium.isTextPresent(accessDenied)); Assert.assertTrue(selenium.isTextPresent(youAreNotAllowedToAccessThisPage)); navigationHelper.navigateToAdminPage().navigateToViewRolesPage() .navigateToManageRolePage("Admin").enablePermission("0_6_0").submitAndGotoViewRolesPage(); new PenaltyHelper(selenium).createAmountPenalty(penaltyName, PERIOD_NONE, "", FREQUENCY_NONE, "1", "999", "5"); navigationHelper.navigateToAdminPage().navigateToViewPenaltiesPage() .navigateToViewPenaltyPage(penaltyName).navigateToEditPenaltyPage(); Assert.assertTrue(selenium.isTextPresent(accessDenied)); Assert.assertTrue(selenium.isTextPresent(youAreNotAllowedToAccessThisPage)); navigationHelper.navigateToAdminPage().navigateToViewRolesPage() .navigateToManageRolePage("Admin").enablePermission("0_6_1").submitAndGotoViewRolesPage(); new PenaltyHelper(selenium).editAmountPenalty(penaltyName, penaltyName, PERIOD_NONE, "", FREQUENCY_NONE, "1", "9999", "3"); } private List<String> createData(final PenaltyFormParameters param, final int i) { final List<String> data = new ArrayList<String>(); data.add("Admin / View penalties / " + param.getName()); data.add(param.getName()); data.add("Edit penalty"); data.add("Penalty Details"); data.add("Penalty Name: " + param.getName()); data.add("Penalty Applies To: " + param.getApplies()); data.add("Grace Period Type: " + param.getPeriod()); data.add("Grace Period Duration: " + StringUtil.formatNumber(param.getDuration())); data.add("Cumulative Penalty Limit (Minimum): " + StringUtil.formatNumber(param.getMin())); data.add("Cumulative Penalty Limit (Maximum): " + StringUtil.formatNumber(param.getMax())); data.add("Interest Calculation"); if (i == 0) { data.add("Amount: " + StringUtil.formatNumber(param.getAmount())); } else if (i == 1) { data.add("Calculate Penalty As: " + StringUtil.formatNumber(param.getRate()) + " % of " + param.getFormula()); } data.add("Penalty Application Frequency: " + param.getFrequency()); data.add("Accounting Details"); data.add("GL Code: " + param.getGlCode()); data.add("Status: " + param.getStatus()); return data; } @SuppressWarnings("PMD.SignatureDeclareThrowsException") private MifosPage fillFormAndGotoPreviewPage(final PenaltyFormPage penaltyFormPage, final PenaltyFormParameters parameters, final int i, final boolean isCreatePage) throws Exception { parameters.setFrequency(PenaltyFormParameters.FREQUENCY_DAILY); parameters.setGlCode("31102 - Penalty"); parameters.setDuration("1"); parameters.setMax("15"); parameters.setMin("1"); if (i == 0) { parameters.setName(AMOUNT_PENALTY_NAME); parameters.setApplies(PenaltyFormParameters.APPLIES_SAVINGS); parameters.setPeriod(PenaltyFormParameters.PERIOD_DAYS); parameters.setAmount("2200.5"); parameters.setRate(""); } else if (i == 1) { parameters.setName(RATE_PENALTY_NAME); parameters.setApplies(PenaltyFormParameters.APPLIES_LOANS); parameters.setPeriod(PenaltyFormParameters.PERIOD_INSTALLMENTS); parameters.setRate("7.5"); parameters.setFormula(PenaltyFormParameters.FORMULA_OUTSTANDING_LOAN); parameters.setAmount(""); } MifosPage previewPage = null; if (isCreatePage) { previewPage = penaltyFormPage.fillParameters(parameters) .submitPageAndGotoPenaltyPreviewPage(NewPenaltyPreviewPage.class); ((NewPenaltyPreviewPage) previewPage).verifyData(parameters); } else { parameters.setStatus(PenaltyFormParameters.STATUS_INACTIVE); previewPage = penaltyFormPage.fillParameters(parameters) .submitPageAndGotoPenaltyPreviewPage(EditPenaltyPreviewPage.class); ((EditPenaltyPreviewPage) previewPage).verifyData(parameters); } return previewPage; } private void verifyErrorsForLoanPenaltyWithoutFormula(final PenaltyFormPage penaltyFormPage, final PenaltyFormParameters parameters) { parameters.setRate("8.5"); parameters.setFormula(PenaltyFormParameters.LIST_SELECT); penaltyFormPage.fillParameters(parameters).submitPageToDisplayErrors(); penaltyFormPage.verifyErrors(new String[] { this.errors.get("name"), this.errors.get("minGreaterMax"), this.errors.get("frequency"), this.errors.get("beforeDecimalDuration"), this.errors.get("formula") }); } private void verifyErrorsForLoanPenaltyWithIncorrectRate(final PenaltyFormPage penaltyFormPage, final PenaltyFormParameters parameters) { final String[] selectedErrors1 = new String[] { this.errors.get("name"), this.errors.get("minGreaterMax"), this.errors.get("frequency"), this.errors.get("beforeDecimalDuration"), this.errors.get("invalidRate") }; final String[] selectedErrors2 = new String[] { this.errors.get("name"), this.errors.get("minGreaterMax"), this.errors.get("frequency"), this.errors.get("beforeDecimalDuration"), this.errors.get("beforeDecimalRate") }; final String[] selectedErrors3 = new String[] { this.errors.get("name"), this.errors.get("minGreaterMax"), this.errors.get("frequency"), this.errors.get("beforeDecimalDuration"), this.errors.get("afterDecimalRate") }; parameters.setFormula(PenaltyFormParameters.FORMULA_OVERDUE_AMOUNT); for (int k = 0; k < 4; ++k) { switch(k) { case 0: parameters.setRate("fdgfd"); break; case 1: parameters.setRate("-8"); break; case 2: parameters.setRate("123456789012345"); break; case 3: parameters.setRate("1.123456"); break; } penaltyFormPage.fillParameters(parameters).submitPageToDisplayErrors(); switch(k) { case 0: case 1: penaltyFormPage.verifyErrors(selectedErrors1); break; case 2: penaltyFormPage.verifyErrors(selectedErrors2); break; case 3: penaltyFormPage.verifyErrors(selectedErrors3); break; } } } private void verifyErrorsForLoanPenaltyWithoutAmount(final PenaltyFormPage penaltyFormPage, final PenaltyFormParameters parameters, final boolean isCreatePage) { if (isCreatePage) { parameters.setApplies(PenaltyFormParameters.APPLIES_LOANS); } parameters.setAmount(""); penaltyFormPage.fillParameters(parameters).submitPageToDisplayErrors(); if (category.equalsIgnoreCase(EDIT_CATEGORY_SAVINGS)) { penaltyFormPage.verifyErrors(new String[] { this.errors.get("name"), this.errors.get("frequency"), this.errors.get("beforeDecimalDuration"), this.errors.get("minGreaterMax"), this.errors.get("amount") }); } else { penaltyFormPage.verifyErrors(new String[] { this.errors.get("name"), this.errors.get("frequency"), this.errors.get("beforeDecimalDuration"), this.errors.get("minGreaterMax"), this.errors.get("rateOrAmount") }); } } private void verifyErrorsWithMinGreaterThanMax(final PenaltyFormPage penaltyFormPage, final PenaltyFormParameters parameters, final boolean isCreatePage) { parameters.setMax("1"); parameters.setMin("15"); penaltyFormPage.fillParameters(parameters).submitPageToDisplayErrors(); if (isCreatePage) { penaltyFormPage.verifyErrors(new String[] { this.errors.get("applies"), this.errors.get("name"), this.errors.get("afterDecimalAmount"), this.errors.get("frequency"), this.errors.get("beforeDecimalDuration"), this.errors.get("minGreaterMax") }); } else { if (category.equalsIgnoreCase(EDIT_CATEGORY_SAVINGS)) { penaltyFormPage.verifyErrors(new String[] { this.errors.get("name"), this.errors.get("afterDecimalAmount"), this.errors.get("frequency"), this.errors.get("beforeDecimalDuration"), this.errors.get("minGreaterMax") }); } else { penaltyFormPage.verifyErrors(new String[] { this.errors.get("name"), this.errors.get("frequency"), this.errors.get("beforeDecimalDuration"), this.errors.get("minGreaterMax") }); } } } private void verifyErrorsWithIncorrectValue(final PenaltyFormPage penaltyFormPage, final PenaltyFormParameters parameters, final boolean isCreatePage) { final String[] selectedErrorsCreate1 = new String[] { this.errors.get("applies"), this.errors.get("name"), this.errors.get("invalidMin"), this.errors.get("invalidMax"), this.errors.get("invalidAmount"), this.errors.get("frequency"), this.errors.get("invalidDuration") }; final String[] selectedErrorsCreate2 = new String[] { this.errors.get("applies"), this.errors.get("name"), this.errors.get("beforeDecimalMin"), this.errors.get("beforeDecimalMax"), this.errors.get("beforeDecimalAmount"), this.errors.get("frequency"), this.errors.get("beforeDecimalDuration") }; final String[] selectedErrorsCreate3 = new String[] { this.errors.get("applies"), this.errors.get("name"), this.errors.get("afterDecimalMin"), this.errors.get("afterDecimalMax"), this.errors.get("afterDecimalAmount"), this.errors.get("frequency"), this.errors.get("beforeDecimalDuration") }; final String[] selectedErrorsSaving1 = new String[] { this.errors.get("name"), this.errors.get("invalidMin"), this.errors.get("invalidMax"), this.errors.get("invalidAmount"), this.errors.get("frequency"), this.errors.get("invalidDuration") }; final String[] selectedErrorsSaving2 = new String[] { this.errors.get("name"), this.errors.get("beforeDecimalMin"), this.errors.get("beforeDecimalMax"), this.errors.get("beforeDecimalAmount"), this.errors.get("frequency"), this.errors.get("beforeDecimalDuration") }; final String[] selectedErrorsSaving3 = new String[] { this.errors.get("name"), this.errors.get("afterDecimalMin"), this.errors.get("afterDecimalMax"), this.errors.get("afterDecimalAmount"), this.errors.get("frequency"), this.errors.get("beforeDecimalDuration") }; final String[] selectedErrorsLoan1 = new String[] { this.errors.get("name"), this.errors.get("invalidMin"), this.errors.get("invalidMax"), this.errors.get("frequency"), this.errors.get("invalidDuration") }; final String[] selectedErrorsLoan2 = new String[] { this.errors.get("name"), this.errors.get("beforeDecimalMin"), this.errors.get("beforeDecimalMax"), this.errors.get("frequency"), this.errors.get("beforeDecimalDuration") }; final String[] selectedErrorsLoan3 = new String[] { this.errors.get("name"), this.errors.get("afterDecimalMin"), this.errors.get("afterDecimalMax"), this.errors.get("frequency"), this.errors.get("beforeDecimalDuration") }; for (int k = 0; k < 4; ++k) { switch (k) { case 0: parameters.setPeriod(PenaltyFormParameters.PERIOD_DAYS); parameters.setDuration("dshjgfhdsjklf"); parameters.setMin("dsgffdsg"); parameters.setMax("fdgdfg"); parameters.setAmount("dsgfdfg"); break; case 1: parameters.setPeriod(PenaltyFormParameters.PERIOD_DAYS); parameters.setDuration("-3"); parameters.setMin("-5"); parameters.setMax("-10"); parameters.setAmount("-15"); break; case 2: parameters.setPeriod(PenaltyFormParameters.PERIOD_DAYS); parameters.setDuration("123456789012345"); parameters.setMin("123456789012345"); parameters.setMax("123456789012345"); parameters.setAmount("123456789012345"); break; case 3: parameters.setMin("1.123456"); parameters.setMax("1.123456"); parameters.setAmount("1.123456"); break; } penaltyFormPage.fillParameters(parameters).submitPageToDisplayErrors(); if (isCreatePage) { switch(k) { case 0: case 1: penaltyFormPage.verifyErrors(selectedErrorsCreate1); break; case 2: penaltyFormPage.verifyErrors(selectedErrorsCreate2); break; case 3: penaltyFormPage.verifyErrors(selectedErrorsCreate3); break; } } else { if (category.equalsIgnoreCase(EDIT_CATEGORY_SAVINGS)) { switch(k) { case 0: case 1: penaltyFormPage.verifyErrors(selectedErrorsSaving1); break; case 2: penaltyFormPage.verifyErrors(selectedErrorsSaving2); break; case 3: penaltyFormPage.verifyErrors(selectedErrorsSaving3); break; } } else { switch(k) { case 0: case 1: penaltyFormPage.verifyErrors(selectedErrorsLoan1); break; case 2: penaltyFormPage.verifyErrors(selectedErrorsLoan2); break; case 3: penaltyFormPage.verifyErrors(selectedErrorsLoan3); break; } } } } } private void verifyErrorsWithoutSelectFrequency(final PenaltyFormPage penaltyFormPage, final PenaltyFormParameters parameters, final boolean isCreatePage) { parameters.setFrequency(PenaltyFormParameters.LIST_SELECT); penaltyFormPage.fillParameters(parameters).submitPageToDisplayErrors(); if (isCreatePage) { penaltyFormPage.verifyErrors(new String[] { this.errors.get("applies"), this.errors.get("name"), this.errors.get("min"), this.errors.get("max"), this.errors.get("amount"), this.errors.get("frequency") }); } else { if (category.equalsIgnoreCase(EDIT_CATEGORY_SAVINGS)) { penaltyFormPage.verifyErrors(new String[] { this.errors.get("name"), this.errors.get("min"), this.errors.get("max"), this.errors.get("amount"), this.errors.get("frequency") }); } else { penaltyFormPage.verifyErrors(new String[] { this.errors.get("name"), this.errors.get("min"), this.errors.get("max"), this.errors.get("rateOrAmount"), this.errors.get("frequency") }); } } } private void verifyErrorsWithEmptyForm(final PenaltyFormPage penaltyFormPage, final PenaltyFormParameters parameters, final boolean isCreatePage) { parameters.setToDefault(); penaltyFormPage.fillParameters(parameters).submitPageToDisplayErrors(); if (isCreatePage) { penaltyFormPage.verifyErrors(new String[] { this.errors.get("applies"), this.errors.get("name"), this.errors.get("min"), this.errors.get("max"), this.errors.get("amount") }); } else { if (category.equalsIgnoreCase(EDIT_CATEGORY_SAVINGS)) { penaltyFormPage.verifyErrors(new String[] { this.errors.get("name"), this.errors.get("min"), this.errors.get("max"), this.errors.get("amount") }); } else { penaltyFormPage.verifyErrors(new String[] { this.errors.get("name"), this.errors.get("min"), this.errors.get("max"), this.errors.get("rateOrAmount") }); } } } }