001/**
002 * Copyright 2004-2014 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.hr.time.department.lunch;
017import org.apache.log4j.Logger;
018import org.junit.Assert;
019import org.junit.Test;
020import org.kuali.hr.KPMEWebTestCase;
021import org.kuali.hr.util.HtmlUnitUtil;
022import org.kuali.kpme.core.FunctionalTest;
023import org.kuali.kpme.core.util.HrTestConstants;
024import org.kuali.kpme.tklm.utils.TkTestConstants;
025
026import com.gargoylesoftware.htmlunit.html.HtmlInput;
027import com.gargoylesoftware.htmlunit.html.HtmlPage;
028
029@FunctionalTest
030public class DepartmentLunchRuleMaintTest extends KPMEWebTestCase {
031    private static final Logger LOG = Logger.getLogger(DepartmentLunchRuleMaintTest.class);
032    private static final String TEST_CODE = "admin";
033        private static String TEST_CODE_DEPT_INVALID = "INVALID";
034        private static Long TEST_CODE_WORKAREA_INVALID = 9999L;
035        
036        private static Long deptLunchRuleIdWithInvalidDept = 1L;        
037        private static Long deptLunchRuleIdWithInvalidWorkArea = 2L;
038
039        /**
040         * Test to check whether it is showing error message for Department on maintenance screen
041         * if we supply non exist deptId
042         * 
043         * @throws Exception
044         */
045        @Test
046        public void testDepartmentLunchRuleMaintForDeptErrorMessage()
047                        throws Exception {
048                HtmlPage departmentLunchRuleLookUp = HtmlUnitUtil
049                                .gotoPageAndLogin(getWebClient(), TkTestConstants.Urls.DEPT_LUNCH_RULE_MAINT_URL);
050                departmentLunchRuleLookUp = HtmlUnitUtil.clickInputContainingText(
051                                departmentLunchRuleLookUp, "search");
052                Assert.assertTrue("Page contains test DepartmentLunchRule",
053                                departmentLunchRuleLookUp.asText().contains(TEST_CODE));
054                HtmlPage maintPage = HtmlUnitUtil.clickAnchorContainingText(
055                                departmentLunchRuleLookUp, "edit",
056                                deptLunchRuleIdWithInvalidDept.toString());
057                HtmlUnitUtil.createTempFile(maintPage);
058                
059                HtmlInput inputForDept = HtmlUnitUtil.getInputContainingText(maintPage,
060                                "newMaintainableObject.dept");
061                inputForDept.setValueAttribute(TEST_CODE_DEPT_INVALID);
062                HtmlInput inputForDescription = HtmlUnitUtil.getInputContainingText(
063                                maintPage, "* Document Description");
064                inputForDescription.setValueAttribute("Description");
065                HtmlPage resultantPageAfterEdit = HtmlUnitUtil
066                                .clickInputContainingText(maintPage, "submit");
067                LOG.debug(resultantPageAfterEdit.asText());
068                Assert.assertTrue("Maintenance Page contains error message for dept",
069                                resultantPageAfterEdit.asText().contains(
070                                                "The specified department '" + TEST_CODE_DEPT_INVALID
071                                                                + "' does not exist."));
072        }
073
074        /**
075         * Test to check whether it is showing error message for WorkArea on maintenance screen
076         * if we supply non exist workArea
077         * 
078         * @throws Exception
079         */
080        @Test
081        public void testDepartmentLunchRuleMaintForWorkAreaErrorMessage()
082                        throws Exception {
083                HtmlPage departmentLunchRuleLookUp = HtmlUnitUtil
084                                .gotoPageAndLogin(getWebClient(), TkTestConstants.Urls.DEPT_LUNCH_RULE_MAINT_URL);
085                departmentLunchRuleLookUp = HtmlUnitUtil.clickInputContainingText(
086                                departmentLunchRuleLookUp, "search");
087                Assert.assertTrue("Page contains test DepartmentLunchRule",
088                                departmentLunchRuleLookUp.asText().contains(TEST_CODE));
089                HtmlPage maintPage = HtmlUnitUtil.clickAnchorContainingText(
090                                departmentLunchRuleLookUp, "edit",
091                                deptLunchRuleIdWithInvalidWorkArea.toString());
092                HtmlUnitUtil.createTempFile(maintPage);
093                
094                HtmlUnitUtil.setFieldValue(maintPage, "document.newMaintainableObject.workArea", Long.toString(TEST_CODE_WORKAREA_INVALID));
095//              HtmlInput inputForWorkArea = HtmlUnitUtil.getInputContainingText(maintPage,
096//                              "newMaintainableObject.workArea");
097//              inputForWorkArea.setValueAttribute(Long.toString(TEST_CODE_WORKAREA_INVALID));
098                HtmlInput inputForDescription = HtmlUnitUtil.getInputContainingText(
099                                maintPage, "* Document Description");
100                inputForDescription.setValueAttribute("Description");
101                HtmlPage resultantPageAfterEdit = HtmlUnitUtil
102                                .clickInputContainingText(maintPage, "submit");         
103                HtmlUnitUtil.createTempFile(resultantPageAfterEdit);
104                Assert.assertTrue("Maintenance Page contains contains error message for workarea",
105                                resultantPageAfterEdit.asText().contains(
106                                                "The specified workArea '" + TEST_CODE_WORKAREA_INVALID
107                                                                + "' does not exist."));
108        }
109
110        @Test
111        public void testDepartmentLunchRuleMaintForMaxShiftHourErrorMessage() throws Exception {
112                HtmlPage departmentLunchRuleLookUp = HtmlUnitUtil
113                                .gotoPageAndLogin(getWebClient(), TkTestConstants.Urls.DEPT_LUNCH_RULE_MAINT_URL);
114                departmentLunchRuleLookUp = HtmlUnitUtil.clickInputContainingText(
115                                departmentLunchRuleLookUp, "search");
116                Assert.assertTrue("Page contains test DepartmentLunchRule",
117                                departmentLunchRuleLookUp.asText().contains(TEST_CODE));
118                HtmlPage maintPage = HtmlUnitUtil.clickAnchorContainingText(
119                                departmentLunchRuleLookUp, "edit",
120                                deptLunchRuleIdWithInvalidWorkArea.toString());
121                
122                HtmlUnitUtil.setFieldValue(maintPage, HrTestConstants.DOC_NEW_ELEMENT_ID_PREFIX + "shiftHours", "34");
123                HtmlUnitUtil.setFieldValue(maintPage, "document.documentHeader.documentDescription", "test");
124                HtmlPage resultantPageAfterEdit = HtmlUnitUtil.clickInputContainingText(maintPage, "submit");           
125                HtmlUnitUtil.createTempFile(resultantPageAfterEdit);
126                Assert.assertTrue("Maintenance Page contains contains error message for Shift Hours",
127                                resultantPageAfterEdit.asText().contains("Shift Hour cannot be greater than 24."));
128        }
129        
130        @Test
131        public void testDepartmentLunchRuleMaint() throws Exception {
132                HtmlPage departmentLunchRuleLookUp = HtmlUnitUtil
133                                .gotoPageAndLogin(getWebClient(), TkTestConstants.Urls.DEPT_LUNCH_RULE_MAINT_URL);
134                departmentLunchRuleLookUp = HtmlUnitUtil.clickInputContainingText(
135                                departmentLunchRuleLookUp, "search");
136                Assert.assertTrue("Page contains test DepartmentLunchRule",
137                                departmentLunchRuleLookUp.asText().contains(
138                                                TEST_CODE.toString()));
139                HtmlPage maintPage = HtmlUnitUtil.clickAnchorContainingText(
140                                departmentLunchRuleLookUp, "edit",
141                                deptLunchRuleIdWithInvalidDept.toString());
142                Assert.assertTrue("Maintenance Page contains test DepartmentLunchRule",
143                                maintPage.asText().contains(TEST_CODE.toString()));
144        }
145}