001 package org.apache.tapestry.services.impl; 002 003 import org.apache.tapestry.*; 004 import org.apache.tapestry.engine.NullWriter; 005 import org.apache.tapestry.services.ResponseBuilder; 006 import static org.easymock.EasyMock.expect; 007 import org.testng.annotations.Test; 008 009 import java.util.ArrayList; 010 import java.util.List; 011 012 /** 013 * Tests functionality of {@link PrototypeResponseBuilder}. 014 */ 015 @Test 016 public class PrototypeResponseBuilderTest extends BaseComponentTestCase { 017 018 public void test_Null_Writer_Render() 019 { 020 IRender render = newMock(IRender.class); 021 IRequestCycle cycle = newMock(IRequestCycle.class); 022 IMarkupWriter writer = newBufferWriter(); 023 024 ResponseBuilder builder = new PrototypeResponseBuilder(cycle, writer, null); 025 026 render.render(NullWriter.getSharedInstance(), cycle); 027 028 replay(); 029 030 builder.render(writer, render, cycle); 031 032 verify(); 033 034 assertSame(builder.getWriter(), writer); 035 assertBuffer(""); 036 } 037 038 public void test_Partial_Render() 039 { 040 IRender render = newMock(IRender.class); 041 IComponent comp1 = newMock(IComponent.class); 042 IRequestCycle cycle = newMock(IRequestCycle.class); 043 IMarkupWriter writer = newMock(IMarkupWriter.class); 044 NestedMarkupWriter nested = newMock(NestedMarkupWriter.class); 045 046 List parts = new ArrayList(); 047 parts.add("id1"); 048 049 PrototypeResponseBuilder builder = new PrototypeResponseBuilder(cycle, writer, parts); 050 051 render.render(NullWriter.getSharedInstance(), cycle); 052 053 expect(comp1.getClientId()).andReturn("id1").anyTimes(); 054 expect(comp1.peekClientId()).andReturn("id1").anyTimes(); 055 056 expect(writer.getNestedWriter()).andReturn(nested); 057 058 comp1.render(nested, cycle); 059 060 replay(); 061 062 builder.render(null, render, cycle); 063 064 assertTrue(builder.contains(comp1)); 065 assertTrue(IComponent.class.isInstance(comp1)); 066 067 builder.render(null, comp1, cycle); 068 069 verify(); 070 071 assertSame(builder.getWriter(), writer); 072 } 073 }