/*
* 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.framework.loan;
import org.apache.commons.lang.StringUtils;
import org.testng.Assert;
import org.joda.time.LocalDate;
import org.mifos.test.acceptance.framework.MifosPage;
import org.mifos.test.acceptance.framework.account.EditAccountStatusParameters;
import org.mifos.test.acceptance.framework.questionnaire.QuestionResponsePage;
import com.thoughtworks.selenium.Selenium;
public class AccountChangeStatusPage extends MifosPage {
public AccountChangeStatusPage(Selenium selenium) {
super(selenium);
this.verifyPage("ChangeStatus");
}
@Deprecated
public EditAccountStatusConfirmationPage submitAndNavigateToNextPage(EditLoanAccountStatusParameters params) {
/* usually this would be an "id=..." locator but since this is a radio button we have to use
name + value (id + value is not supported by Selenium). */
selenium.check("name=newStatusId value=" + params.getStatusValue());
if(selenium.isElementPresent("name=newStatusId value=10")) {
selenium.fireEvent("name=newStatusId value=10", "click");
// TODO: fix me, it'll never be empty.
if (StringUtils.isNotEmpty(params.getCancelReason())) {
selenium.select("change_status.input.cancel_reason", "value=" + params.getCancelReasonValue());
}
}
selenium.type("change_status.input.note", params.getNote());
submit();
return new EditAccountStatusConfirmationPage(selenium);
}
public EditAccountStatusConfirmationPage setChangeStatusParametersAndSubmit(EditAccountStatusParameters editAccountStatusParameters){
populateFields(editAccountStatusParameters);
submit();
return new EditAccountStatusConfirmationPage(selenium);
}
public QuestionResponsePage submitAndNavigateToQuestionResponsePage(EditAccountStatusParameters editAccountStatusParameters) {
populateFields(editAccountStatusParameters);
submit();
return new QuestionResponsePage(selenium);
}
private void populateFields(EditAccountStatusParameters editAccountStatusParameters) {
selenium.check("name=newStatusId value=" + editAccountStatusParameters.getAccountStatus().getId());
selenium.fireEvent("name=newStatusId value=" + editAccountStatusParameters.getAccountStatus().getId(), "click");
if (editAccountStatusParameters.getTrxnDate() != null) {
LocalDate trxnDate = editAccountStatusParameters.getTrxnDate();
selenium.type("transactionDateDD", String.valueOf(trxnDate.getDayOfMonth()));
selenium.fireEvent("transactionDateDD", "blur");
selenium.type("transactionDateMM", String.valueOf(trxnDate.getMonthOfYear()));
selenium.fireEvent("transactionDateMM", "blur");
selenium.type("transactionDateYY", String.valueOf(trxnDate.getYear()));
selenium.fireEvent("transactionDateYY", "blur");
}
selenium.type("change_status.input.note", editAccountStatusParameters.getNote());
}
private void submit() {
selenium.click("change_status.button.submit");
waitForPageToLoad();
}
public void verifyTextPresent(String expectedText, String errorMessage) {
Assert.assertTrue(selenium.isTextPresent(expectedText), errorMessage);
}
public void verifyNotTextPresent(String expectedText, String errorMessage) {
Assert.assertFalse(selenium.isTextPresent(expectedText), errorMessage);
}
}