001 /**
002 * Copyright 2004-2013 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 */
016 package org.kuali.hr.time.userrole;
017
018 import org.junit.Assert;
019 import org.junit.Test;
020 import org.kuali.hr.test.KPMETestCase;
021 import org.kuali.hr.time.test.HtmlUnitUtil;
022 import org.kuali.hr.time.util.TkConstants;
023
024 import com.gargoylesoftware.htmlunit.html.HtmlElement;
025 import com.gargoylesoftware.htmlunit.html.HtmlPage;
026 import com.gargoylesoftware.htmlunit.html.HtmlSpan;
027
028 public class UserRoleMaintenanceDocumentTest extends KPMETestCase {
029
030 private static final String PRINCIPAL_ID = "fred";
031
032 @Test
033 public void testUserRoleMaintenanceDocumentTest() throws Exception {
034 String baseUrl = HtmlUnitUtil.getBaseURL()
035 + "/kr/lookup.do?methodToCall=start&businessObjectClassName=org.kuali.hr.time.roles.TkRoleGroup&returnLocation="
036 + HtmlUnitUtil.getBaseURL()
037 + "/portal.do&hideReturnLink=true&docFormKey=88888888";
038
039 HtmlPage lookUpPage = HtmlUnitUtil.gotoPageAndLogin(getWebClient(), baseUrl);
040 Assert.assertNotNull(lookUpPage);
041
042 lookUpPage = HtmlUnitUtil
043 .clickInputContainingText(lookUpPage, "search");
044
045 HtmlPage editPage = HtmlUnitUtil.clickAnchorContainingText(lookUpPage,
046 "edit", "principalId=" + PRINCIPAL_ID);
047
048 // set Description
049 setFieldValue(editPage, "document.documentHeader.documentDescription",
050 "Adding role to user" + PRINCIPAL_ID);
051
052 // Click on Add and see errors
053 HtmlElement elementAddRole = HtmlUnitUtil.getInputContainingText(
054 editPage, "methodToCall.addLine.roles");
055 editPage = elementAddRole.click();
056
057 Assert.assertTrue(
058 "page text:\n" + editPage.asText() + "\n does not contain:\n",
059 editPage.asText().contains(
060 "Effective Date (Effective Date) is a required field."));
061
062 // Add Global View Only Role.
063 elementAddRole = HtmlUnitUtil.getInputContainingText(editPage,
064 "methodToCall.addLine.roles");
065 setFieldValue(editPage,
066 "document.newMaintainableObject.add.roles.effectiveDate",
067 "01/01/2011");
068 setFieldValue(editPage,
069 "document.newMaintainableObject.add.roles.roleName",
070 TkConstants.ROLE_TK_GLOBAL_VO);
071
072 editPage = elementAddRole.click();
073
074 Assert.assertTrue("page text:\n" + editPage.asText()
075 + "\n does not contain:\n",
076 !editPage.asText().contains("error(s) found on page."));
077
078 // Add Location Admin View Only Role.
079 elementAddRole = HtmlUnitUtil.getInputContainingText(editPage,
080 "methodToCall.addLine.roles");
081 setFieldValue(editPage,
082 "document.newMaintainableObject.add.roles.effectiveDate",
083 "01/01/2011");
084 setFieldValue(editPage,
085 "document.newMaintainableObject.add.roles.roleName",
086 TkConstants.ROLE_TK_LOCATION_VO);
087
088 editPage = elementAddRole.click();
089
090 // Location is required in case of Location View Only roles
091 Assert.assertTrue("page text:\n" + editPage.asText()
092 + "\n does not contain:\n",
093 editPage.asText().contains("error(s) found on page."));
094
095 setFieldValue(editPage,
096 "document.newMaintainableObject.add.roles.chart", "BL");
097
098 elementAddRole = HtmlUnitUtil.getInputContainingText(editPage,
099 "methodToCall.addLine.roles");
100 editPage = elementAddRole.click();
101
102 // page should not contain any errors
103 Assert.assertTrue("page text:\n" + editPage.asText()
104 + "\n does not contain:\n",
105 !editPage.asText().contains("error(s) found on page."));
106
107 // submit
108 HtmlElement submitElement = HtmlUnitUtil.getInputContainingText(
109 editPage, "methodToCall.route");
110
111 editPage = submitElement.click();
112 Assert.assertTrue(
113 "page text:\n" + editPage.asText() + "\n does not contain:\n",
114 editPage.asText().contains(
115 "Document was successfully submitted."));
116
117 // again go to the url and do login
118 lookUpPage = HtmlUnitUtil.gotoPageAndLogin(getWebClient(), baseUrl);
119 Assert.assertNotNull(lookUpPage);
120
121 lookUpPage = HtmlUnitUtil
122 .clickInputContainingText(lookUpPage, "search");
123 editPage = HtmlUnitUtil.clickAnchorContainingText(lookUpPage, "edit",
124 "principalId=" + PRINCIPAL_ID);
125
126 // check if this page contains created role Global View Only
127 HtmlSpan oldRoleEle = (HtmlSpan) editPage
128 .getElementById("document.oldMaintainableObject.roles[0].roleName.div");
129 Assert.assertTrue("page text:\n" + oldRoleEle.asText()
130 + "\n does not contain:\n",
131 oldRoleEle.asText().contains("Global View Only"));
132
133 // Now update
134 setFieldValue(editPage, "document.documentHeader.documentDescription",
135 "Inactivating global view only role");
136 setFieldValue(editPage,
137 "document.newMaintainableObject.roles[0].active", "off");
138
139 submitElement = HtmlUnitUtil.getInputContainingText(editPage,
140 "methodToCall.route");
141
142 editPage = submitElement.click();
143
144 Assert.assertTrue(
145 "page text:\n" + editPage.asText() + "\n does not contain:\n",
146 editPage.asText().contains(
147 "Document was successfully submitted"));
148
149 // again go through maintenance page and check if inactive roles tab contains the role Department Admin
150 lookUpPage = HtmlUnitUtil.gotoPageAndLogin(getWebClient(), baseUrl);
151 Assert.assertNotNull(lookUpPage);
152
153 lookUpPage = HtmlUnitUtil
154 .clickInputContainingText(lookUpPage, "search");
155 editPage = HtmlUnitUtil.clickAnchorContainingText(lookUpPage, "edit",
156 "principalId=" + PRINCIPAL_ID);
157
158 editPage = HtmlUnitUtil.clickInputContainingText(editPage,
159 "methodToCall.toggleTab.tabInactivePersonRoles");
160
161 // check if Global view only role is in inactive role list.
162 HtmlSpan oldIARoleEle = (HtmlSpan) editPage
163 .getElementById("document.oldMaintainableObject.inactiveRoles[0].roleName.div");
164 Assert.assertTrue("Inactive Roles "+oldIARoleEle.asText() +" does not contains", oldIARoleEle.asText().contains("Global View Only"));
165
166 oldIARoleEle = (HtmlSpan) editPage
167 .getElementById("document.oldMaintainableObject.inactiveRoles[0].active.div");
168 Assert.assertTrue("Inactive Roles "+oldIARoleEle.asText() +" does not contains", oldIARoleEle.asText().contains("No"));
169 }
170
171 }