/*
* 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.holiday;
import java.util.Arrays;
import org.mifos.test.acceptance.framework.MifosPage;
import org.mifos.test.acceptance.framework.holiday.CreateHolidayEntryPage.CreateHolidaySubmitParameters;
import org.testng.Assert;
import com.thoughtworks.selenium.Selenium;
public class ViewHolidaysPage extends MifosPage {
public ViewHolidaysPage(Selenium selenium) {
super(selenium);
this.verifyPage("view_organizational_holidays");
}
public CreateHolidayEntryPage navigateToDefineHolidayPage() {
selenium.click("holiday.link.defineNewHoliday");
waitForPageToLoad();
return new CreateHolidayEntryPage(selenium);
}
private String getHolidayName(String year, Integer row){
return selenium.getTable("organizational_holidays_" + year + "." + row +".2");
}
private String getFromDate(String year, Integer row){
return selenium.getTable("organizational_holidays_" + year + "." + row +".0");
}
private String getToDate(String year, Integer row){
return selenium.getTable("organizational_holidays_" + year + "." + row +".1");
}
private String getRepaymentRule(String year, Integer row){
return selenium.getTable("organizational_holidays_" + year + "." + row +".3");
}
private String getAppliesTo(String year, Integer row){
return selenium.getTable("organizational_holidays_" + year + "." + row +".4");
}
public void verifyHolidayName(String holidayName, String year, Integer row){
Assert.assertEquals(getHolidayName(year, row), holidayName);
}
public void verifyFromDate(String fromDate, String year, Integer row){
Assert.assertEquals(getFromDate(year, row), fromDate);
}
public void verifyToDate(String toDate, String year, Integer row){
Assert.assertEquals(getToDate(year, row), toDate);
}
public void verifyRepaymentRule(String repaymentRule, String year, Integer row){
Assert.assertEquals(getRepaymentRule(year, row), repaymentRule);
}
public void verifyAppliesTo(String appliesTo, String year, Integer row){
Assert.assertTrue(Arrays.asList(getAppliesTo(year, row).split(", ")).contains(appliesTo));
}
public void verifyHolidayCreationResault(CreateHolidaySubmitParameters formParameters){
String year;
if(formParameters.getThruDateYYYY()==null){
year=formParameters.getFromDateYYYY();
}
else{
year=formParameters.getThruDateYYYY();
}
Integer rowCount = selenium.getXpathCount("//table[@id='organizational_holidays_" + year + "']/tbody/tr").intValue();
boolean holidayFound = false;
for(int i = 1; i < rowCount; i++){
if(formParameters.getName().equals(getHolidayName(year, i))){
holidayFound = true;
verifyFromDate(formParameters.getFromDate(), year, i);
verifyToDate(formParameters.getThruDate(), year, i);
verifyRepaymentRule(formParameters.getRepaymentRule(), year, i);
Assert.assertTrue(getAppliesTo(year, i).split(", ").length==formParameters.getSelectedOfficeNames().size());
for (String officeName : formParameters.getSelectedOfficeNames()) {
verifyAppliesTo(officeName, year, i);
}
}
}
Assert.assertTrue(holidayFound);
}
}