001    /**
002     * Copyright 2005-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 edu.samplu.krad.compview;
017    
018    import static org.junit.Assert.assertNotSame;
019    
020    import edu.samplu.common.Failable;
021    import edu.samplu.common.ITUtil;
022    import edu.samplu.common.WebDriverLegacyITBase;
023    
024    /**
025     * Tests the Component section in Rice.
026     *
027     * @author Kuali Rice Team (rice.collab@kuali.org)
028     */
029    public abstract class DeleteSubCollectionLineAbstractSmokeTestBase extends WebDriverLegacyITBase {
030    
031        /**
032         * /kr-krad/uicomponents?viewId=UifCompView_KNS&methodToCall=start&readOnlyFields=field91
033         */
034        public static final String BOOKMARK_URL = "/kr-krad/uicomponents?viewId=UifCompView_KNS&methodToCall=start&readOnlyFields=field91";
035        
036        /**
037         * list4[0].subList[0].field1
038         */
039        public static final String FIELD_ELEMENT_NAME = "list4[0].subList[0].field1";
040        
041        /**
042         * Nav tests start at {@link edu.samplu.common.ITUtil#PORTAL}.  Bookmark Tests should override and return {@link DeleteSubCollectionLineAbstractSmokeTestBase#BOOKMARK_URL}
043         * {@inheritDoc}
044         * @return
045         */    
046        @Override
047        public String getTestUrl() {
048            return ITUtil.PORTAL;
049        }
050    
051        protected void navigation() throws Exception {
052            waitAndClickKRAD();
053            waitAndClickByXpath(KITCHEN_SINK_XPATH);
054            switchToWindow(KUALI_UIF_COMPONENTS_WINDOW_XPATH);
055        }
056    
057        protected void testDeleteSubCollectionLineNav(Failable failable) throws Exception {
058            navigation();
059            testDeleteSubCollectionLine();
060            passed();
061        }
062    
063        protected void testDeleteSubCollectionLineBookmark(Failable failable) throws Exception {
064            testDeleteSubCollectionLine();
065            passed();
066        }
067    
068        protected void testDeleteSubCollectionLine() throws Exception {
069            // click on collections page link
070            waitAndClickByLinkText(COLLECTIONS_LINK_TEXT);
071            Thread.sleep(5000);
072    
073            // wait for collections page to load by checking the presence of a sub collection line item
074            waitForElementPresentByName(FIELD_ELEMENT_NAME);
075    
076            // change a value in the line to be deleted
077            waitAndTypeByName(FIELD_ELEMENT_NAME, "selenium");
078    
079            // click the delete button
080            waitAndClickByXpath("//div[@id='collection4_disclosureContent']/div[@class='uif-stackedCollectionLayout']/div[@class='uif-group uif-gridGroup uif-collectionItem uif-gridCollectionItem']/table/tbody/tr[5]/td/div/fieldset/div/div[@class='uif-disclosureContent']/div[@class='dataTables_wrapper']/table/tbody/tr[2]/td[6]/div/fieldset/div/div[@class='uif-boxLayout uif-horizontalBoxLayout clearfix']/button");
081            Thread.sleep(2000);
082    
083            // confirm that the input box containing the modified value is not present
084            for (int second = 0;; second++) {
085                if (second >= waitSeconds)fail(TIMEOUT_MESSAGE);
086                
087                try {
088                    if (!"selenium".equals(getAttributeByName(FIELD_ELEMENT_NAME, "value")))
089                        break;
090                } catch (Exception e) {}
091                
092                Thread.sleep(1000);
093            }
094    
095            // verify that the value has changed for the input box in the line that has replaced the deleted one
096            assertNotSame("selenium", getAttributeByName(FIELD_ELEMENT_NAME, "value"));
097        }
098    }