You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2006/10/06 04:56:04 UTC

svn commit: r453472 - in /tapestry/tapestry4/trunk/tapestry-framework/src: java/org/apache/tapestry/form/ java/org/apache/tapestry/link/ test/org/apache/tapestry/form/ test/org/apache/tapestry/link/

Author: jkuhnert
Date: Thu Oct  5 19:56:03 2006
New Revision: 453472

URL: http://svn.apache.org/viewvc?view=rev&rev=453472
Log:
Added new tests to cover fixes made for TAPESTRY-1110 - where dojo.event connections were being made for DirectLink's when
the links were disabled. The same fixes have been applied to submit type buttons as well.

Added:
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/link/DirectLinkWorkerTest.java
Modified:
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/AbstractSubmit.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/ImageSubmit.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/link/AbstractLinkComponent.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/link/DirectLinkWorker.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestSubmit.java

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/AbstractSubmit.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/AbstractSubmit.java?view=diff&rev=453472&r1=453471&r2=453472
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/AbstractSubmit.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/AbstractSubmit.java Thu Oct  5 19:56:03 2006
@@ -114,6 +114,9 @@
      */
     protected void renderSubmitBindings(IMarkupWriter writer, IRequestCycle cycle)
     {
+        if (isDisabled())
+            return;
+        
         String type = getSubmitType();
         
         Defense.notNull(type, "submitType");

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/ImageSubmit.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/ImageSubmit.java?view=diff&rev=453472&r1=453471&r2=453472
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/ImageSubmit.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/ImageSubmit.java Thu Oct  5 19:56:03 2006
@@ -69,9 +69,9 @@
         
         // NN4 places a border unless you tell it otherwise.
         // IE ignores the border attribute and never shows a border.
-
+        
         writer.attribute("border", 0);
-
+        
         writer.attribute("src", imageURL);
 
         renderIdAttribute(writer, cycle);

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/link/AbstractLinkComponent.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/link/AbstractLinkComponent.java?view=diff&rev=453472&r1=453471&r2=453472
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/link/AbstractLinkComponent.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/link/AbstractLinkComponent.java Thu Oct  5 19:56:03 2006
@@ -107,11 +107,11 @@
 
         if (_eventHandlers == null)
             return;
-
+        
         PageRenderSupport pageRenderSupport = TapestryUtils.getPageRenderSupport(cycle, this);
-
+        
         Iterator i = _eventHandlers.entrySet().iterator();
-
+        
         while (i.hasNext())
         {
             Map.Entry entry = (Map.Entry) i.next();

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/link/DirectLinkWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/link/DirectLinkWorker.java?view=diff&rev=453472&r1=453471&r2=453472
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/link/DirectLinkWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/link/DirectLinkWorker.java Thu Oct  5 19:56:03 2006
@@ -70,7 +70,8 @@
         
         // must implement both interfaces
         if (!ILinkComponent.class.isInstance(component)
-                || !IDirect.class.isInstance(component))
+                || !IDirect.class.isInstance(component)
+                || ( ((ILinkComponent)component).isDisabled()))
             return;
         
         IDirect direct = (IDirect)component;

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestSubmit.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestSubmit.java?view=diff&rev=453472&r1=453471&r2=453472
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestSubmit.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestSubmit.java Thu Oct  5 19:56:03 2006
@@ -94,7 +94,7 @@
         trainIsRewinding(form, false);
 
         trainIsRewinding(cycle, false);
-
+        
         form.setFormFieldUpdating(true);
         
         writer.beginEmpty("input");
@@ -240,6 +240,47 @@
 
         replay();
 
+        submit.renderComponent(writer, cycle);
+
+        verify();
+    }
+    
+    public void test_SubmitType_OnClick_Disabled()
+    {
+        Submit submit = newInstance(Submit.class, new Object[] {
+            "disabled", Boolean.TRUE
+            });
+        
+        IValidationDelegate delegate = newDelegate();
+        IForm form = newForm();
+        IRequestCycle cycle = newCycle();
+        IMarkupWriter writer = newWriter();
+
+        trainGetForm(cycle, form);
+
+        trainWasPrerendered(form, writer, submit, false);
+
+        trainGetDelegate(form, delegate);
+        
+        delegate.setFormComponent(submit);
+
+        trainGetElementId(form, submit, "fred");
+
+        trainIsRewinding(form, false);
+
+        trainIsRewinding(cycle, false);
+
+        form.setFormFieldUpdating(true);
+        
+        writer.beginEmpty("input");
+        writer.attribute("type", "submit");
+        writer.attribute("name", "fred");
+        writer.attribute("disabled", "disabled");
+        
+        writer.closeTag();
+        
+        replay();
+        
         submit.renderComponent(writer, cycle);
 
         verify();

Added: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/link/DirectLinkWorkerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/link/DirectLinkWorkerTest.java?view=auto&rev=453472
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/link/DirectLinkWorkerTest.java (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/link/DirectLinkWorkerTest.java Thu Oct  5 19:56:03 2006
@@ -0,0 +1,97 @@
+// Copyright Oct 5, 2006 The Apache Software Foundation
+//
+// 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.
+package org.apache.tapestry.link;
+
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.isA;
+
+import java.util.Map;
+
+import org.apache.hivemind.Resource;
+import org.apache.hivemind.impl.DefaultClassResolver;
+import org.apache.tapestry.BaseComponentTestCase;
+import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.IScript;
+import org.apache.tapestry.PageRenderSupport;
+import org.apache.tapestry.engine.IScriptSource;
+import org.testng.annotations.Test;
+
+
+/**
+ * Tests functionality of {@link DirectLinkWorker}.
+ * 
+ * @author jkuhnert
+ */
+@Test
+public class DirectLinkWorkerTest extends BaseComponentTestCase
+{
+
+    public void test_Render()
+    {
+        DirectLink link = newInstance(DirectLink.class, new Object[] { 
+            "disabled", Boolean.FALSE,
+            "async", Boolean.TRUE,
+            "json", Boolean.FALSE
+            });
+        
+        IScriptSource scriptSource = newMock(IScriptSource.class);
+        IRequestCycle cycle = newCycle(false);
+        
+        PageRenderSupport prs = newPageRenderSupport();
+        trainGetPageRenderSupport(cycle, prs);
+        
+        IScript script = newMock(IScript.class);
+        
+        expect(scriptSource.getScript(isA(Resource.class))).andReturn(script);
+        
+        script.execute(eq(link), eq(cycle), eq(prs), isA(Map.class));
+        
+        DirectLinkWorker w = new DirectLinkWorker();
+        w.setScript("/org/apache/tapestry/link/DirectLinkWorker.script");
+        w.setScriptSource(scriptSource);
+        w.setClassResolver(new DefaultClassResolver());
+        w.initialize();
+        
+        replay();
+        
+        w.renderComponent(cycle, link);
+        
+        verify();
+    }
+    
+    public void test_Render_Disabled()
+    {
+        DirectLink link = newInstance(DirectLink.class, new Object[] { 
+            "disabled", Boolean.TRUE,
+            "async", Boolean.TRUE,
+            "json", Boolean.FALSE
+            });
+        
+        IScriptSource scriptSource = newMock(IScriptSource.class);
+        IRequestCycle cycle = newCycle(false);
+        
+        DirectLinkWorker w = new DirectLinkWorker();
+        w.setScript("/org/apache/tapestry/link/DirectLinkWorker.script");
+        w.setScriptSource(scriptSource);
+        w.setClassResolver(new DefaultClassResolver());
+        w.initialize();
+        
+        replay();
+        
+        w.renderComponent(cycle, link);
+        
+        verify();
+    }
+}