001    package org.apache.tapestry.dojo.form;
002    
003    import org.apache.tapestry.*;
004    import org.apache.tapestry.form.BaseFormComponentTestCase;
005    import org.apache.tapestry.form.MockDelegate;
006    import org.apache.tapestry.form.TranslatedFieldSupport;
007    import org.apache.tapestry.form.ValidatableFieldSupport;
008    import org.apache.tapestry.form.translator.DateTranslator;
009    import org.apache.tapestry.services.ResponseBuilder;
010    import static org.easymock.EasyMock.*;
011    import org.testng.annotations.Test;
012    
013    import java.util.Date;
014    import java.util.Locale;
015    import java.util.Map;
016    
017    /**
018     * Tests functionality of {@link GTimePicker} component.
019     */
020    @Test
021    public class TestGTimePicker extends BaseFormComponentTestCase
022    {
023    
024        public void test_Render()
025        {
026            ValidatableFieldSupport vfs = newMock(ValidatableFieldSupport.class);
027            TranslatedFieldSupport tfs = newMock(TranslatedFieldSupport.class);
028    
029            DateTranslator translator = new DateTranslator();
030            translator.setPattern("hh:mm a");
031            ResponseBuilder resp = newMock(ResponseBuilder.class);
032    
033            IRequestCycle cycle = newMock(IRequestCycle.class);
034            IForm form = newMock(IForm.class);
035            checkOrder(form, false);
036            IPage page = newPage();
037            Locale locale = Locale.getDefault();
038    
039            MockDelegate delegate = new MockDelegate();
040    
041            IScript script = newMock(IScript.class);
042    
043            Date dtValue = new Date();
044    
045            GTimePicker component = newInstance(GTimePicker.class,
046                                                "name", "fred",
047                                                "script", script,
048                                                "validatableFieldSupport", vfs,
049                                                "translatedFieldSupport", tfs,
050                                                "translator", translator,
051                                                "value", dtValue,
052                                                "page", page);
053    
054            expect(cycle.renderStackPush(component)).andReturn(component);
055            expect(form.getName()).andReturn("testform").anyTimes();
056    
057            form.setFormFieldUpdating(true);
058    
059            IMarkupWriter writer = newBufferWriter();
060    
061            trainGetForm(cycle, form);
062            trainWasPrerendered(form, writer, component, false);
063    
064            trainGetDelegate(form, delegate);
065    
066            delegate.setFormComponent(component);
067    
068            trainGetElementId(form, component, "fred");
069            trainIsRewinding(form, false);
070            expect(cycle.isRewinding()).andReturn(false).anyTimes();
071    
072            delegate.setFormComponent(component);
073    
074            expect(cycle.getResponseBuilder()).andReturn(resp).anyTimes();
075            expect(resp.isDynamic()).andReturn(false).anyTimes();
076    
077            expect(tfs.format(component, dtValue)).andReturn(dtValue.toString());
078    
079            tfs.renderContributions(component, writer, cycle);
080            vfs.renderContributions(component, writer, cycle);
081    
082            expect(page.getLocale()).andReturn(locale).anyTimes();
083    
084            PageRenderSupport prs = newPageRenderSupport();
085            trainGetPageRenderSupport(cycle, prs);
086    
087            script.execute(eq(component), eq(cycle), eq(prs), isA(Map.class));
088    
089            expect(cycle.renderStackPop()).andReturn(component);
090    
091            replay();
092    
093            component.render(writer, cycle);
094    
095            verify();
096    
097            assertBuffer("<span class=\"prefix\"><input type=\"text\" autocomplete=\"off\" name=\"fred\" "
098                         + "value=\"" + dtValue.toString() + "\" id=\"fred\" class=\"validation-delegate\" /></span>");
099        }
100    }