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    }