001    /*
002     * Copyright 2005-2007 The Kuali Foundation
003     *
004     *
005     * Licensed under the Educational Community License, Version 2.0 (the "License");
006     * you may not use this file except in compliance with the License.
007     * You may obtain a copy of the License at
008     *
009     * http://www.opensource.org/licenses/ecl2.php
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.kuali.rice.edl.impl;
018    
019    import javax.servlet.http.HttpServletRequest;
020    import javax.xml.transform.OutputKeys;
021    import javax.xml.transform.Transformer;
022    import javax.xml.transform.TransformerConfigurationException;
023    import javax.xml.transform.dom.DOMSource;
024    import javax.xml.transform.stream.StreamResult;
025    
026    import org.junit.Ignore;
027    import org.junit.Test;
028    import org.kuali.rice.edl.impl.service.EDocLiteService;
029    import org.kuali.rice.edl.impl.service.EdlServiceLocator;
030    import org.kuali.rice.kew.test.KEWTestCase;
031    import org.kuali.rice.krad.UserSession;
032    import org.w3c.dom.Document;
033    
034    
035    public class EDLCreationTest extends KEWTestCase {
036    
037            protected void loadTestData() throws Exception {
038                    super.loadXmlFile("widgets.xml");
039                    super.loadXmlFile("edlstyle.xml");
040                    super.loadXmlFile("TestEDL1.xml");
041                    super.loadXmlFile("EDLRoutingData.xml");
042            }
043    
044            @Ignore("This test needs to be implemented!")
045            @Test public void testEDLDOMCreationAndTransformation() throws Exception {
046    //              ConfigContext.getCurrentContextConfig().overrideProperty(Config.EDL_CONFIG_LOCATION, "classpath:org/kuali/rice/kew/edl/EDLConfig1.xml");
047    //              WorkflowUser user = SpringServiceLocator.getUserService().getWorkflowUser(new NetworkIdVO("user1"));
048    //              EDLController edlController = getEDLService().getEDLController("TestEDL1");
049    //
050    //              MockHttpServletRequest request = new MockHttpServletRequest();
051    //              request.setContentType("text/html");
052    //              request.setMethod("POST");
053    //              Transformer transformer = TransformerFactory.newInstance().newTransformer();
054    //              edlController.setEdlContext(getEDLContext(edlController, request, transformer, user));
055    //              Document dom = edlController.notifyComponents();
056    //              System.out.print(XmlJotter.jotNode(dom));
057    //              transform(dom, edlController.getStyle().newTransformer());
058            }
059    
060            @Ignore("This test needs to be implemented!")
061            @Test public void testEDLCreationWithWorkflowDocument() throws Exception {
062    //              ConfigContext.getCurrentContextConfig().overrideProperty(Config.EDL_CONFIG_LOCATION, "classpath:org/kuali/rice/kew/edl/EDLConfig1.xml");
063    //              WorkflowUser user = SpringServiceLocator.getUserService().getWorkflowUser(new NetworkIdVO("user1"));
064    //              EDLController edlController = getEDLService().getEDLController("TestEDL1");
065    //
066    //              MockHttpServletRequest request = new MockHttpServletRequest();
067    //              request.setContentType("text/html");
068    //              //make our params create the document
069    //              request.addParameter("userAction", "create");
070    //              request.setMethod("POST");
071    //              Transformer transformer = edlController.getStyle().newTransformer();
072    //              EDLContext edlContext = getEDLContext(edlController, request, transformer, user);
073    //              edlController.setEdlContext(edlContext);
074    //              Document dom = edlController.notifyComponents();
075    //              System.out.print(XmlJotter.jotNode(dom));
076    //              transform(dom, transformer);
077    //
078    //              //now let's route our document
079    //              HttpSession session = request.getSession();
080    //              request = new MockHttpServletRequest();
081    //              request.setContentType("text/html");
082    //              request.setMethod("POST");
083    //              //make our params create the document
084    //              request.addParameter("userAction", "route");
085    //              request.addParameter("department", "AFRI COAS");
086    //              request.addParameter("creditType", "undergraduateCredit");
087    //              request.addParameter("academicSubjectCode", "American Studies");
088    //              request.addParameter("courseNumber", "A321");
089    //              request.addParameter("currentVersion", "0");
090    //              request.setSession(session);
091    //              edlContext.getRequestParser().setRequest(request);
092    //
093    //              transformer = edlController.getStyle().newTransformer();
094    //              edlController.setEdlContext(getEDLContext(edlController, request, transformer, user));
095    //              dom = edlController.notifyComponents();
096    //              System.out.print(XmlJotter.jotNode(dom));
097    //              transform(dom, transformer);
098            }
099    
100            private void transform(Document dom, Transformer transformer) throws Exception {
101            transformer.setOutputProperty("indent", "yes");
102            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
103            transformer.transform(new DOMSource(dom), new StreamResult(System.out));
104            }
105    
106            private EDLContext getEDLContext(EDLController edlController, HttpServletRequest request, Transformer transformer, String principalId) throws TransformerConfigurationException {
107                    EDLContext edlContext = new EDLContext();
108                    edlContext.setEdocLiteAssociation(edlController.getEdocLiteAssociation());
109                    edlContext.setUserSession(new UserSession(principalId));
110                    edlContext.setTransformer(transformer);
111    //              edlContext.setSessionAccessor(new SessionAccessor(request));
112                    edlContext.setRequestParser(new RequestParser(request));
113                    return edlContext;
114            }
115    
116            private EDocLiteService getEDLService() {
117                    return EdlServiceLocator.getEDocLiteService();
118            }
119    
120    }